From 33f859b073963a59c8caed2a264665da340249d5 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Thu, 6 Jul 2023 08:44:08 +0300 Subject: [PATCH 1/2] delete "Preparing review..." comment --- README.md | 6 +----- pr_agent/git_providers/github_provider.py | 17 ++++++++++++++--- pr_agent/tools/pr_questions.py | 4 +++- pr_agent/tools/pr_reviewer.py | 3 ++- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0af5bfed..3a86c55c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ It automatically analyzes the PR, and provides feedback and suggestions, and can It is powered by GPT-4, and is based on the [CodiumAI](https://github.com/Codium-ai/) platform. -TBD: Add screenshot of the PR Reviewer (could be gif) * [Quickstart](#Quickstart) @@ -17,10 +16,7 @@ TBD: Add screenshot of the PR Reviewer (could be gif) * [Usage and Tools](#usage-and-tools) * [Roadmap](#roadmap) * [Similar projects](#similar-projects) -* Additional files: - * CONTRIBUTION.md - * LICENSE - * + ## Quickstart diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index 4d24d977..11861fd6 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -39,8 +39,17 @@ class GithubProvider: diff_files.append(FilePatchInfo(original_file_content_str, new_file_content_str, file.patch, file.filename)) return diff_files - def publish_comment(self, pr_comment: str): - self.pr.create_issue_comment(pr_comment) + def publish_comment(self, pr_comment: str, is_temporary: bool = False): + response = self.pr.create_issue_comment(pr_comment) + response.is_temporary = is_temporary + if not hasattr(self.pr, 'comments_list'): + self.pr.comments_list = [] + self.pr.comments_list.append(response) + + def remove_initial_comment(self): + for comment in self.pr.comments_list: + if comment.is_temporary: + comment.delete() def get_title(self): return self.pr.title @@ -153,7 +162,9 @@ class GithubProvider: try: token = settings.github.user_token except AttributeError as e: - raise ValueError("GitHub token is required when using user deployment") from e + raise ValueError( + "GitHub token is required when using user deployment. See: " + "https://github.com/Codium-ai/pr-agent#method-2-run-from-source") from e return Github(token) def _get_repo(self): diff --git a/pr_agent/tools/pr_questions.py b/pr_agent/tools/pr_questions.py index 0deabb6d..e83c4df6 100644 --- a/pr_agent/tools/pr_questions.py +++ b/pr_agent/tools/pr_questions.py @@ -35,7 +35,8 @@ class PRQuestions: async def answer(self): logging.info('Answering a PR question...') - self.git_provider.publish_comment("Preparing answer...") + if settings.config.publish_review: + self.git_provider.publish_comment("Preparing answer...", is_temporary=True) logging.info('Getting PR diff...') self.patches_diff = get_pr_diff(self.git_provider, self.token_handler) logging.info('Getting AI prediction...') @@ -45,6 +46,7 @@ class PRQuestions: if settings.config.publish_review: logging.info('Pushing answer...') self.git_provider.publish_comment(pr_comment) + self.git_provider.remove_initial_comment() return "" async def _get_prediction(self): diff --git a/pr_agent/tools/pr_reviewer.py b/pr_agent/tools/pr_reviewer.py index 28da9d9b..45bd75dc 100644 --- a/pr_agent/tools/pr_reviewer.py +++ b/pr_agent/tools/pr_reviewer.py @@ -42,7 +42,7 @@ class PRReviewer: async def review(self): logging.info('Reviewing PR...') if settings.config.publish_review: - self.git_provider.publish_comment("Preparing review...") + self.git_provider.publish_comment("Preparing review...", is_temporary=True) logging.info('Getting PR diff...') self.patches_diff = get_pr_diff(self.git_provider, self.token_handler) logging.info('Getting AI prediction...') @@ -52,6 +52,7 @@ class PRReviewer: if settings.config.publish_review: logging.info('Pushing PR review...') self.git_provider.publish_comment(pr_comment) + self.git_provider.remove_initial_comment() return "" async def _get_prediction(self): From f1004273ecbcbba45bc240673acd89b518c28ab3 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Thu, 6 Jul 2023 08:57:55 +0300 Subject: [PATCH 2/2] add try-except --- pr_agent/git_providers/github_provider.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pr_agent/git_providers/github_provider.py b/pr_agent/git_providers/github_provider.py index 11861fd6..f2c0296f 100644 --- a/pr_agent/git_providers/github_provider.py +++ b/pr_agent/git_providers/github_provider.py @@ -1,3 +1,4 @@ +import logging from collections import namedtuple from dataclasses import dataclass from datetime import datetime @@ -47,9 +48,12 @@ class GithubProvider: self.pr.comments_list.append(response) def remove_initial_comment(self): - for comment in self.pr.comments_list: - if comment.is_temporary: - comment.delete() + try: + for comment in self.pr.comments_list: + if comment.is_temporary: + comment.delete() + except Exception as e: + logging.exception(f"Failed to remove initial comment, error: {e}") def get_title(self): return self.pr.title