Remove 'bitbucket' explicit dependency anywhere that's not in bitbucket_provider.py

This commit is contained in:
Ori Kotek
2023-09-10 14:06:13 +03:00
parent adb9964823
commit 115b513c9b
11 changed files with 38 additions and 32 deletions

View File

@ -20,7 +20,7 @@ def get_setting(key: str) -> Any:
except Exception:
return global_settings.get(key, None)
def convert_to_markdown(output_data: dict) -> str:
def convert_to_markdown(output_data: dict, gfm_supported: bool) -> str:
"""
Convert a dictionary of data into markdown format.
Args:
@ -49,11 +49,14 @@ def convert_to_markdown(output_data: dict) -> str:
continue
if isinstance(value, dict):
markdown_text += f"## {key}\n\n"
markdown_text += convert_to_markdown(value)
markdown_text += convert_to_markdown(value, gfm_supported)
elif isinstance(value, list):
emoji = emojis.get(key, "")
if key.lower() == 'code feedback':
if gfm_supported:
markdown_text += f"\n\n- **<details><summary> { emoji } Code feedback:**</summary>\n\n"
else:
markdown_text += f"\n\n- **{emoji} Code feedback:**\n\n"
else:
markdown_text += f"- {emoji} **{key}:**\n\n"
for item in value:
@ -62,7 +65,10 @@ def convert_to_markdown(output_data: dict) -> str:
elif item:
markdown_text += f" - {item}\n"
if key.lower() == 'code feedback':
if gfm_supported:
markdown_text += "</details>\n\n"
else:
markdown_text += "\n\n"
elif value != 'n/a':
emoji = emojis.get(key, "")
markdown_text += f"- {emoji} **{key}:** {value}\n"

View File

@ -38,7 +38,8 @@ class AzureDevopsProvider:
self.set_pr(pr_url)
def is_supported(self, capability: str) -> bool:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments', 'get_labels', 'remove_initial_comment']:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments', 'get_labels',
'remove_initial_comment', 'gfm_markdown']:
return False
return True

View File

@ -101,8 +101,7 @@ class BitbucketProvider(GitProvider):
return False
def is_supported(self, capability: str) -> bool:
if capability in ['get_issue_comments', 'publish_inline_comments', 'get_labels']:
if capability in ['get_issue_comments', 'publish_inline_comments', 'get_labels', 'gfm_markdown']:
return False
return True
@ -180,11 +179,6 @@ class BitbucketProvider(GitProvider):
for comment in comments:
self.publish_inline_comment(comment['body'], comment['start_line'], comment['path'])
def publish_bitbucket_inline_comments(self, comments: list[dict]):
for comment in comments:
self.publish_inline_comment(comment['body'],comment['position'], comment['path'])
def get_title(self):
return self.pr.title

View File

@ -54,11 +54,16 @@ class CodeCommitClient:
def __init__(self):
self.boto_client = None
def is_supported(self, capability: str) -> bool:
if capability in ["gfm_markdown"]:
return False
return True
def _connect_boto_client(self):
try:
self.boto_client = boto3.client("codecommit")
except Exception as e:
raise ValueError(f"Failed to connect to AWS CodeCommit: {e}")
raise ValueError(f"Failed to connect to AWS CodeCommit: {e}") from e
def get_differences(self, repo_name: int, destination_commit: str, source_commit: str):
"""

View File

@ -74,6 +74,7 @@ class CodeCommitProvider(GitProvider):
"create_inline_comment",
"publish_inline_comments",
"get_labels",
"gfm_markdown"
]:
return False
return True

View File

@ -304,7 +304,8 @@ class GerritProvider(GitProvider):
# 'get_issue_comments',
'create_inline_comment',
'publish_inline_comments',
'get_labels'
'get_labels',
'gfm_markdown'
]:
return False
return True

View File

@ -43,7 +43,7 @@ class GitLabProvider(GitProvider):
self.incremental = incremental
def is_supported(self, capability: str) -> bool:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments']:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments', 'gfm_markdown']:
return False
return True

View File

@ -56,7 +56,8 @@ class LocalGitProvider(GitProvider):
raise KeyError(f'Branch: {self.target_branch_name} does not exist')
def is_supported(self, capability: str) -> bool:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments', 'get_labels']:
if capability in ['get_issue_comments', 'create_inline_comment', 'publish_inline_comments', 'get_labels',
'gfm_markdown']:
return False
return True

View File

@ -43,5 +43,10 @@ webhook_secret = "<WEBHOOK SECRET>" # Optional, may be commented out.
personal_access_token = ""
[bitbucket]
# Bitbucket personal bearer token
# For Bitbucket personal/repository bearer token
bearer_token = ""
# For Bitbucket app
app_key = ""
base_url = ""

View File

@ -74,11 +74,6 @@ class PRDescription:
logging.info('Pushing answer...')
if get_settings().pr_description.publish_description_as_comment:
self.git_provider.publish_comment(pr_body)
else:
# bitbucket does not support publishing PR labels yet
if get_settings().config.git_provider == 'bitbucket':
self.git_provider.publish_description(pr_title, description)
return
else:
self.git_provider.publish_description(pr_title, pr_body)
if self.git_provider.is_supported("get_labels"):

View File

@ -214,7 +214,7 @@ class PRReviewer:
"⏮️ Review for commits since previous PR-Agent review": f"Starting from commit {last_commit_url}"}})
data.move_to_end('Incremental PR Review', last=False)
markdown_text = convert_to_markdown(data)
markdown_text = convert_to_markdown(data, self.git_provider.is_supported("gfm_markdown"))
user = self.git_provider.get_user_id()
# Add help text if not in CLI mode
@ -266,9 +266,6 @@ class PRReviewer:
self.git_provider.publish_inline_comment(content, relevant_file, relevant_line_in_file)
if comments:
if get_settings().config.git_provider == 'bitbucket':
self.git_provider.publish_bitbucket_inline_comments(comments)
else:
self.git_provider.publish_inline_comments(comments)
def _get_user_answers(self) -> Tuple[str, str]: