summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/_emerge/__init__.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index e2c657aa3..8df77b558 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1275,6 +1275,8 @@ class depgraph(object):
"package slot have been \n")
msg.append("!!! pulled into the dependency graph:\n\n")
indent = " "
+ # Max number of parents shown, to avoid flooding the display.
+ max_parents = 3
for slot_atom, root in self._slot_collision_info:
msg.append(slot_atom)
msg.append("\n\n")
@@ -1288,11 +1290,31 @@ class depgraph(object):
msg.append(str(node))
parents = self._parent_child_digraph.parent_nodes(node)
if parents:
+ omitted_parents = 0
+ if len(parents) > max_parents:
+ omitted_parents = len(parents) - max_parents
+ pruned_list = []
+ # When generating the pruned list, prefer instances
+ # of DependencyArg over instances of Package.
+ for parent in parents:
+ if isinstance(parent, DependencyArg):
+ pruned_list.append(parent)
+ if len(pruned_list) == max_parents:
+ break
+ for parent in parents:
+ if not isinstance(parent, DependencyArg):
+ pruned_list.append(parent)
+ if len(pruned_list) == max_parents:
+ break
+ parents = pruned_list
msg.append(" pulled in by\n")
for parent in parents:
msg.append(2*indent)
msg.append(str(parent))
msg.append("\n")
+ if omitted_parents:
+ msg.append(2*indent)
+ msg.append("(and %d more)\n" % omitted_parents)
else:
msg.append(" (no parents)\n")
msg.append("\n")