mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-30 17:24:59 +00:00
wip
This commit is contained in:
parent
ce50da1611
commit
959f577aba
1 changed files with 27 additions and 10 deletions
|
@ -207,7 +207,6 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
show_fnames = set()
|
show_fnames = set()
|
||||||
for fname in fnames:
|
for fname in fnames:
|
||||||
dump(fname)
|
|
||||||
show_fname = os.path.relpath(fname, root)
|
show_fname = os.path.relpath(fname, root)
|
||||||
show_fnames.add(show_fname)
|
show_fnames.add(show_fname)
|
||||||
|
|
||||||
|
@ -226,33 +225,51 @@ if __name__ == "__main__":
|
||||||
idents = set(defines.keys()).intersection(set(references.keys()))
|
idents = set(defines.keys()).intersection(set(references.keys()))
|
||||||
|
|
||||||
dot = graphviz.Digraph()
|
dot = graphviz.Digraph()
|
||||||
for fname in show_fnames:
|
|
||||||
dot.node(fname)
|
|
||||||
|
|
||||||
edges = defaultdict(int)
|
edges = defaultdict(float)
|
||||||
for ident in idents:
|
for ident in idents:
|
||||||
defs = defines[ident]
|
defs = defines[ident]
|
||||||
if len(defs) > 1:
|
num_defs = len(defs)
|
||||||
dump(ident, len(defs), defs)
|
|
||||||
continue
|
|
||||||
|
|
||||||
for refs in references[ident]:
|
for refs in references[ident]:
|
||||||
for defs in defines[ident]:
|
for defs in defines[ident]:
|
||||||
if refs == defs:
|
if refs == defs:
|
||||||
continue
|
continue
|
||||||
edges[(refs, defs)] += 1
|
edges[(refs, defs)] += 1 / num_defs
|
||||||
|
|
||||||
max_w = max(edges.values())
|
import networkx as nx
|
||||||
|
|
||||||
|
G = nx.Graph()
|
||||||
|
|
||||||
for edge, weight in edges.items():
|
for edge, weight in edges.items():
|
||||||
refs, defs = edge
|
refs, defs = edge
|
||||||
|
G.add_edge(refs, defs, weight=weight)
|
||||||
|
|
||||||
|
ranked = nx.pagerank(G, weight="weight")
|
||||||
|
|
||||||
|
max_rank = max(ranked.values())
|
||||||
|
min_rank = min(ranked.values())
|
||||||
|
for fname, rank in ranked.items():
|
||||||
|
pen = 10 * (rank - min_rank) / (max_rank - min_rank) + 1
|
||||||
|
dot.node(fname, penwidth=str(pen))
|
||||||
|
|
||||||
|
max_w = max(edges.values())
|
||||||
|
for edge, weight in edges.items():
|
||||||
|
refs, defs = edge
|
||||||
|
|
||||||
r = random.randint(0, 255)
|
r = random.randint(0, 255)
|
||||||
g = random.randint(0, 255)
|
g = random.randint(0, 255)
|
||||||
b = random.randint(0, 255)
|
b = random.randint(0, 255)
|
||||||
color = f"#{r:02x}{g:02x}{b:02x}80"
|
color = f"#{r:02x}{g:02x}{b:02x}80"
|
||||||
weight = weight * 10 / max_w
|
weight = weight * 10 / max_w
|
||||||
# weight = max(weight, 1)
|
# weight = max(weight, 1)
|
||||||
dot.edge(refs, defs, penwidth=str(weight), color=color)
|
if weight >= 1:
|
||||||
|
dot.edge(refs, defs, penwidth=str(weight), color=color)
|
||||||
# print(f"{refs} -{weight}-> {defs}")
|
# print(f"{refs} -{weight}-> {defs}")
|
||||||
|
|
||||||
|
top_rank = sorted([(rank, node) for (node, rank) in ranked.items()], reverse=True)
|
||||||
|
# Print the PageRank of each node
|
||||||
|
for rank, node in top_rank:
|
||||||
|
print(f"{node} rank: {rank}")
|
||||||
|
|
||||||
dot.render("tmp", format="pdf", view=True)
|
dot.render("tmp", format="pdf", view=True)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue