diff --git a/main.py b/main.py index 701ea270..7c0b4db4 100644 --- a/main.py +++ b/main.py @@ -31,7 +31,6 @@ from release_notes_generator.action_inputs import ActionInputs from release_notes_generator.utils.gh_action import set_action_output from release_notes_generator.utils.logging_config import setup_logging -from release_notes_generator.filter import FilterByRelease warnings.filterwarnings("ignore", category=InsecureRequestWarning) diff --git a/release_notes_generator/model/commit_record.py b/release_notes_generator/model/commit_record.py index 5a23e9cc..e9813078 100644 --- a/release_notes_generator/model/commit_record.py +++ b/release_notes_generator/model/commit_record.py @@ -35,10 +35,6 @@ def is_closed(self) -> bool: def is_open(self) -> bool: return False - @property - def labels(self): - return [] - @property def authors(self) -> list[str]: return [self._commit.author.login] if self._commit.author else [] diff --git a/release_notes_generator/model/issue_record.py b/release_notes_generator/model/issue_record.py index 047f7200..6047ac2a 100644 --- a/release_notes_generator/model/issue_record.py +++ b/release_notes_generator/model/issue_record.py @@ -27,6 +27,8 @@ def __init__(self, issue: Issue, skip: bool = False): super().__init__(skip=skip) self._issue: Issue = issue + self._labels = {label.name for label in self._issue.labels} + self._pull_requests: dict[int, PullRequest] = {} self._commits: dict[int, dict[str, Commit]] = {} @@ -44,10 +46,6 @@ def is_closed(self) -> bool: def is_open(self) -> bool: return self._issue.state == self.ISSUE_STATE_OPEN - @property - def labels(self): - return [label.name for label in self._issue.labels] - @property def authors(self) -> list[str]: if not self._issue or not self._issue.user: @@ -161,6 +159,7 @@ def register_pull_request(self, pull: PullRequest) -> None: Returns: None """ self._pull_requests[pull.number] = pull + self._labels.update({label.name for label in pull.labels}) def register_commit(self, pull: PullRequest, commit: Commit) -> None: """ diff --git a/release_notes_generator/model/pull_request_record.py b/release_notes_generator/model/pull_request_record.py index a67cf041..ae389893 100644 --- a/release_notes_generator/model/pull_request_record.py +++ b/release_notes_generator/model/pull_request_record.py @@ -25,6 +25,8 @@ def __init__(self, pull: PullRequest, skip: bool = False): super().__init__(skip=skip) self._pull_request: PullRequest = pull + self._labels = {label.name for label in self._pull_request.labels} + self._commits: dict[str, Commit] = {} # properties - override Record properties @@ -45,10 +47,6 @@ def is_closed(self) -> bool: def is_open(self) -> bool: return self._pull_request.state == self.PR_STATE_OPEN - @property - def labels(self): - return [label.name for label in self._pull_request.labels] - @property def authors(self) -> list[str]: if not self._pull_request or not self._pull_request.user: diff --git a/release_notes_generator/model/record.py b/release_notes_generator/model/record.py index a7122b4a..0e6bda90 100644 --- a/release_notes_generator/model/record.py +++ b/release_notes_generator/model/record.py @@ -38,6 +38,7 @@ def __init__(self, skip: bool = False): self._present_in_chapters = 0 self._skip = skip self._is_release_note_detected: Optional[bool] = None + self._labels: set[str] = set() self._rls_notes: Optional[str] = None # single annotation here # properties @@ -55,6 +56,15 @@ def skip(self) -> bool: """Check if the record should be skipped during output generation process.""" return self._skip + @property + def labels(self) -> list[str]: + """ + Gets the labels of the record. + Returns: + list[str]: A list of labels associated with the record. + """ + return list(self._labels) + @property @abstractmethod def record_id(self) -> int | str: @@ -82,15 +92,6 @@ def is_open(self) -> bool: bool: True if the record is open, False otherwise. """ - @property - @abstractmethod - def labels(self) -> list[str]: - """ - Gets the labels of the record. - Returns: - list[str]: A list of labels associated with the record. - """ - @property @abstractmethod def authors(self) -> list[str]: diff --git a/tests/release_notes/test_release_notes_builder.py b/tests/release_notes/test_release_notes_builder.py index 2153a1b9..b02595c0 100644 --- a/tests/release_notes/test_release_notes_builder.py +++ b/tests/release_notes/test_release_notes_builder.py @@ -711,7 +711,7 @@ def test_build_closed_issue_with_user_labels_no_prs( ): expected_release_notes = RELEASE_NOTES_DATA_CLOSED_ISSUE_NO_PR_WITH_USER_LABELS rec = record_with_issue_closed_no_pull - rec.issue.labels = [MockLabel("bug"), MockLabel("breaking-changes")] + rec._labels = {"bug", "breaking-changes"} mocker.patch("release_notes_generator.builder.ActionInputs.get_print_empty_chapters", return_value=False) builder = ReleaseNotesBuilder( @@ -730,7 +730,7 @@ def test_build_closed_issue_with_prs_without_user_label( ): expected_release_notes = RELEASE_NOTES_DATA_CLOSED_ISSUE_WITH_PR_WITHOUT_USER_LABELS rec = record_with_issue_closed_two_pulls - rec.issue.labels = [MockLabel("label1"), MockLabel("label2")] + rec._labels = {"label1", "label2"} rec.issue.title = "I1" mocker.patch("release_notes_generator.builder.ActionInputs.get_print_empty_chapters", return_value=False) @@ -825,7 +825,7 @@ def test_merged_pr_without_issue_with_more_user_labels_duplicity_reduction_on( ): expected_release_notes = RELEASE_NOTES_DATA_MERGED_PR_WITH_USER_LABELS_DUPLICITY_REDUCTION_ON rec = pull_request_record_merged - rec.pull_request.labels = [MockLabel("bug"), MockLabel("enhancement")] + rec._labels = {"bug", "enhancement"} mocker.patch("release_notes_generator.builder.ActionInputs.get_print_empty_chapters", return_value=False) builder = ReleaseNotesBuilder(