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. Returns a string with the diff of the PR.
If needed, apply diff minimization techniques to reduce the number of tokens 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 # 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 # generate a standard diff string, with patch extension
patches_extended, total_tokens = pr_generate_extended_diff(pr_languages, token_handler) 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() self.pr = self._get_pr()
def get_files(self): def get_files(self):
if hasattr(self.pr, 'files'):
return self.pr.files
return self.pr.get_files() return self.pr.get_files()
def get_diff_files(self) -> list[FilePatchInfo]: def get_diff_files(self) -> list[FilePatchInfo]:

View File

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