-
Notifications
You must be signed in to change notification settings - Fork 28
Build abi3 wheels for Python 3.11+ #144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Looks like this isn't going to play nicely with your tests until Cython's limited API fixes are released. |
@effigies No worries, thanks for looking into this. |
ff91a11
to
3178787
Compare
…cing is not supported.
89b2f58
to
d6e7971
Compare
version, instead of monkey-patching command class
0b95613
to
c5707a1
Compare
release workflow about a year ago)
FWIW this was mostly a false positive from abi3audit. See pypa/abi3audit#85. It was always intended that |
@da-woods thanks - if I understand correctly, But changing to |
Yes - they should be inlined, and nobody's going to change anything that breaks the inlines definition. The main advantage of |
Some initial playing around with getting Stable ABI builds to work. The benefit would be that if you publish wheels with
cp3N-abi3
, then any Python versions >= 3.N can install the same wheel without your having to do anything apart from fix compatibilities with the new Python versions.Looking at the symbols indexed_gzip uses,
PyObject_GetBuffer
was only added to the stable ABI in 3.11, so that sets a lower bound on ABI3 wheels.To get it to compile, I also needed to depend on cython/cython#5871. Leaving as draft for now, since this seems like a Bad Idea to code a dependency on in your
pyproject.toml
.abi3audit
also complains about the use ofPy_DECREF
; I've removed them here, but we'd need to wait on cython/cython#6063 for it to be entirely clean.I tried to modify your setup.py defensively, so that it would only attempt to build an ABI3 build if both Python and Cython were new enough. I have tested, and I'm able to install a wheel built with Python 3.11 on Python 3.12.