make vardata merge not use classmethod
This commit is contained in:
parent
6341846cea
commit
11bb40f788
@ -151,8 +151,7 @@ class VarData:
|
|||||||
"""
|
"""
|
||||||
return dict((k, list(v)) for k, v in self.imports)
|
return dict((k, list(v)) for k, v in self.imports)
|
||||||
|
|
||||||
@classmethod
|
def merge(self, *others: VarData | None) -> VarData | None:
|
||||||
def merge(cls, *others: VarData | None) -> VarData | None:
|
|
||||||
"""Merge multiple var data objects.
|
"""Merge multiple var data objects.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -161,20 +160,23 @@ class VarData:
|
|||||||
Returns:
|
Returns:
|
||||||
The merged var data object.
|
The merged var data object.
|
||||||
"""
|
"""
|
||||||
state = ""
|
all_var_datas = [self] + [
|
||||||
field_name = ""
|
var_data for var_data in others if var_data is not None
|
||||||
_imports = {}
|
]
|
||||||
hooks = {}
|
|
||||||
for var_data in others:
|
field_name = next(
|
||||||
if var_data is None:
|
(var_data.field_name for var_data in all_var_datas if var_data.field_name),
|
||||||
continue
|
"",
|
||||||
state = state or var_data.state
|
)
|
||||||
field_name = field_name or var_data.field_name
|
|
||||||
_imports = imports.merge_imports(_imports, var_data.imports)
|
state = next(
|
||||||
hooks.update(
|
(var_data.state for var_data in all_var_datas if var_data.state), ""
|
||||||
var_data.hooks
|
)
|
||||||
if isinstance(var_data.hooks, dict)
|
|
||||||
else {k: None for k in var_data.hooks}
|
hooks = {hook: None for var_data in all_var_datas for hook in var_data.hooks}
|
||||||
|
|
||||||
|
_imports = imports.merge_imports(
|
||||||
|
*(var_data.imports for var_data in all_var_datas)
|
||||||
)
|
)
|
||||||
|
|
||||||
if state or _imports or hooks or field_name:
|
if state or _imports or hooks or field_name:
|
||||||
@ -184,6 +186,7 @@ class VarData:
|
|||||||
imports=_imports,
|
imports=_imports,
|
||||||
hooks=hooks,
|
hooks=hooks,
|
||||||
)
|
)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def __bool__(self) -> bool:
|
def __bool__(self) -> bool:
|
||||||
|
Loading…
Reference in New Issue
Block a user