11
22__author__ = "desultory"
3- __version__ = "1.4.0 "
3+ __version__ = "1.4.1 "
44
55from tomllib import load , TOMLDecodeError
66from pathlib import Path
@@ -46,9 +46,7 @@ def import_args(self, args: dict) -> None:
4646
4747 def __setitem__ (self , key : str , value ) -> None :
4848 # If the type is registered, use the appropriate update function
49- if key in self .builtin_parameters :
50- return self .handle_parameter (key , value )
51- elif key in self ['custom_parameters' ]:
49+ if any (key in d for d in (self .builtin_parameters , self ['custom_parameters' ])):
5250 return self .handle_parameter (key , value )
5351 else :
5452 self .logger .debug ("[%s] Unable to determine expected type, valid builtin types: %s" % (key , self .builtin_parameters .keys ()))
@@ -73,10 +71,11 @@ def handle_parameter(self, key: str, value) -> None:
7371 else :
7472 raise KeyError ("Parameter not registered: %s" % key )
7573
76- if hasattr (self , f"_process_{ key } " ):
74+ if hasattr (self , f"_process_{ key } " ): # The builtin function is decorated and can handle plural
7775 self .logger .log (5 , "[%s] Using builtin setitem: %s" % (key , f"_process_{ key } " ))
7876 return getattr (self , f"_process_{ key } " )(value )
7977
78+ # Don't use masked processing functions for custom values, fall back to standard setters
8079 def check_mask (import_name : str ) -> bool :
8180 """ Checks if the funnction is masked. """
8281 return import_name in self .get ('masks' , [])
@@ -95,11 +94,11 @@ def check_mask(import_name: str) -> bool:
9594 self .logger .log (5 , "[%s] Using custom plural setitem: %s" % (key , func .__name__ ))
9695 return handle_plural (func )(self , value )
9796
98- if expected_type in (list , NoDupFlatList ):
97+ if expected_type in (list , NoDupFlatList ): # Adppend to lists, don't replace
9998 self .logger .log (5 , "Using list setitem for: %s" % key )
10099 return self [key ].append (value )
101100
102- if expected_type == dict :
101+ if expected_type == dict : # Create new keys, update existing
103102 if key not in self :
104103 self .logger .log (5 , "Setting dict '%s' to: %s" % (key , value ))
105104 return super ().__setitem__ (key , value )
@@ -108,7 +107,7 @@ def check_mask(import_name: str) -> bool:
108107 return self [key ].update (value )
109108
110109 self .logger .debug ("Setting custom parameter: %s" % key )
111- super ().__setitem__ (key , expected_type (value ))
110+ super ().__setitem__ (key , expected_type (value )) # For everything else, simply set it
112111
113112 @handle_plural
114113 def _process_custom_parameters (self , parameter_name : str , parameter_type : type ) -> None :
0 commit comments