Conversation
Target the CPython Limited API via scikit-build-core's wheel.py-api so a single abi3 wheel per platform covers CPython 3.11 and later. CPython 3.10 still receives a regular, version-specific wheel, preserving support for all currently-supported Python versions. - pyproject.toml: set wheel.py-api = "cp311" and raise the scikit-build-core build requirement to >=0.11 for the SKBUILD_SABI_COMPONENT and SKBUILD_SABI_VERSION variables - CMakeLists.txt: request the Development.SABIModule component and pass USE_SABI to python_add_library when targeting the Stable ABI, so FindPython defines Py_LIMITED_API and names the extension cutil.abi3.so - README: document the abi3 wheels and the 3.11 floor (and fix a stray reference to Simplification) - Bump version to 1.0.0 (CITATION.cff and pyproject.toml; uv.lock follows) The floor is 3.11 because the typed memoryviews used in cutil.pyx are only available under the Limited API from CPython 3.11 onwards. The Rust lonlat_bng FFI library is a pure C-ABI dependency and is unaffected. cibuildwheel 4.0.0 handles abi3 wheels automatically (build once, test on all later versions, run abi3audit after repair), so no CI changes are required.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #132 (base branch
cibuildwheel-4); GitHub will retarget this tomasteronce #132 merges.Summary
Builds a single CPython Stable ABI (
abi3) wheel per platform covering CPython 3.11+, instead of one wheel per minor version. CPython 3.10 still gets a regular, version-specific wheel, so support for all currently-supported Python versions is preserved. The Rustlonlat_bngFFI library is a pure C-ABI dependency and is unaffected.Changes
pyproject.toml:wheel.py-api = "cp311"; raisescikit-build-corebuild requirement to>=0.11forSKBUILD_SABI_COMPONENT/SKBUILD_SABI_VERSION; bump version to 1.0.0.CMakeLists.txt: requestDevelopment.SABIModuleand passUSE_SABItopython_add_librarywhen targeting the Stable ABI, so FindPython definesPy_LIMITED_APIand names the extensioncutil.abi3.so.README.md: document the abi3 wheels and the 3.11 floor (and fix a stray reference to "Simplification").CITATION.cff: version 1.0.0, today's release date.Why 3.11
The typed memoryviews in
cutil.pyxare only available under the Limited API from CPython 3.11 onwards.