From 6147420862e74ccf9b523c70c24bda165005fd24 Mon Sep 17 00:00:00 2001 From: Brian O'Kelley Date: Sun, 24 May 2026 10:04:52 -0400 Subject: [PATCH 1/2] ci: normalize release-please prerelease versions --- .github/workflows/release-please.yml | 29 ++++++ scripts/normalize_pyproject_prerelease.py | 102 +++++++++++++++++++ tests/test_normalize_pyproject_prerelease.py | 51 ++++++++++ 3 files changed, 182 insertions(+) create mode 100644 scripts/normalize_pyproject_prerelease.py create mode 100644 tests/test_normalize_pyproject_prerelease.py diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 475d77aae..6f472e15a 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -18,6 +18,35 @@ jobs: with: release-type: python + - name: Checkout release PR + if: ${{ steps.release.outputs.prs_created == 'true' }} + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Normalize release PR pyproject prerelease version + if: ${{ steps.release.outputs.prs_created == 'true' }} + env: + RELEASE_PR_BRANCH: release-please--branches--${{ github.ref_name }} + run: | + set -euo pipefail + + git fetch origin "${RELEASE_PR_BRANCH}:${RELEASE_PR_BRANCH}" + git switch "${RELEASE_PR_BRANCH}" + + python3 scripts/normalize_pyproject_prerelease.py pyproject.toml + + if git diff --quiet -- pyproject.toml; then + echo "pyproject.toml already uses a PEP 440-compatible version" + exit 0 + fi + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add pyproject.toml + git commit -m "chore: normalize prerelease version to PEP 440" + git push origin "HEAD:${RELEASE_PR_BRANCH}" + # Publish to PyPI when a release is created - name: Checkout if: ${{ steps.release.outputs.release_created }} diff --git a/scripts/normalize_pyproject_prerelease.py b/scripts/normalize_pyproject_prerelease.py new file mode 100644 index 000000000..2cf3599bc --- /dev/null +++ b/scripts/normalize_pyproject_prerelease.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Normalize release-please prerelease versions in pyproject.toml.""" + +from __future__ import annotations + +import argparse +import re +from pathlib import Path + +_SEMVER_PRERELEASE_RE = re.compile( + r"^(?P\d+\.\d+\.\d+)-(?P