|
5 | 5 | import networkx as nx |
6 | 6 |
|
7 | 7 |
|
| 8 | +def process_module_in_graph(module: Dict[str, list], module_links: list, G: nx.DiGraph): |
| 9 | + _module = os.path.basename(module) |
| 10 | + |
| 11 | + module_edges = [] |
| 12 | + |
| 13 | + sub_edges = [] |
| 14 | + for entity in module_links: |
| 15 | + module_edges.append((_module, entity)) |
| 16 | + for dep in module_links[entity]: |
| 17 | + if "." in dep: |
| 18 | + dep = dep.split(".")[1].replace(".", ".py") |
| 19 | + sub_edges.append((entity, dep)) |
| 20 | + G.add_edges_from(sub_edges) |
| 21 | + if not module_links: |
| 22 | + G.add_node(_module) |
| 23 | + G.add_edges_from(module_edges) |
| 24 | + return module_edges, sub_edges |
| 25 | + |
| 26 | + |
8 | 27 | def draw_graph(modules_entities: Dict) -> None: |
| 28 | + |
9 | 29 | G = nx.DiGraph() |
| 30 | + |
10 | 31 | module_edges_all = [] |
| 32 | + |
11 | 33 | sub_edges_all = [] |
| 34 | + |
12 | 35 | for module in modules_entities: |
13 | | - _module = os.path.basename(module) |
14 | | - module_edges = [] |
15 | | - for entity in modules_entities[module]: |
16 | | - sub_edges = [] |
17 | | - module_edges.append((_module, entity)) |
18 | | - for dep in modules_entities[module][entity]: |
19 | | - if "." in dep: |
20 | | - dep = dep.split(".")[1].replace(".", ".py") |
21 | | - sub_edges.append((entity, dep)) |
22 | | - G.add_edges_from(sub_edges) |
23 | | - sub_edges_all += sub_edges |
24 | | - if not modules_entities[module]: |
25 | | - G.add_node(_module) |
26 | | - G.add_edges_from(module_edges) |
27 | | - module_edges_all += module_edges |
| 36 | + new_module_edges_all, new_edges_all = process_module_in_graph( |
| 37 | + module, modules_entities[module], G |
| 38 | + ) |
| 39 | + |
| 40 | + module_edges_all += new_module_edges_all |
| 41 | + sub_edges_all += new_edges_all |
| 42 | + |
28 | 43 | pos = nx.spring_layout(G) |
29 | 44 | module_list = [os.path.basename(module) for module in modules_entities] |
30 | 45 | module_list_labels = {module_name: module_name for module_name in module_list} |
|
0 commit comments