From 73d2b1565dcf0d3a7855f789cef7fd89e9e73444 Mon Sep 17 00:00:00 2001 From: "Hussam.lawen" Date: Sun, 11 Feb 2024 12:31:30 +0200 Subject: [PATCH] Implement edit comment --- pr_agent/git_providers/bitbucket_provider.py | 7 +++++++ pr_agent/git_providers/git_provider.py | 3 +++ pr_agent/git_providers/github_provider.py | 3 +++ pr_agent/git_providers/gitlab_provider.py | 8 ++++++++ 4 files changed, 21 insertions(+) diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index a5b9d801..751c413d 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -187,6 +187,13 @@ class BitbucketProvider(GitProvider): comment = self.pr.comment(pr_comment) if is_temporary: self.temp_comments.append(comment["id"]) + return comment + + def edit_comment(self, comment, body: str): + try: + comment.update(body) + except Exception as e: + get_logger().exception(f"Failed to update comment, error: {e}") def remove_initial_comment(self): try: diff --git a/pr_agent/git_providers/git_provider.py b/pr_agent/git_providers/git_provider.py index 98efcf23..58d2adf7 100644 --- a/pr_agent/git_providers/git_provider.py +++ b/pr_agent/git_providers/git_provider.py @@ -41,6 +41,9 @@ class GitProvider(ABC): def get_pr_description_full(self) -> str: pass + def edit_comment(self, comment, body: str): + pass + def get_pr_description(self, *, full: bool = True) -> str: from pr_agent.config_loader import get_settings from pr_agent.algo.utils import clip_tokens diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index 7153f403..07f808db 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -395,6 +395,9 @@ class GithubProvider(GitProvider): except Exception as e: get_logger().exception(f"Failed to remove comment, error: {e}") + def edit_comment(self, comment, body: str): + comment.edit(body=body) + def get_title(self): return self.pr.title diff --git a/pr_agent/git_providers/gitlab_provider.py b/pr_agent/git_providers/gitlab_provider.py index f5d9f8e6..edb7d095 100644 --- a/pr_agent/git_providers/gitlab_provider.py +++ b/pr_agent/git_providers/gitlab_provider.py @@ -176,6 +176,14 @@ class GitLabProvider(GitProvider): comment = self.mr.notes.create({'body': mr_comment}) if is_temporary: self.temp_comments.append(comment) + return comment + + def edit_comment(self, comment, body: str): + try: + comment.body = body + comment.save() + except Exception as e: + get_logger().exception(f"Failed to edit comment, error: {e}") def publish_inline_comment(self, body: str, relevant_file: str, relevant_line_in_file: str): edit_type, found, source_line_no, target_file, target_line_no = self.search_line(relevant_file,