@@ -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