From f121b444a577b4a70d129d0e34bdb96b25281064 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 24 Jul 2025 15:01:20 +0100 Subject: [PATCH 1/2] Add script to check changelog entries Fix formatting --- .github/workflows/check_changelogs.yml | 18 +++++++++ ci/check_changelog_entries.py | 51 ++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/workflows/check_changelogs.yml create mode 100644 ci/check_changelog_entries.py diff --git a/.github/workflows/check_changelogs.yml b/.github/workflows/check_changelogs.yml new file mode 100644 index 0000000000..8069fc1319 --- /dev/null +++ b/.github/workflows/check_changelogs.yml @@ -0,0 +1,18 @@ +name: Check changelog entries + +on: + pull_request: + +jobs: + check-changelogs: + name: Check changelog entries + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Install uv + uses: astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6.4.3 + + - name: Check changelog entries + run: uv run --no-sync python ci/check_changelog_entries.py diff --git a/ci/check_changelog_entries.py b/ci/check_changelog_entries.py new file mode 100644 index 0000000000..9f883f0be4 --- /dev/null +++ b/ci/check_changelog_entries.py @@ -0,0 +1,51 @@ +""" +Check changelog entries have the correct filename structure. +""" + +import sys +from pathlib import Path + +VALID_CHANGELOG_TYPES = ["feature", "bugfix", "doc", "removal", "misc"] +CHANGELOG_DIRECTORY = (Path(__file__).parent.parent / "changes").resolve() + + +def is_int(s: str) -> bool: + try: + int(s) + except ValueError: + return False + else: + return True + + +if __name__ == "__main__": + print(f"Looking for changelog entries in {CHANGELOG_DIRECTORY}") + entries = CHANGELOG_DIRECTORY.glob("*") + entries = [e for e in entries if e.name not in [".gitignore", "README.md"]] + print(f"Found {len(entries)} entries") + print() + + bad_suffix = [e for e in entries if e.suffix != ".rst"] + bad_issue_no = [e for e in entries if not is_int(e.name.split(".")[0])] + bad_type = [e for e in entries if e.name.split(".")[1] not in VALID_CHANGELOG_TYPES] + + if len(bad_suffix) or len(bad_issue_no) or len(bad_type): + if len(bad_suffix): + print("Changelog entries without .rst suffix") + print("-------------------------------------") + print("\n".join([p.name for p in bad_suffix])) + print() + if len(bad_issue_no): + print("Changelog entries without integer issue number") + print("----------------------------------------------") + print("\n".join([p.name for p in bad_issue_no])) + print() + if len(bad_type): + print("Changelog entries without valid type") + print("------------------------------------") + print("\n".join([p.name for p in bad_type])) + print(f"Valid types are: {VALID_CHANGELOG_TYPES}") + print() + sys.exit(1) + + sys.exit(0) From 14e0b1af8eb74248390a2088dc87e5ed517fe7fe Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 24 Jul 2025 15:02:12 +0100 Subject: [PATCH 2/2] Fix changelog entries --- changes/{3251.fix.rst => 3251.bugfix.rst} | 0 changes/{+c563f4d4.bugfix.rst => 3258.bugfix.rst} | 0 changes/{3264.fix.rst => 3264.bugfix.rst} | 0 changes/{3280.fix.rst => 3280.bugfix.rst} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename changes/{3251.fix.rst => 3251.bugfix.rst} (100%) rename changes/{+c563f4d4.bugfix.rst => 3258.bugfix.rst} (100%) rename changes/{3264.fix.rst => 3264.bugfix.rst} (100%) rename changes/{3280.fix.rst => 3280.bugfix.rst} (100%) diff --git a/changes/3251.fix.rst b/changes/3251.bugfix.rst similarity index 100% rename from changes/3251.fix.rst rename to changes/3251.bugfix.rst diff --git a/changes/+c563f4d4.bugfix.rst b/changes/3258.bugfix.rst similarity index 100% rename from changes/+c563f4d4.bugfix.rst rename to changes/3258.bugfix.rst diff --git a/changes/3264.fix.rst b/changes/3264.bugfix.rst similarity index 100% rename from changes/3264.fix.rst rename to changes/3264.bugfix.rst diff --git a/changes/3280.fix.rst b/changes/3280.bugfix.rst similarity index 100% rename from changes/3280.fix.rst rename to changes/3280.bugfix.rst