# Whether to draw the transitive dependencies
transitive = True
-parser = argparse.ArgumentParser(description="Graph pacakges dependencies")
+parser = argparse.ArgumentParser(description="Graph packages dependencies")
parser.add_argument("--package", '-p', metavar="PACKAGE",
help="Graph the dependencies of PACKAGE")
parser.add_argument("--depth", '-d', metavar="DEPTH", dest="depth", type=int, default=0,
help="Limit the dependency graph to DEPTH levels; 0 means no limit.")
+parser.add_argument("--stop-on", "-s", metavar="PACKAGE", dest="stop_list", action="append",
+ help="Do not graph past this package (can be given multiple times)." \
+ + " 'virtual' to stop on virtual packages.")
parser.add_argument("--colours", "-c", metavar="COLOR_LIST", dest="colours",
default="lightblue,grey,gainsboro",
help="Comma-separated list of the three colours to use" \
max_depth = args.depth
+if args.stop_list is None:
+ stop_list = []
+else:
+ stop_list = args.stop_list
+
transitive = args.transitive
# Get the colours: we need exactly three colours,
print_attrs(pkg)
if pkg not in dict_deps:
return
+ if pkg in stop_list:
+ return
+ if dict_version.get(pkg) == "virtual" and "virtual" in stop_list:
+ return
if max_depth == 0 or depth < max_depth:
for d in dict_deps[pkg]:
print("%s -> %s" % (pkg_node_name(pkg), pkg_node_name(d)))