From e56320540b8f696cbd74b45daf5e85d24718dbc5 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Wed, 15 May 2024 09:05:01 +0300 Subject: [PATCH] Refactor Azure DevOps provider to use PR iterations for change detection, improving accuracy of diff file identification --- pr_agent/algo/utils.py | 4 ++-- pr_agent/git_providers/azuredevops_provider.py | 8 ++++---- pr_agent/settings/configuration.toml | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py index b877106d..e2f7f8ba 100644 --- a/pr_agent/algo/utils.py +++ b/pr_agent/algo/utils.py @@ -356,7 +356,7 @@ def convert_str_to_datetime(date_str): return datetime.strptime(date_str, datetime_format) -def load_large_diff(filename, new_file_content_str: str, original_file_content_str: str) -> str: +def load_large_diff(filename, new_file_content_str: str, original_file_content_str: str, show_warning: bool = True) -> str: """ Generate a patch for a modified file by comparing the original content of the file with the new content provided as input. @@ -375,7 +375,7 @@ def load_large_diff(filename, new_file_content_str: str, original_file_content_s try: diff = difflib.unified_diff(original_file_content_str.splitlines(keepends=True), new_file_content_str.splitlines(keepends=True)) - if get_settings().config.verbosity_level >= 2: + if get_settings().config.verbosity_level >= 2 and show_warning: get_logger().warning(f"File was modified, but no patch was found. Manually creating patch: {filename}.") patch = ''.join(diff) except Exception: diff --git a/pr_agent/git_providers/azuredevops_provider.py b/pr_agent/git_providers/azuredevops_provider.py index 048a2a95..1129bd8a 100644 --- a/pr_agent/git_providers/azuredevops_provider.py +++ b/pr_agent/git_providers/azuredevops_provider.py @@ -237,12 +237,12 @@ class AzureDevopsProvider(GitProvider): pull_request_id=self.pr_num, project=self.workspace_slug ) - changes = [] + changes = None if iterations: iteration_id = iterations[-1].id # Get the last iteration (most recent changes) # Get changes for the iteration - changes: GitPullRequestIterationChanges = self.azure_devops_client.get_pull_request_iteration_changes( + changes = self.azure_devops_client.get_pull_request_iteration_changes( repository_id=self.repo_slug, pull_request_id=self.pr_num, iteration_id=iteration_id, @@ -336,8 +336,8 @@ class AzureDevopsProvider(GitProvider): original_file_content_str = "" patch = load_large_diff( - file, new_file_content_str, original_file_content_str - ) + file, new_file_content_str, original_file_content_str, show_warning=False + ).rstrip() diff_files.append( FilePatchInfo( diff --git a/pr_agent/settings/configuration.toml b/pr_agent/settings/configuration.toml index b84bce61..691faec8 100644 --- a/pr_agent/settings/configuration.toml +++ b/pr_agent/settings/configuration.toml @@ -2,10 +2,10 @@ model="gpt-4-turbo-2024-04-09" model_turbo="gpt-4-turbo-2024-04-09" fallback_models=["gpt-4-0125-preview"] -git_provider="github" -publish_output=true +git_provider="azure" +publish_output=false publish_output_progress=true -verbosity_level=0 # 0,1,2 +verbosity_level=2 # 0,1,2 use_extra_bad_extensions=false use_wiki_settings_file=true use_repo_settings_file=true @@ -80,7 +80,7 @@ enable_help_text=false [pr_code_suggestions] # /improve # max_context_tokens=8000 num_code_suggestions=4 -commitable_code_suggestions = false +commitable_code_suggestions = true extra_instructions = "" rank_suggestions = false enable_help_text=false