11
22__author__ = "desultory"
3- __version__ = "0.8.3 "
3+ __version__ = "0.8.5 "
44
55from tomllib import load
66from pathlib import Path
@@ -45,19 +45,18 @@ def __setitem__(self, key, value):
4545 if expected_type := self .builtin_parameters .get (key , self ['custom_parameters' ].get (key )):
4646 self .logger .log (5 , "[%s] Expected type: %s" % (key , expected_type ))
4747 if hasattr (self , f"_process_{ key } " ):
48- self .logger .debug ("Using builtin setitem for : %s" % key )
48+ self .logger .debug ("[%s] Using builtin setitem: %s" % ( key , f"_process_ { key } " ) )
4949 getattr (self , f"_process_{ key } " )(value )
5050 elif func := self ['custom_processing' ].get (f"_process_{ key } " ):
51- self .logger .debug ("Using custom setitem for : %s" % key )
51+ self .logger .debug ("[%s] Using custom setitem: %s" % ( key , func . __name__ ) )
5252 func (self , value )
5353 elif func := self ['custom_processing' ].get (f"_process_{ key } _multi" ):
54- self .logger .debug ("Using custom plural setitem for : %s" % key )
54+ self .logger .debug ("[%s] Using custom plural setitem: %s" % ( key , func . __name__ ) )
5555 handle_plural (func )(self , value )
5656 elif expected_type in (list , NoDupFlatList ):
57- self .logger .debug ( "Using list setitem for: %s" % key )
57+ self .logger .log ( 5 , "Using list setitem for: %s" % key )
5858 self [key ].append (value )
5959 elif expected_type == dict :
60- self .logger .debug ("Using dict setitem for: %s" % key )
6160 if key not in self :
6261 self .logger .debug ("Setting dict '%s' to: %s" % (key , value ))
6362 super ().__setitem__ (key , value )
@@ -74,22 +73,11 @@ def __setitem__(self, key, value):
7473 else :
7574 raise ValueError ("Detected undefined parameter type '%s' with value: %s" % (key , value ))
7675
77- @handle_plural
78- def update_dict (self , name : str , key : str , value : dict ):
79- """
80- Updates a dict in the internal dictionary
81- """
82- if key not in self [name ]:
83- self [name ][key ] = value
84- self .logger .info ("Set %s[%s] to: %s" % (name , key , value ))
85- else :
86- self [name ][key ] = value
87- self .logger .warning ("%s[%s] already set" % (name , key ))
88-
8976 @handle_plural
9077 def _process_custom_parameters (self , parameter_name , parameter_type ):
9178 """
92- Updates the custom_parameters attribute
79+ Updates the custom_parameters attribute.
80+ Sets the initial value of the parameter based on the type.
9381 """
9482 self ['custom_parameters' ][parameter_name ] = eval (parameter_type )
9583 self .logger .debug ("Registered custom parameter '%s' with type: %s" % (parameter_name , parameter_type ))
@@ -108,19 +96,26 @@ def _process_imports(self, import_type: str, import_value: dict):
10896 """
10997 Processes imports in a module, importing the functions and adding them to the appropriate list
11098 """
99+ from importlib import import_module
100+
111101 self .logger .debug ("Processing imports of type: %s" % import_type )
112102
113- from importlib import import_module
114103 for module_name , function_names in import_value .items ():
115104 self .logger .debug ("Importing module: %s" % module_name )
116- function_list = [getattr (import_module (f"{ module_name } " ), function_name ) for function_name in function_names ]
105+
106+ module = import_module (module_name )
107+ self .logger .debug ("[%s] Imported module contents: %s" % (module_name , dir (module )))
108+ if '_module_name' in dir (module ) and module ._module_name != module_name :
109+ self .logger .warning ("Module name mismatch: %s != %s" % (module ._module_name , module_name ))
110+
111+ function_list = [getattr (module , function_name ) for function_name in function_names ]
117112
118113 if import_type not in self ['imports' ]:
119- self .logger .debug ( "Creating import type: %s" % import_type )
114+ self .logger .log ( 5 , "Creating import type: %s" % import_type )
120115 self ['imports' ][import_type ] = NoDupFlatList (log_bump = 10 , logger = self .logger , _log_init = False )
121116
122117 self ['imports' ][import_type ] += function_list
123- self .logger .debug ("Updated import '%s' : %s" % (import_type , function_list ))
118+ self .logger .debug ("[%s] Updated import functions : %s" % (import_type , function_list ))
124119
125120 if import_type == 'config_processing' :
126121 for function in function_list :
@@ -138,25 +133,6 @@ def _process_mod_depends(self, module):
138133
139134 self ['mod_depends' ].append (module )
140135
141- def verify_deps (self ):
142- """ Verifies that all module dependencies are met """
143- for module in self ['mod_depends' ]:
144- if module not in self ['modules' ]:
145- raise KeyError (f"Required module '{ module } ' not found in config" )
146-
147- self .logger .info ("Verified module depndencies: %s" % self ['mod_depends' ])
148-
149- def verify_mask (self ):
150- """
151- Processes masked imports
152- """
153- for mask_hook , mask_items in self ['mask' ].items ():
154- if self ['imports' ].get (mask_hook ):
155- for function in self ['imports' ][mask_hook ]:
156- if function .__name__ in mask_items :
157- self .logger .warning ("Masking import: %s" % function .__name__ )
158- self ['imports' ][mask_hook ].remove (function )
159-
160136 @handle_plural
161137 def _process_modules (self , module ):
162138 """
@@ -196,5 +172,24 @@ def _process_modules(self, module):
196172
197173 self ['modules' ].append (module )
198174
175+ def verify_deps (self ):
176+ """ Verifies that all module dependencies are met """
177+ for module in self ['mod_depends' ]:
178+ if module not in self ['modules' ]:
179+ raise KeyError (f"Required module '{ module } ' not found in config" )
180+
181+ self .logger .info ("Verified module depndencies: %s" % self ['mod_depends' ])
182+
183+ def verify_mask (self ):
184+ """
185+ Processes masked imports
186+ """
187+ for mask_hook , mask_items in self ['mask' ].items ():
188+ if self ['imports' ].get (mask_hook ):
189+ for function in self ['imports' ][mask_hook ]:
190+ if function .__name__ in mask_items :
191+ self .logger .warning ("Masking import: %s" % function .__name__ )
192+ self ['imports' ][mask_hook ].remove (function )
193+
199194 def __str__ (self ):
200195 return pretty_print (self )
0 commit comments