in uberpoet/moduletree.py [0:0]
def gen_layered_graph(layer_count, nodes_per_layer, deps_per_node=5):
"""Generates a module dependency graph that has `layer_count` layers,
with each module only depending on a random selection of the modules
below it"""
def node(f_layer, f_node):
return ModuleNode('MockLib{}_{}'.format(f_layer, f_node), ModuleNode.LIBRARY)
layers = [[node(l, n) for n in xrange(nodes_per_layer)] for l in xrange(layer_count)]
all_nodes = merge_lists(layers)
app_node = ModuleNode('App', ModuleNode.APP, layers[0])
for i, layer in enumerate(layers):
lower_layers = layers[(i + 1):] if i != len(layers) - 1 else []
lower_merged = merge_lists(lower_layers)
for node in layer:
if deps_per_node < len(lower_merged):
node.deps = random.sample(lower_merged, deps_per_node)
else:
node.deps = lower_merged
return app_node, (all_nodes + [app_node])