Skip to content

Python 3.14 support, v0.9.3 - #17

Open
honnibal wants to merge 8 commits into
masterfrom
python-3.14
Open

Python 3.14 support, v0.9.3#17
honnibal wants to merge 8 commits into
masterfrom
python-3.14

Conversation

@honnibal

@honnibal honnibal commented Aug 31, 2026

Copy link
Copy Markdown
Member

What

Adds Python 3.14 support and prepares a v0.9.3 release. This is the last package in the spaCy transformer chain without cp314 wheels (see explosion/spaCy#13960).

Closes #16.

Contents

Cherry-picked from #16 by @dsbferris (authorship preserved):

  • Upgrade pyo3 ^0.24.0^0.29.0 — required for 3.14; the current sdist cannot build on 3.14 at all
  • setup.cfg: python_requires >=3.9,<3.15, add 3.13/3.14 classifiers (fixes a duplicated 3.12 classifier), drop deprecated license classifier
  • Version bump to 0.9.3 in all places
  • Unpin mypy (the old <1.1.0 pin doesn't install on 3.14)
  • Remove the deprecated free-threaded-support cibuildwheel option
  • Add 3.14 to the tests workflow matrix (taken without Python 3.14 compatibility and chores #16's commit disabling the repository_owner guard — the guard stays)

In-house workflow/release changes (replacing the corresponding commits in #16):

  • Bump pypa/cibuildwheel v2.21.3 → v4.1.0; pinned SHA verified against the version tag. The old pin predates CPython 3.14 support.
  • manylinux2014 → manylinux_2_28: the manylinux2014 images are EOL and never received a 3.14 interpreter.
  • Drop the retired macos-13 intel runner, but unlike Python 3.14 compatibility and chores #16, keep publishing x86_64 macOS wheels by cross-compiling on the macos-14 runner (CIBW_ARCHS_MACOS: arm64 x86_64 + rustup target add x86_64-apple-darwin).
  • Fix setup.cfg version = "0.9.3"version = 0.9.3 (quotes are literal in [metadata]; previously masked by setup.py passing version= explicitly).

Free-threaded cp314t wheels (explosion/spaCy#13995) are deliberately out of scope; free-threaded builds stay off by default under cibuildwheel v4.

Verification

  • Wheel builds on CPython 3.14.6 (arm64 macOS); full test suite passes in a clean venv (10 passed, 1 skipped); get_alignments(['fou','gere'], ['fougere']) returns ([[0], [0]], [[0, 1]])
  • The x86_64 cross-compile path verified locally: ARCHFLAGS="-arch x86_64" on an arm64 host produces a wheel whose extension is x86_64 per lipo -info — the same mechanism the macos-14 runner will use
  • All pinned action SHAs verified to resolve to their claimed version tags
  • Independent downstream confirmation in Python 3.14 compatibility and chores #16 (comment) (build + full spacy-transformers chain on 3.14) by @nkg

Thanks @dsbferris for the original patch and @nkg for the downstream testing.

After merge: tag release-v0.9.3 to build and publish wheels.

dsbferris and others added 8 commits August 31, 2026 10:49
This is now handled via explicit enable option. See pypa/cibuildwheel#2048
fix python3.13 (was 3.12 twice)

add python3.14

bump to python_requires <3.15
- Bump pypa/cibuildwheel to v4.1.0 (SHA verified against the version
  tag); the pinned v2.21.3 predates CPython 3.14 support.
- Switch manylinux images from manylinux2014 to manylinux_2_28: the
  manylinux2014 images are EOL and never received a CPython 3.14
  interpreter.
- Drop the retired macos-13 intel runner and cross-compile x86_64
  wheels on the macos-14 runner instead (CIBW_ARCHS_MACOS, with the
  x86_64-apple-darwin rust target added), so intel macOS wheels keep
  shipping.
- Unquote the version in setup.cfg: in [metadata] the quotes are taken
  literally, previously masked by setup.py passing version= explicitly.

Replaces the workflow portions of PR #16, keeping the repo-owner CI
guard in place.
@dsbferris

Copy link
Copy Markdown

Thanks for refining and opening a PR for this as well. Hope it gets merged soon. Cheers

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