88from cppython_core .exceptions import ConfigError , PluginError
99from cppython_core .resolution import resolve_name
1010from cppython_core .schema import CoreData , Interface , ProjectConfiguration , PyProject
11+ from pydantic import ValidationError
1112
1213from cppython .builder import Builder
1314from cppython .schema import API
@@ -32,39 +33,49 @@ def __init__(
3233
3334 self .logger .info ("Initializing project" )
3435
35- if (pyproject := PyProject (** pyproject_data )) is None :
36- raise ConfigError ("PyProject data is not defined" )
36+ try :
37+ if (pyproject := PyProject (** pyproject_data )) is None :
38+ raise ConfigError ("Table [project] is not defined" )
39+
40+ if pyproject .tool is None :
41+ raise ConfigError ("Table [tool] is not defined" )
3742
38- if pyproject .tool is None :
39- raise ConfigError ("Table [tool] is not defined" )
43+ if pyproject .tool . cppython is None :
44+ raise ConfigError ("Table [tool.cppython ] is not defined" )
4045
41- if pyproject .tool .cppython is None :
42- raise ConfigError ("Table [tool.cppython] is not defined" )
46+ builder = Builder (self .logger )
4347
44- builder = Builder ( self . logger )
48+ self . _core_data = builder . generate_core_data ( configuration , pyproject . project , pyproject . tool . cppython )
4549
46- self ._core_data = builder .generate_core_data (configuration , pyproject .project , pyproject .tool .cppython )
50+ raw_generator_plugins = builder .find_generators ()
51+ generator_plugins = builder .filter_plugins (
52+ raw_generator_plugins ,
53+ self .core_data .project_data .pyproject_file .parent ,
54+ self .core_data .cppython_data .generator_name ,
55+ "Generator" ,
56+ )
4757
48- raw_generator_plugins = builder .find_generators ()
49- generator_plugins = builder .filter_plugins (
50- raw_generator_plugins ,
51- self .core_data .project_data .pyproject_file .parent ,
52- self .core_data .cppython_data .generator_name ,
53- "Generator " ,
54- )
58+ raw_provider_plugins = builder .find_providers ()
59+ provider_plugins = builder .filter_plugins (
60+ raw_provider_plugins ,
61+ self .core_data .project_data .pyproject_file .parent ,
62+ self .core_data .cppython_data .provider_name ,
63+ "Provider " ,
64+ )
5565
56- raw_provider_plugins = builder .find_providers ()
57- provider_plugins = builder .filter_plugins (
58- raw_provider_plugins ,
59- self .core_data .project_data .pyproject_file .parent ,
60- self .core_data .cppython_data .provider_name ,
61- "Provider" ,
62- )
66+ generator_type , provider_type = builder .solve (generator_plugins , provider_plugins )
6367
64- generator_type , provider_type = builder .solve (generator_plugins , provider_plugins )
68+ self ._generator = builder .create_generator (
69+ self .core_data , pyproject .tool .cppython .generator , generator_type
70+ )
71+ self ._provider = builder .create_provider (self .core_data , pyproject .tool .cppython .provider , provider_type )
6572
66- self ._generator = builder .create_generator (self .core_data , pyproject .tool .cppython .generator , generator_type )
67- self ._provider = builder .create_provider (self .core_data , pyproject .tool .cppython .provider , provider_type )
73+ except ConfigError :
74+ logging .exception ("Unhandled configuration. CPPython will process no further" )
75+ return
76+ except ValidationError as error :
77+ logging .error (error )
78+ return
6879
6980 self ._enabled = True
7081
0 commit comments