mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-30 09:14:59 +00:00
Merge branch 'call-graph' into gpt-35
This commit is contained in:
commit
0256b8e260
3 changed files with 33 additions and 11 deletions
|
@ -29,11 +29,15 @@ def to_tree(tags):
|
|||
for tag in tags:
|
||||
tag = list(tag)
|
||||
|
||||
for i in range(len(last)):
|
||||
for i in range(len(last) + 1):
|
||||
if i == len(last):
|
||||
break
|
||||
if last[i] != tag[i]:
|
||||
break
|
||||
|
||||
num_common = i
|
||||
dump(repr(tag), num_common)
|
||||
|
||||
indent = tab * num_common
|
||||
rest = tag[num_common:]
|
||||
for item in rest:
|
||||
|
@ -288,11 +292,6 @@ class RepoMap:
|
|||
except ZeroDivisionError:
|
||||
return []
|
||||
|
||||
# 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"{rank:.03f} {node}")
|
||||
|
||||
# distribute the rank from each source node, across all of its out edges
|
||||
ranked_definitions = defaultdict(float)
|
||||
for src in G.nodes:
|
||||
|
@ -312,6 +311,21 @@ class RepoMap:
|
|||
continue
|
||||
ranked_tags += list(definitions.get((fname, ident), []))
|
||||
|
||||
rel_other_fnames_without_tags = set(
|
||||
os.path.relpath(fname, self.root) for fname in other_fnames
|
||||
)
|
||||
|
||||
fnames_already_included = set(rt[0] for rt in ranked_tags)
|
||||
|
||||
top_rank = sorted([(rank, node) for (node, rank) in ranked.items()], reverse=True)
|
||||
for rank, fname in top_rank:
|
||||
rel_other_fnames_without_tags.remove(fname)
|
||||
if fname not in fnames_already_included:
|
||||
ranked_tags.append((fname,))
|
||||
|
||||
for fname in rel_other_fnames_without_tags:
|
||||
ranked_tags.append((fname,))
|
||||
|
||||
return ranked_tags
|
||||
|
||||
def get_ranked_tags_map(self, chat_fnames, other_fnames=None):
|
||||
|
|
|
@ -99,10 +99,7 @@ def replace_most_similar_chunk(whole, part, replace):
|
|||
if max_similarity < similarity_thresh:
|
||||
return
|
||||
|
||||
if replace:
|
||||
replace_lines = replace.splitlines() + [""]
|
||||
else:
|
||||
replace_lines = []
|
||||
replace_lines = replace.splitlines()
|
||||
|
||||
modified_whole = (
|
||||
whole_lines[:most_similar_chunk_start]
|
||||
|
|
|
@ -53,6 +53,9 @@ print(obj.my_method(1, 2))
|
|||
print(my_function(3, 4))
|
||||
"""
|
||||
|
||||
test_file3 = "test_file_pass.py"
|
||||
file_content3 = "pass"
|
||||
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
with open(os.path.join(temp_dir, test_file1), "w") as f:
|
||||
f.write(file_content1)
|
||||
|
@ -60,8 +63,15 @@ print(my_function(3, 4))
|
|||
with open(os.path.join(temp_dir, test_file2), "w") as f:
|
||||
f.write(file_content2)
|
||||
|
||||
with open(os.path.join(temp_dir, test_file3), "w") as f:
|
||||
f.write(file_content3)
|
||||
|
||||
repo_map = RepoMap(root=temp_dir)
|
||||
other_files = [os.path.join(temp_dir, test_file1), os.path.join(temp_dir, test_file2)]
|
||||
other_files = [
|
||||
os.path.join(temp_dir, test_file1),
|
||||
os.path.join(temp_dir, test_file2),
|
||||
os.path.join(temp_dir, test_file3),
|
||||
]
|
||||
result = repo_map.get_repo_map([], other_files)
|
||||
|
||||
# Check if the result contains the expected tags map with identifiers
|
||||
|
@ -69,6 +79,7 @@ print(my_function(3, 4))
|
|||
self.assertIn("MyClass", result)
|
||||
self.assertIn("my_method", result)
|
||||
self.assertIn("my_function", result)
|
||||
self.assertIn("test_file_pass.py", result)
|
||||
|
||||
def test_check_for_ctags_failure(self):
|
||||
with patch("subprocess.run") as mock_run:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue