Skip to content

Tag CPython wheels as abi3 (cp310-abi3); release 3.7.1#65

Merged
vthorsteinsson merged 1 commit into
masterfrom
fix/abi3-wheel-tag
Jul 14, 2026
Merged

Tag CPython wheels as abi3 (cp310-abi3); release 3.7.1#65
vthorsteinsson merged 1 commit into
masterfrom
fix/abi3-wheel-tag

Conversation

@vthorsteinsson

Copy link
Copy Markdown
Member

Summary

The extension module has always been compiled against the stable ABI (the py_limited_api flag in eparser_build.py produces _eparser.abi3.so), but bdist_wheel was never informed, so published wheels were tagged cp3X-cp3X and only served the exact Python version they were built with — every other CPython version silently fell back to building from the sdist (observed for 3.7.0 and all earlier releases; e.g. 3.6.2 ships cp39-cp39 wheels).

This PR passes the py_limited_api option to bdist_wheel via setup() (CPython only — PyPy has no stable ABI), so a single cp310-abi3 wheel serves all CPython versions >= 3.10. The extension's limited API target is bumped from cp39 to cp310 to match the supported floor, and the version is bumped to 3.7.1.

Test plan

  • Local build produces reynir-3.7.1-cp310-abi3-linux_x86_64.whl
  • That single wheel (built under Python 3.13) installs and parses correctly on both Python 3.10 and 3.14
  • Full test suite green (119 tests)
  • Post-release: PyPI smoke test verifying that CPython 3.13 now receives the binary wheel instead of the sdist

🤖 Generated with Claude Code

The extension module has always been compiled against the stable ABI
(py_limited_api in eparser_build.py produces _eparser.abi3.so), but
bdist_wheel was never told, so the wheels were tagged cp3X-cp3X and
only served the exact Python version they were built with - all other
CPython versions silently fell back to sdist source builds.

Pass the py_limited_api option to bdist_wheel via setup() (on CPython
only; PyPy has no stable ABI), so a single cp310-abi3 wheel now serves
all CPython versions >= 3.10. Verified locally: a wheel built under
Python 3.13 installs and parses correctly on both 3.10 and 3.14.
Also bump the extension's limited API target from cp39 to cp310 to
match the supported floor.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vthorsteinsson vthorsteinsson merged commit b329d16 into master Jul 14, 2026
16 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.

1 participant