Skip to content
This repository was archived by the owner on Aug 25, 2024. It is now read-only.

Commit 9e58307

Browse files
committed
df: types: Operation maintain definition when exporting conditions
Signed-off-by: John Andersen <[email protected]>
1 parent b0b3685 commit 9e58307

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

dffml/df/types.py

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ def export(self):
139139
"stage": self.stage.value,
140140
"expand": self.expand.copy(),
141141
}
142-
for to_string in ["conditions"]:
143-
exported[to_string] = list(
144-
map(lambda definition: definition.name, exported[to_string])
145-
)
146142
for to_string in ["inputs", "outputs"]:
147143
exported[to_string] = dict(
148144
map(
@@ -562,11 +558,10 @@ def export(self, *, linked: bool = False):
562558
exported["configs"] = self.configs.copy()
563559
if self.forward.book:
564560
exported["forward"] = self.forward.export()
561+
exported = export_dict(**exported)
565562
if linked:
566-
exported["linked"] = True
567-
exported["definitions"] = self.definitions.copy()
568-
exported.update(self._linked()),
569-
return export_dict(**exported)
563+
self._linked(exported)
564+
return exported
570565

571566
@classmethod
572567
def _fromdict(cls, *, linked: bool = False, **kwargs):
@@ -728,24 +723,25 @@ def _resolve(cls, source: Dict):
728723
item["definition"] = definitions[item["definition"]]
729724
return source
730725

731-
def _linked(self):
732-
exported = {}
726+
def _linked(self, exported):
727+
# Set linked
728+
exported["linked"] = True
729+
# Include definitions
730+
exported["definitions"] = export_dict(**self.definitions.copy())
733731
# Remove definitions from operations, just use definition name
734-
operations = {}
735-
for operation in self.operations.values():
736-
exported_operation = operation.export()
737-
for name, definition in operation.inputs.items():
738-
exported_operation["inputs"][name] = definition.name
739-
for name, definition in operation.outputs.items():
740-
exported_operation["outputs"][name] = definition.name
741-
operations[operation.instance_name] = exported_operation
732+
for operation in exported["operations"].values():
733+
for arg in ["conditions"]:
734+
if not arg in operation:
735+
continue
736+
for i, definition in enumerate(operation[arg]):
737+
operation[arg][i] = definition["name"]
738+
for arg in ["inputs", "outputs"]:
739+
if not arg in operation:
740+
continue
741+
for io_name, definition in operation[arg].items():
742+
operation[arg][io_name] = definition["name"]
742743
# Remove definitions from seed inputs, just use definition name
743-
seed = []
744-
for item in self.seed:
745-
exported_item = item.export()
746-
exported_item["definition"] = exported_item["definition"]["name"]
747-
seed.append(exported_item)
748-
# Set linked exported
749-
exported["seed"] = seed
750-
exported["operations"] = operations
744+
if "seed" in exported:
745+
for item in exported["seed"]:
746+
item["definition"] = item["definition"]["name"]
751747
return exported

0 commit comments

Comments
 (0)