From 7fc1a657c5d076ba9f8928d641aa8eb37b266d37 Mon Sep 17 00:00:00 2001 From: Meni Yakove Date: Sat, 21 Sep 2024 10:53:08 +0300 Subject: [PATCH] feat(github_api): refactor size label calculation --- webhook_server_container/libs/github_api.py | 63 ++++++++++++++------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/webhook_server_container/libs/github_api.py b/webhook_server_container/libs/github_api.py index 4c57e9fe..7ac1feb2 100644 --- a/webhook_server_container/libs/github_api.py +++ b/webhook_server_container/libs/github_api.py @@ -616,28 +616,19 @@ def assign_reviewers(self) -> None: self.logger.debug(f"{self.log_prefix} Failed to add reviewer {reviewer}. {ex}") self.pull_request.create_issue_comment(f"{reviewer} can not be added as reviewer. {ex}") - def add_size_label(self) -> None: - size: int = self.pull_request.additions + self.pull_request.deletions - if size < 20: - _label = "XS" - - elif size < 50: - _label = "S" - - elif size < 100: - _label = "M" + def get_size(self) -> str: + """Calculate size label based on additions and deletions.""" + size = self.pull_request.additions + self.pull_request.deletions + prefixes = ["XS", "S", "M", "L", "XL", "XXL"] + for prefix in prefixes: + if size < 20 * (prefix[:-1].upper() == "S") + 10: + return f"{SIZE_LABEL_PREFIX}{prefix}" - elif size < 300: - _label = "L" - - elif size < 500: - _label = "XL" - - else: - _label = "XXL" - - size_label = f"{SIZE_LABEL_PREFIX}{_label}" + return "" + def add_size_label(self) -> None: + """Add a size label to the pull request based on its additions and deletions.""" + size_label = self.get_size() if size_label in self.pull_request_labels_names(): return @@ -648,6 +639,38 @@ def add_size_label(self) -> None: self._add_label(label=size_label) + # def add_size_label(self) -> None: + # size: int = self.pull_request.additions + self.pull_request.deletions + # if size < 20: + # _label = "XS" + # + # elif size < 50: + # _label = "S" + # + # elif size < 100: + # _label = "M" + # + # elif size < 300: + # _label = "L" + # + # elif size < 500: + # _label = "XL" + # + # else: + # _label = "XXL" + # + # size_label = f"{SIZE_LABEL_PREFIX}{_label}" + # + # if size_label in self.pull_request_labels_names(): + # return + # + # exists_size_label = [label for label in self.pull_request_labels_names() if label.startswith(SIZE_LABEL_PREFIX)] + # + # if exists_size_label: + # self._remove_label(label=exists_size_label[0]) + # + # self._add_label(label=size_label) + def label_by_user_comment( self, user_requested_label: str, remove: bool, reviewed_user: str, issue_comment_id: int ) -> None: