Fix graph command with ASCII output.
This commit is contained in:
parent
b7fa2c4e21
commit
7affaca321
@ -94,6 +94,7 @@ def topological_sort(spec, **kwargs):
|
|||||||
nodes = spec.index()
|
nodes = spec.index()
|
||||||
|
|
||||||
topo_order = []
|
topo_order = []
|
||||||
|
par = {name: parents(nodes[name]) for name in nodes.keys()}
|
||||||
remaining = [name for name in nodes.keys() if not parents(nodes[name])]
|
remaining = [name for name in nodes.keys() if not parents(nodes[name])]
|
||||||
heapify(remaining)
|
heapify(remaining)
|
||||||
|
|
||||||
@ -102,12 +103,12 @@ def topological_sort(spec, **kwargs):
|
|||||||
topo_order.append(name)
|
topo_order.append(name)
|
||||||
|
|
||||||
node = nodes[name]
|
node = nodes[name]
|
||||||
for dep in children(node).values():
|
for dep in children(node):
|
||||||
del parents(dep)[node.name]
|
par[dep.name].remove(node)
|
||||||
if not parents(dep):
|
if not par[dep.name]:
|
||||||
heappush(remaining, dep.name)
|
heappush(remaining, dep.name)
|
||||||
|
|
||||||
if any(parents(s) for s in spec.traverse()):
|
if any(par.get(s.name, []) for s in spec.traverse()):
|
||||||
raise ValueError("Spec has cycles!")
|
raise ValueError("Spec has cycles!")
|
||||||
else:
|
else:
|
||||||
return topo_order
|
return topo_order
|
||||||
@ -477,8 +478,8 @@ def write(self, spec, **kwargs):
|
|||||||
|
|
||||||
# Replace node with its dependencies
|
# Replace node with its dependencies
|
||||||
self._frontier.pop(i)
|
self._frontier.pop(i)
|
||||||
if node.dependencies:
|
if node.dependencies():
|
||||||
deps = sorted((d for d in node.dependencies), reverse=True)
|
deps = sorted((d.name for d in node.dependencies()), reverse=True)
|
||||||
self._connect_deps(i, deps, "new-deps") # anywhere.
|
self._connect_deps(i, deps, "new-deps") # anywhere.
|
||||||
|
|
||||||
elif self._frontier:
|
elif self._frontier:
|
||||||
|
@ -460,7 +460,7 @@ def concrete(self):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return ''.join(
|
return ''.join(
|
||||||
["^" + str(self[name].spec) for name in sorted(self.keys())])
|
["^" + self[name].format() for name in sorted(self.keys())])
|
||||||
|
|
||||||
|
|
||||||
@key_ordering
|
@key_ordering
|
||||||
@ -861,7 +861,7 @@ def return_val(res):
|
|||||||
for name in sorted(successors):
|
for name in sorted(successors):
|
||||||
child = successors[name]
|
child = successors[name]
|
||||||
children = child.spec.traverse_with_deptype(
|
children = child.spec.traverse_with_deptype(
|
||||||
visited, d=d + 1, deptype=deptype_query,
|
visited, d=d + 1, deptype=deptype,
|
||||||
deptype_query=deptype_query,
|
deptype_query=deptype_query,
|
||||||
_self_deptype=child.deptypes, **kwargs)
|
_self_deptype=child.deptypes, **kwargs)
|
||||||
for elt in children:
|
for elt in children:
|
||||||
|
Loading…
Reference in New Issue
Block a user