(
        graph: nx.DiGraph,
    )
Topological sort of given graph that groups ties.

        Adapted from `nx.topological_sort`, this function returns a topo sort of a graph however
        instead of arbitrarily ordering ties in the sort order, ties are grouped together in
        lists.

        Args:
            graph: The graph to be sorted.

        Returns:
            A generator that yields lists of nodes, one list per graph depth level.
Topological sort of given graph that groups ties.
Topological sort of given graph that groups ties .
def _grouped_topological_sort(
        graph: nx.DiGraph,
    ) -> Generator[List[str], None, None]:
        """Topological sort of given graph that groups ties.

        Adapted from `nx.topological_sort`, this function returns a topo sort of a graph however
        instead of arbitrarily ordering ties in the sort order, ties are grouped together in
        lists.

        Args:
            graph: The graph to be sorted.

        Returns:
            A generator that yields lists of nodes, one list per graph depth level.
        """
        indegree_map = {v: d for v, d in graph.in_degree() if d > 0}
        zero_indegree = [v for v, d in graph.in_degree() if d == 0]

        while zero_indegree:
            yield zero_indegree
            new_zero_indegree = []
            for v in zero_indegree:
                for _, child in graph.edges(v):
                    indegree_map[child] -= 1
                    if not indegree_map[child]:
                        new_zero_indegree.append(child)
            zero_indegree = new_zero_indegree
def _grouped_topological_sort ( graph : nx . DiGraph , ) -> Generator [ List [ str ] , None , None ] : indegree_map = { v : d for v , d in graph . in_degree ( ) if d > 0 } zero_indegree = [ v for v , d in graph . in_degree ( ) if d == 0 ] while zero_indegree : yield zero_indegree new_zero_indegree = [ ] for v in zero_indegree : for _ , child in graph . edges ( v ) : indegree_map [ child ] -= 1 if not indegree_map [ child ] : new_zero_indegree . append ( child ) zero_indegree = new_zero_indegree