Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ The tag starts the caller's publisher. Keep PyPI trusted publishing in that top-
read-only job alongside the tagged-source build, and make publishing depend on both. Repositories with the standard `uv`
wheel and sdist build can call `validate-python-release.yaml` in the tag publisher. The
[self-release workflow](.github/workflows/release.yaml) shows the GitHub Release path; callers keep their ecosystem
uploads. The read-only build workflow checks the tagged source and renders the Release body. The tag caller alone has a
uploads. The read-only build workflow checks the tagged source. The tag caller renders the Release body and has the only
Contents write job that creates the GitHub Release.

## Validate a Python release
Expand Down Expand Up @@ -474,9 +474,9 @@ checkout or GitHub state.
tag: ${{ github.ref_name }}
```

`tag` is required. `executable` defaults to `release-creator` on `PATH` and accepts a path to a locked installation. The
`previous` output is empty when this is the first matching release. Pass it as `previous_tag_name` to GitHub's
generated-notes endpoint only when nonempty.
`tag` is required. Install `release-creator` on `PATH` before calling the Action. The `previous` output is empty when
this is the first matching release. Pass it as `previous_tag_name` to GitHub's generated-notes endpoint only when
nonempty.

## Reconcile PyPI artifacts

Expand Down
1 change: 1 addition & 0 deletions changelog.d/+correct-action-contract.doc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Correct the documented release validation and previous-tag Action interfaces.
1 change: 1 addition & 0 deletions changelog.d/+review-release-creator-066.change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Accept release-creator 0.6.6 in caller locks under its reviewed PyPI upload cutoff.
12 changes: 11 additions & 1 deletion tests/refresh_release_lock/test_cutoffs.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,15 @@ def test_expire_cutoffs_removes_empty_package_table(cutoff_project: Path) -> Non
assert "packages" not in tomllib.loads(updated)["tool"]["nab"]


@pytest.mark.parametrize("reviewed", ["2026-10-23T02:44:40Z", "2026-10-23T16:52:06Z"])
@pytest.mark.parametrize(
"reviewed",
[
pytest.param("2026-10-23T02:44:40Z", id="0.6.0"),
pytest.param("2026-10-23T16:52:06Z", id="0.6.4"),
pytest.param("2026-10-23T19:54:50Z", id="0.6.5"),
pytest.param("2026-10-23T20:48:24Z", id="0.6.6"),
],
)
def test_expire_cutoffs_removes_each_reviewed_release_creator_floor(reviewed: str) -> None:
project = (
'[tool.nab]\nuploaded-prior-to = "P7D"\n'
Expand Down Expand Up @@ -202,6 +210,8 @@ def test_check_nab_lock_rejects_forged_upload_time(
pytest.param("release-creator", "2026-10-23T16:52:07Z", False, id="extended-release-creator"),
pytest.param("release-creator", "2026-10-23T19:54:50Z", True, id="reviewed-release-creator-0.6.5"),
pytest.param("release-creator", "2026-10-23T19:54:51Z", False, id="extended-release-creator-0.6.5"),
pytest.param("release-creator", "2026-10-23T20:48:24Z", True, id="reviewed-release-creator-0.6.6"),
pytest.param("release-creator", "2026-10-23T20:48:25Z", False, id="extended-release-creator-0.6.6"),
pytest.param("unreviewed", "2026-10-22T00:00:00Z", False, id="new-package"),
],
)
Expand Down
1 change: 1 addition & 0 deletions tools/nab_cutoffs.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
("release-creator", "0.6.0"): datetime(2026, 10, 23, 2, 44, 40, tzinfo=UTC),
("release-creator", "0.6.4"): datetime(2026, 10, 23, 16, 52, 6, tzinfo=UTC),
("release-creator", "0.6.5"): datetime(2026, 10, 23, 19, 54, 50, tzinfo=UTC),
("release-creator", "0.6.6"): datetime(2026, 10, 23, 20, 48, 24, tzinfo=UTC),
("uv-build", "0.13.4"): datetime(2026, 10, 21, tzinfo=UTC),
}
_REVIEWED_EXCEPTIONS: Final = {
Expand Down
Loading