in pcicrawler/cli.py [0:0]
def print_tree(devs):
roots = []
devgroups = {}
for dev in devs:
parent = dev.parent
if parent:
parentid = parent.device_name
if parentid in devgroups:
devgroups[parentid].append(dev)
else:
devgroups[parentid] = [dev]
# Only find devices under a root port (don't display built-in "devices"
# in the tree view)
elif dev.express_type == 'root_port':
roots.append(dev)
print_tree_level(devgroups, '', roots)