def solids_in_topological_order(container): check.inst_param(container, 'container', IContainSolids) _forward_edges, backward_edges = _create_adjacency_lists( container.solids, container.dependency_structure) order = toposort_flatten(backward_edges) return [container.solid_named(solid_name) for solid_name in order]
def solids_in_topological_order(pipeline): check.inst_param(pipeline, 'pipeline', PipelineDefinition) _forward_edges, backward_edges = _create_adjacency_lists( pipeline.solids, pipeline.dependency_structure ) order = toposort_flatten(backward_edges) return [pipeline.solid_named(solid_name) for solid_name in order]
def solid_names_in_topological_order(self) -> List[str]: upstream_outputs = {} for solid_invocation_snap in self.dep_structure_snapshot.solid_invocation_snaps: solid_name = solid_invocation_snap.solid_name upstream_outputs[solid_name] = { upstream_output_snap.solid_name for input_dep_snap in solid_invocation_snap.input_dep_snaps for upstream_output_snap in input_dep_snap.upstream_output_snaps } return toposort_flatten(upstream_outputs)
def _solids_in_topological_order(self): _forward_edges, backward_edges = _create_adjacency_lists( self.solids, self.dependency_structure) try: order = toposort_flatten(backward_edges) except CircularDependencyError as err: six.raise_from( DagsterInvalidDefinitionError(str(err)), err, ) return [self.solid_named(solid_name) for solid_name in order]