Merge branch 'call-graph' into gpt-35

This commit is contained in:
Paul Gauthier 2023-06-04 15:03:46 -07:00
commit 0256b8e260
3 changed files with 33 additions and 11 deletions

View file

@ -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):

View file

@ -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]

View file

@ -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: