def _topological_sort(data, head, top_node, raise_exception = False, result = None, visited = None):
    """ Internal function
    """
    if not result:
        result = []
    if not visited:
        visited = []
    deps = data.get(head, list())
    if head in visited:
        if head == top_node and raise_exception:
            raise DagError(head, head, result)
        return result
    visited.append(head)
    for i in deps:
        try:
            result.index(i)
        except __HOLE__:
            #the item does not exist
            result = _topological_sort(data, i, top_node, raise_exception, result, visited)
    result.append(head)
    return result
dataset/ETHPy150Open aldebaran/qibuild/python/qisys/sort.py/_topological_sort