diff --git a/release_notes_generator/chapters/service_chapters.py b/release_notes_generator/chapters/service_chapters.py index 5719f553..57bee16e 100644 --- a/release_notes_generator/chapters/service_chapters.py +++ b/release_notes_generator/chapters/service_chapters.py @@ -18,15 +18,18 @@ This module contains the ServiceChapters class which is responsible for representing the service chapters in the release notes. """ +import logging from typing import Optional, cast from release_notes_generator.action_inputs import ActionInputs from release_notes_generator.chapters.base_chapters import BaseChapters from release_notes_generator.model.chapter import Chapter from release_notes_generator.model.record.commit_record import CommitRecord +from release_notes_generator.model.record.hierarchy_issue_record import HierarchyIssueRecord from release_notes_generator.model.record.issue_record import IssueRecord from release_notes_generator.model.record.pull_request_record import PullRequestRecord from release_notes_generator.model.record.record import Record +from release_notes_generator.model.record.sub_issue_record import SubIssueRecord from release_notes_generator.utils.constants import ( CLOSED_ISSUES_WITHOUT_PULL_REQUESTS, CLOSED_ISSUES_WITHOUT_USER_DEFINED_LABELS, @@ -38,6 +41,8 @@ ) from release_notes_generator.utils.enums import DuplicityScopeEnum +logger = logging.getLogger(__name__) + # pylint: disable=too-many-instance-attributes class ServiceChapters(BaseChapters): @@ -121,20 +126,23 @@ def populate(self, records: dict[str, Record]) -> None: # other edge case situations else: - if ( - record.is_open - and isinstance(record, IssueRecord) - and cast(IssueRecord, record).pull_requests_count() == 0 - ): - # no change increment delivered - pass - elif ( - record.is_open - and isinstance(record, IssueRecord) - and cast(IssueRecord, record).pull_requests_count() > 0 - ): - self.chapters[MERGED_PRS_LINKED_TO_NOT_CLOSED_ISSUES].add_row(record_id, record.to_chapter_row()) - self.used_record_numbers.append(record_id) + pr_count = cast(IssueRecord, record).pull_requests_count() + is_issue_like = isinstance(record, (IssueRecord, SubIssueRecord)) + is_hierarchy = isinstance(record, HierarchyIssueRecord) + + if record.is_open: + if is_hierarchy and record.is_present_in_chapters: + logger.debug("Skipping open HierarchyIssueRecord %s (pr_count=%d)", record_id, pr_count) + elif is_issue_like and pr_count > 0: + # Open issue/sub-issue with linked PRs → add to the specific chapter + self.chapters[MERGED_PRS_LINKED_TO_NOT_CLOSED_ISSUES].add_row( + record_id, record.to_chapter_row() + ) + logger.debug("Linked PRs for open issue %s; added to chapter.", record_id) + self.used_record_numbers.append(record_id) + else: + # Open issue/sub-issue with no PRs → explicitly do nothing (keeps original behavior) + pass else: if record_id not in self.used_record_numbers: self.chapters[OTHERS_NO_TOPIC].add_row(record_id, record.to_chapter_row()) diff --git a/tests/release_notes/builder/test_release_notes_builder.py b/tests/release_notes/builder/test_release_notes_builder.py index f4e89807..76ae1498 100644 --- a/tests/release_notes/builder/test_release_notes_builder.py +++ b/tests/release_notes/builder/test_release_notes_builder.py @@ -269,36 +269,7 @@ All closed PRs are linked to issues. ### Merged PRs Linked to 'Not Closed' Issue ⚠️ -- 🔔 None: _HI302 open_ #302 - - _Release Notes_: - - Hierarchy level release note - - 🔔 N/A: #451 _SI451 closed_ developed by @pr_author_101, @user in #150 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 None: _HI303 open_ #303 - - _Release Notes_: - - Hierarchy level release note - - 🔔 N/A: #452 _SI452 closed_ developed by @author, @pr_author_101, @user in #151 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 None: _HI304 open_ #304 - - _Release Notes_: - - Hierarchy level release note - - 🔔 None: _HI350 open_ #350 - - _Release Notes_: - - Sub-hierarchy level release note - - 🔔 N/A: #453 _SI453 closed_ developed by @author, @pr_author_101, @user in #152 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture +All merged PRs are linked to Closed issues. ### Direct commits ⚠️ - Commit: merge_c... - Direct commit example @@ -362,36 +333,7 @@ * Awesome architecture ### Merged PRs Linked to 'Not Closed' Issue ⚠️ -- 🔔 Epic: _HI302 open_ #302 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Task: #451 _SI451 closed_ developed by @pr_author_101, @user in #150 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 Epic: _HI303 open_ #303 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Task: #452 _SI452 closed_ developed by @author, @pr_author_101, @user in #151 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 Epic: _HI304 open_ #304 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Feature: _HI350 open_ #350 - - _Release Notes_: - - Sub-hierarchy level release note - - 🔔 Task: #453 _SI453 closed_ developed by @author, @pr_author_101, @user in #152 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture +All merged PRs are linked to Closed issues. ### Direct commits ⚠️ - Commit: merge_c... - Direct commit example @@ -458,36 +400,7 @@ All closed PRs are linked to issues. ### Merged PRs Linked to 'Not Closed' Issue ⚠️ -- 🔔 Epic: _HI302 open_ #302 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Task: #451 _SI451 closed_ developed by @pr_author_101, @user in #150 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 Epic: _HI303 open_ #303 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Task: #452 _SI452 closed_ developed by @author, @pr_author_101, @user in #151 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture -- 🔔 Epic: _HI304 open_ #304 - - _Release Notes_: - - Hierarchy level release note - - 🔔 Feature: _HI350 open_ #350 - - _Release Notes_: - - Sub-hierarchy level release note - - 🔔 Task: #453 _SI453 closed_ developed by @author, @pr_author_101, @user in #152 - - Hierarchy level release note - - Fixed bug - - Improved performance - + More nice code - * Awesome architecture +All merged PRs are linked to Closed issues. ### Direct commits ⚠️ - Commit: merge_c... - Direct commit example