raise "Self-referential dependency detected " + repr(t)
childnode = nodes[t[1]]
parentnode = nodes[t[0]]
- edges[parentnode][childnode] = True
- parentnode.dependencies[childnode] = True
- childnode.edges[parentnode] = True
+ self._add_edge(edges, (parentnode, childnode))
queue = []
for n in nodes.values():
cycles = {}
output = []
while len(edges) > 0:
- print self._dump_edges(edges)
+ #print self._dump_edges(edges)
if len(queue) == 0:
# edges remain but no edgeless nodes to remove; this indicates
# a cycle
node.children.append(o)
return head
+ def _add_edge(self, edges, edge):
+ (parentnode, childnode) = edge
+ edges[parentnode][childnode] = True
+ parentnode.dependencies[childnode] = True
+ childnode.edges[parentnode] = True
+
def _remove_edge(self, edges, edge):
(parentnode, childnode) = edge
del edges[parentnode][childnode]