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