in uberpoet/dotreader.py [0:0]
def mod_graph_from_dep_map(dep_map, root_node_name):
# type: (Dict[str, List[str]],str) -> (ModuleNode, List[ModuleNode])
"""
Converts an outgoing edge map (`dep_map`) into a ModuleNode graph
that you can generate a mock app from. You have to provide the
root node / application node name (`root_node_name`) for the graph.
"""
def make_mod(name):
return ModuleNode(name, ModuleNode.LIBRARY)
mod_map = {name: make_mod(name) for name in dep_map.keys()}
# TODO Fix mod_map[self.biggest_root(dep_map)]. If this works you don't
# have to pass the app node name any more.
# app_node = mod_map[self.biggest_root_name(dep_map)]
app_node = mod_map[root_node_name]
app_node.node_type = ModuleNode.APP
for name, deps in dep_map.iteritems():
new_deps = []
for dep_name in deps:
mod = mod_map.get(dep_name, None)
if not mod:
mod = make_mod(dep_name)
mod_map[dep_name] = mod
new_deps.append(mod)
mod_map[name].deps = new_deps
return app_node, mod_map.values()