Skip to content

chore(ci,deps): move actions to Node 24, drop Python 3.9 support - #77

Closed
thomasht86 wants to merge 1 commit into
mainfrom
chore/node24-actions-and-drop-py39
Closed

chore(ci,deps): move actions to Node 24, drop Python 3.9 support#77
thomasht86 wants to merge 1 commit into
mainfrom
chore/node24-actions-and-drop-py39

Conversation

@thomasht86

Copy link
Copy Markdown
Owner

Addresses both open issues.

Closes #75
Closes #71

#75 — Node 24 for GitHub Actions

CI emits Node 20 deprecation warnings for actions still pinned to the Node 20 runtime. Every official action is bumped to its first Node 24 major (minimal, deliberate — not chasing absolute-latest), and the stray setup-uv pin is standardized:

Action Before After
actions/checkout v4 v5
actions/setup-python v5 v6
actions/cache v4 v5
actions/upload-artifact v4 v6
actions/download-artifact v4 v7
actions/attest-build-provenance v2 v3
astral-sh/setup-uv (copilot-setup-steps) v5 v7

Left as-is because their floating tags already resolve to Node 24 (or are Docker actions): PyO3/maturin-action@v1, benchmark-action/github-action-benchmark@v1, astral-sh/setup-uv@v7 (main CI), addnab/docker-run-action@v3.

I reviewed the major-version release notes for each bumped action: none of the breaking changes affect this repo (we upload/download zipped artifacts by name, so the artifact actions' by-ID path and direct-upload changes don't apply).

#71 — Drop Python 3.9 (EOL Oct 2025)

Minimum is now 3.10:

  • pyproject.toml: requires-python = ">=3.10", drop the 3.9 classifier (and add the already-tested 3.14), collapse the conditional pytest split into a single pytest>=9.0.3, bump mypy python_version to 3.10
  • Cargo.toml: pyo3 abi3-py39abi3-py310
  • CI test matrix: drop "3.9"
  • benchmark PEP 723 scripts: requires-python = ">=3.10" + Optional[str]str | None (keeps ruff's UP007 happy now that the inferred target is 3.10)
  • uv.lock: regenerated — this collapses the many python_version < '3.10' dependency duplicates (e.g. cryptography 47.0.0) that only existed for the 3.9 branch

No further code simplification is unlocked by dropping only 3.9: the typing_extensions.Unpack fallback must stay because typing.Unpack first appears in 3.11, so 3.10 still needs it.

Verification

  • uv run task dev (built with abi3-py310) ✅
  • uv run task test:unit → 123 passed, 2 skipped ✅
  • uv run task lint (ruff + mypy) clean ✅

🤖 Generated with Claude Code

Closes #75, closes #71.

## Node 24 (#75)
GitHub Actions emits Node 20 deprecation warnings for actions still pinned
to the Node 20 runtime. Bump every official action to its first Node 24
major and standardize the stray setup-uv pin:
- actions/checkout          v4 -> v5
- actions/setup-python      v5 -> v6
- actions/cache             v4 -> v5
- actions/upload-artifact   v4 -> v6
- actions/download-artifact v4 -> v7
- actions/attest-build-provenance v2 -> v3
- astral-sh/setup-uv        v5 -> v7 (copilot-setup-steps)

maturin-action@v1, github-action-benchmark@v1, setup-uv@v7 and
docker-run-action@v3 already resolve to node24/docker, so they are left
as-is. None of the bumped majors' breaking changes affect this repo's
usage (we upload/download zipped artifacts by name, not by ID).

## Drop Python 3.9 (#71)
3.9 reached EOL in October 2025; the minimum is now 3.10.
- pyproject.toml: requires-python >=3.10, drop 3.9 classifier (add 3.14),
  collapse the pytest version split, bump mypy python_version to 3.10
- Cargo.toml: pyo3 abi3-py39 -> abi3-py310
- CI test matrix: drop 3.9
- benchmark PEP 723 scripts: requires-python >=3.10 (keeps ruff's
  X | Y syntax valid), Optional[str] -> str | None
- uv.lock: regenerated; collapses the py<3.10 dependency duplicates

The typing_extensions.Unpack fallback stays: typing.Unpack only lands in
3.11, so 3.10 still needs it. No further code simplification is unlocked
by dropping only 3.9.

Verified: maturin develop, 123 unit tests pass, ruff + mypy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thomasht86

Copy link
Copy Markdown
Owner Author

Split into two focused PRs, one per issue: #78 (Node 24 actions, closes #75) and #79 (drop Python 3.9, closes #71).

@thomasht86 thomasht86 closed this Jul 20, 2026
@thomasht86
thomasht86 deleted the chore/node24-actions-and-drop-py39 branch July 20, 2026 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update node version in github actions Remove Python 3.9 support

1 participant