Skip to content

🔥 build: drop Python 3.9, add Python 3.14 support#53

Merged
nstarman merged 3 commits into
GalacticDynamics:mainfrom
nstarman:drop-py39
Jun 16, 2026
Merged

🔥 build: drop Python 3.9, add Python 3.14 support#53
nstarman merged 3 commits into
GalacticDynamics:mainfrom
nstarman:drop-py39

Conversation

@nstarman

@nstarman nstarman commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Python 3.9 has reached end-of-life. This PR raises the minimum supported Python to 3.10 and extends support up to Python 3.14.

Changes

  • requires-python: >=3.9>=3.10
  • Trove classifiers: drop Python :: 3.9, add Python :: 3.14
  • Tooling target versions → 3.10: mypy python_version, ruff target-version (py310), pylint py-version
  • CI test matrix: ["3.9", "3.13"]["3.10", "3.14"]

🤖 Generated with Claude Code

nstarman and others added 2 commits June 16, 2026 15:00
Python 3.9 is end-of-life. Bump the minimum supported version to 3.10
and extend support up to Python 3.14 across packaging metadata,
type/lint tooling, and CI.

- requires-python: >=3.9 -> >=3.10
- drop the 3.9 trove classifier, add the 3.14 classifier
- mypy python_version, ruff target-version, pylint py-version -> 3.10
- CI test matrix: ["3.9", "3.13"] -> ["3.10", "3.14"]

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
No longer needed now that the minimum supported Python is 3.10. Forward
references in `_core.py` (`Comparator`, `OptionalDependencyEnum`) are
quoted since they are now evaluated at runtime.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@nstarman nstarman added this to the v0.5.0 milestone Jun 16, 2026
@codecov

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (370c3ae) to head (3e3b235).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #53   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            3         3           
  Lines           81        81           
=========================================
  Hits            81        81           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The `uv run` steps re-synced the project's default `dev` group (and its
heavy `ipykernel` -> `pyzmq` chain) on top of the selective `Install`
step, which broke on Python 3.14 / Windows + macOS where pyzmq 26.2.0
has no wheel and fails to build from source.

Use `uv run --no-sync` so the steps reuse exactly the environment the
preceding `uv sync --no-default-groups --group ...` created.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@nstarman nstarman merged commit 788f73b into GalacticDynamics:main Jun 16, 2026
15 checks passed
@nstarman nstarman deleted the drop-py39 branch June 16, 2026 14:29
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.

1 participant