def topological_sort()

in src/sagemaker_core/tools/shapes_codegen.py [0:0]


    def topological_sort(self):
        """
        Performs a topological sort on the DAG to determine the order in which shapes should be generated.

        :return: A list of shape names in the order of topological sort.
        """
        graph = self.build_graph()
        visited = set()
        stack = []

        def dfs(node):
            visited.add(node)
            # unless leaf node is reached do dfs
            if graph.get(node) is not None:
                for neighbor in graph.get(node, []):
                    if neighbor not in visited:
                        dfs(neighbor)
            stack.append(node)

        for node in graph:
            if node not in visited:
                dfs(node)

        return stack