diff_files

This commit is contained in:
mrT23
2023-07-13 18:26:35 +03:00
parent 4b4fda37a6
commit 4e59693c76
3 changed files with 10 additions and 7 deletions

View File

@ -24,10 +24,10 @@ def get_pr_diff(git_provider: Union[GithubProvider, Any], token_handler: TokenHa
Returns a string with the diff of the PR.
If needed, apply diff minimization techniques to reduce the number of tokens
"""
git_provider.pr.files = list(git_provider.get_diff_files())
git_provider.pr.diff_files = list(git_provider.get_diff_files())
# get pr languages
pr_languages = sort_files_by_main_languages(git_provider.get_languages(), git_provider.pr.files)
pr_languages = sort_files_by_main_languages(git_provider.get_languages(), git_provider.pr.diff_files)
# generate a standard diff string, with patch extension
patches_extended, total_tokens = pr_generate_extended_diff(pr_languages, token_handler)

View File

@ -26,8 +26,6 @@ class GithubProvider:
self.pr = self._get_pr()
def get_files(self):
if hasattr(self.pr, 'files'):
return self.pr.files
return self.pr.get_files()
def get_diff_files(self) -> list[FilePatchInfo]:

View File

@ -122,21 +122,26 @@ class PRReviewer:
pr = self.git_provider.pr
last_commit_id = list(pr.get_commits())[-1]
files = list(self.git_provider.get_diff_files())
if hasattr(pr, 'diff_files'): # prevent bringing all the files again
diff_files = pr.diff_files
else:
diff_files = list(self.git_provider.get_diff_files())
for d in data['PR Feedback']['Code suggestions']:
relevant_file = d['relevant file'].strip()
relevant_line_in_file = d['relevant line in file'].strip()
content = d['suggestion content']
position = -1
for file in files:
for file in diff_files:
if file.filename.strip() == relevant_file:
patch = file.patch
patch_lines = patch.splitlines()
for i, line in enumerate(patch_lines):
if relevant_line_in_file in line:
position = i
break
if position == -1:
if settings.config.verbosity_level >= 2:
logging.info(f"Could not find position for {relevant_file} {relevant_line_in_file}")
else:
body = content