Skip to content

chore(deps): drop Python 3.9 support - #79

Merged
thomasht86 merged 2 commits into
mainfrom
chore/drop-py39
Jul 20, 2026
Merged

chore(deps): drop Python 3.9 support#79
thomasht86 merged 2 commits into
mainfrom
chore/drop-py39

Conversation

@thomasht86

Copy link
Copy Markdown
Owner

Closes #71

Python 3.9 reached EOL in October 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 #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
thomasht86 enabled auto-merge July 20, 2026 07:39
@thomasht86
thomasht86 merged commit 48d9b7d into main Jul 20, 2026
17 checks passed
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.

Remove Python 3.9 support

1 participant