Skip to content

Add Python 3.15 support, retire Python 3.8 wheels - #180

Merged
benpruitt merged 1 commit into
masterfrom
feat/python-3.15-support
Oct 21, 2026
Merged

benpruitt merged 1 commit into
masterfrom
feat/python-3.15-support

Conversation

@benpruitt

@benpruitt benpruitt commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Adds Python 3.15 support (classifiers, test.yml/release.yml CI matrices).
  • Retires Python 3.8 wheels. requires-python is now >=3.9; PyPI will no longer publish prebuilt Python 3.8 wheels (3.8 reached end-of-life in October 2024). Users still on 3.8 will need to build from the source distribution or upgrade.
  • Bumps the Cython build requirement from ~=3.1.0 to ~=3.3.0 (needed to build under Python 3.15's Limited API changes).
  • Bumps cibuildwheel in the release workflow from v3.3.1 to v4.2.0 (needed to build Python 3.15 wheels; this is also what forces the Python 3.8 drop, since v4.0+ removed 3.8 wheel-building support).
  • Simplifies the macOS arch logic to always build x86_64 arm64 (the previous version-string conditional only ever evaluated true for Python 3.9 due to a GitHub Actions numeric-coercion quirk).
  • Aligns the sdist job's pinned Cython version with pyproject.toml.

Test plan

  • pip install -e ".[dev]" and pytest (52 passed) locally under Python 3.14 with Cython 3.3.0, to confirm the Cython bump doesn't break the existing build.
  • CI matrix run across 3.9–3.15 on all three OSes (will run on this PR).
  • No local Python 3.15 interpreter was available to test directly; relying on CI for 3.15-specific verification.

🤖 Generated with Claude Code

cibuildwheel v3.3.1 cannot build Python 3.15 wheels (that landed in
v4.0+), and Cython~=3.1.0 doesn't officially support 3.15's Limited
API changes (needs the 3.3.x line). Bumping cibuildwheel to v4.2.0
drops its ability to build Python 3.8 wheels (EOL since Oct 2024), so
PyPI will no longer publish prebuilt Python 3.8 wheels going forward;
3.8 users will need to build from sdist or upgrade.

- requires-python raised to >=3.9, classifiers updated (3.8 removed,
  3.15 added)
- Cython build requirement bumped from ~=3.1.0 to ~=3.3.0
- test.yml and release.yml matrices updated to 3.9-3.15
- cibuildwheel bumped to v4.2.0; macOS arm64 is now built
  unconditionally since arm64 is supported for all remaining versions
  (3.9+), removing a broken version-string comparison
- sdist job's pinned Cython version aligned with pyproject.toml
- CHANGES calls out the Python 3.8 wheel retirement as a standalone,
  user-facing entry

Verified locally: editable install and full test suite pass under
Python 3.14 with Cython 3.3.0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@grinner grinner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm

@benpruitt
benpruitt merged commit 5d6f145 into master Oct 21, 2026
22 checks passed
@benpruitt
benpruitt deleted the feat/python-3.15-support branch October 21, 2026 22:41
@benpruitt benpruitt mentioned this pull request Oct 21, 2026
2 of 3 tasks
benpruitt added a commit that referenced this pull request Oct 21, 2026
- Bump __version__ to 2.4.0
- Finalize the 2.4.0 CHANGES entry (upstream Primer3 backport fixes from
  PR #179, Python 3.15 support and Python 3.8 wheel retirement from PR #180)
- Update copyright end date in primer3/__init__.py's license header to 2026
  (the __copyright__ string was already current)
- Sync docs/quickstart.md and docs/development.md Python version ranges
  with the 3.9-3.15 support window

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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.

2 participants