def mod_graph_from_dep_map()

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()