def topological_order(self):
        count = {}
        children = {}
        for node in self.nodes():
            count[node] = 0

        for node in self.nodes():
            _children = sorted(node.children(),
                               key=lambda j: j._node_index, reverse=True)
            children[node] = _children
            for successor in _children:
                count[successor] += 1

        ready = [node for node in self.nodes() if count[node] == 0]
        ready = sorted(ready, key=lambda j: j._node_index, reverse=True)
        while ready:
            node = ready.pop(-1)
            yield node
            for successor in children[node]:
                count[successor] -= 1
                if count[successor] == 0:
                    ready.append(successor)
Parse institution names
dataset/ETHPy150Open thasso/pyjip/jip/pipelines.py/Pipeline.topological_order--crossover with--dataset/ETHPy150Open CenterForOpenScience/scrapi/scrapi/harvesters/bhl.py/institution_name_parser