Merge pull request #1134 from Codium-ai/tr/err_protections

Tr/err protections
This commit is contained in:
Tal
2024-08-14 08:17:19 +03:00
committed by GitHub
7 changed files with 18 additions and 8 deletions

View File

@ -561,8 +561,13 @@ def load_yaml(response_text: str, keys_fix_yaml: List[str] = [], first_key="", l
try: try:
data = yaml.safe_load(response_text) data = yaml.safe_load(response_text)
except Exception as e: except Exception as e:
get_logger().error(f"Failed to parse AI prediction: {e}") get_logger().warning(f"Initial failure to parse AI prediction: {e}")
data = try_fix_yaml(response_text, keys_fix_yaml=keys_fix_yaml, first_key=first_key, last_key=last_key) data = try_fix_yaml(response_text, keys_fix_yaml=keys_fix_yaml, first_key=first_key, last_key=last_key)
if not data:
get_logger().error(f"Failed to parse AI prediction after fallbacks", artifact={'response_text': response_text})
else:
get_logger().info(f"Successfully parsed AI prediction after fallbacks",
artifact={'response_text': response_text})
return data return data

View File

@ -177,7 +177,7 @@ class AzureDevopsProvider(GitProvider):
pull_request_id=self.pr_num, pull_request_id=self.pr_num,
) )
except Exception as e: except Exception as e:
get_logger().exception(f"Failed to publish labels, error: {e}") get_logger().warning(f"Failed to publish labels, error: {e}")
def get_pr_labels(self, update=False): def get_pr_labels(self, update=False):
try: try:

View File

@ -192,9 +192,12 @@ class BitbucketProvider(GitProvider):
else: else:
if diffs[i].data.get('lines_added', 0) == 0 and diffs[i].data.get('lines_removed', 0) == 0: if diffs[i].data.get('lines_added', 0) == 0 and diffs[i].data.get('lines_removed', 0) == 0:
diff_split[i] = "" diff_split[i] = ""
elif len(diff_split_lines) <= 3:
diff_split[i] = ""
get_logger().info(f"Disregarding empty diff for file {_gef_filename(diffs[i])}")
else: else:
get_logger().error(f"Error - failed to remove the bitbucket header from diff {i}") get_logger().error(f"Error - failed to get diff for file {_gef_filename(diffs[i])}")
break diff_split[i] = ""
invalid_files_names = [] invalid_files_names = []
diff_files = [] diff_files = []

View File

@ -736,7 +736,7 @@ class GithubProvider(GitProvider):
"PUT", f"{self.pr.issue_url}/labels", input=post_parameters "PUT", f"{self.pr.issue_url}/labels", input=post_parameters
) )
except Exception as e: except Exception as e:
get_logger().exception(f"Failed to publish labels, error: {e}") get_logger().warning(f"Failed to publish labels, error: {e}")
def get_pr_labels(self, update=False): def get_pr_labels(self, update=False):
try: try:

View File

@ -508,7 +508,7 @@ class GitLabProvider(GitProvider):
self.mr.labels = list(set(pr_types)) self.mr.labels = list(set(pr_types))
self.mr.save() self.mr.save()
except Exception as e: except Exception as e:
get_logger().exception(f"Failed to publish labels, error: {e}") get_logger().warning(f"Failed to publish labels, error: {e}")
def publish_inline_comments(self, comments: list[dict]): def publish_inline_comments(self, comments: list[dict]):
pass pass

View File

@ -292,7 +292,7 @@ class PRCodeSuggestions:
get_logger().debug(f"PR diff", artifact=self.patches_diff) get_logger().debug(f"PR diff", artifact=self.patches_diff)
self.prediction = await self._get_prediction(model, self.patches_diff) self.prediction = await self._get_prediction(model, self.patches_diff)
else: else:
get_logger().error(f"Error getting PR diff") get_logger().warning(f"Empty PR diff")
self.prediction = None self.prediction = None
data = self.prediction data = self.prediction

View File

@ -92,7 +92,7 @@ class PRDescription:
if self.prediction: if self.prediction:
self._prepare_data() self._prepare_data()
else: else:
get_logger().error(f"Error getting AI prediction {self.pr_id}") get_logger().warning(f"Empty prediction, PR: {self.pr_id}")
self.git_provider.remove_initial_comment() self.git_provider.remove_initial_comment()
return None return None
@ -508,6 +508,8 @@ extra_file_yaml =
def _prepare_file_labels(self): def _prepare_file_labels(self):
file_label_dict = {} file_label_dict = {}
if not self.data or 'pr_files' not in self.data:
return file_label_dict
for file in self.data['pr_files']: for file in self.data['pr_files']:
try: try:
required_fields = ['changes_summary', 'changes_title', 'filename', 'label'] required_fields = ['changes_summary', 'changes_title', 'filename', 'label']