3535
3636
3737@dataclass
38- class _ModifierConfig ( ABC ) :
38+ class _ModifierConfig :
3939 """
4040 Abstract base class for all modifier configuration dataclasses.
4141
@@ -44,7 +44,7 @@ class _ModifierConfig(ABC):
4444 be instantiated directly.
4545 """
4646
47- def _filter_out_default_fields (self ):
47+ def _filter_out_default_fields (self ) -> dict [ str , Any ] :
4848 """
4949 Partition the instance's fields into non-default and default groups.
5050
@@ -64,7 +64,7 @@ def _filter_out_default_fields(self):
6464 for defined_field in fields (self ):
6565 val = getattr (self , defined_field .name )
6666 default = defined_field .default
67- if defined_field . default_factory is not field (). default_factory :
67+ if default is MISSING :
6868 default = defined_field .default_factory ()
6969
7070 if val != default :
@@ -76,7 +76,7 @@ def _filter_out_default_fields(self):
7676 non_defaults .pop ("haz_type" )
7777 return non_defaults , defaults
7878
79- def to_dict (self ) :
79+ def to_dict (self , omit_default : bool = True ) -> dict [ str , Any ] :
8080 """
8181 Serialize the config to a flat dictionary, omitting default values.
8282
@@ -129,10 +129,8 @@ def _filter_dict_to_fields(cls, to_filter: dict):
129129 dataclass fields on this class.
130130 """
131131
132- filtered = dict (
133- filter (lambda k : k [0 ] in [f .name for f in fields (cls )], to_filter .items ())
134- )
135- return filtered
132+ fields = [f .name for f in fields (cls )]
133+ return {key : val for key , val in to_filter .items () if key in fields }
136134
137135 def __repr__ (self ) -> str :
138136 """
@@ -215,14 +213,14 @@ class ImpfsetModifierConfig(_ModifierConfig):
215213 """
216214
217215 haz_type : str
218- impf_ids : Optional [ Union [ int , str , list [Union [ int , str ]]]] = None
216+ impf_ids : int | str | list [int | str ] | None = None
219217 impf_mdd_mult : float = 1.0
220218 impf_mdd_add : float = 0.0
221219 impf_paa_mult : float = 1.0
222220 impf_paa_add : float = 0.0
223221 impf_int_mult : float = 1.0
224222 impf_int_add : float = 0.0
225- new_impfset_path : Optional [ str ] = None
223+ new_impfset_path : str | None = None
226224
227225 def __post_init__ (self ):
228226 config = self .to_dict ()
0 commit comments