On 05/10/2021 07:59, Nick Coghlan wrote:
On Tue, 28 Sep 2021, 6:55 am Brett Cannon, <br...@python.org> wrote:
On Sun, Sep 26, 2021 at 3:51 AM Phil Thompson via Python-Dev <
python-dev@python.org> wrote:
However the stable ABI is still a second class citizen as it is still
not possible (AFAIK) to specify a wheel name that doesn't need to
explicitly include each supported Python version (rather than a
minimum
stable ABI version).
Actually you can do this. The list of compatible wheels for a platform
starts at CPython 3.2 when the stable ABI was introduced and goes
forward
to the version of Python you are running. So you can build a wheel
file
that targets the oldest version of CPython that you are targeting and
its
version of the stable ABI and it is considered forward compatible. See
`python -m pip debug --verbose` for the complete list of wheel tags
that
are supported for an interpreter.
I think Phil's point is a build side one: as far as I know, the process
for
getting one of those more generic file names is still to build a wheel
with
an overly precise name for the stable ABI declarations used, and then
rename it.
The correspondence between "I used these stable ABI declarations in my
module build" and "I can use this more broadly accepted wheel name" is
currently obscure enough that I couldn't tell you off the top of my
head
how to do it, and I contributed to the design of both sides of the
equation.
Actually improving the build ergonomics would be hard (and outside
CPython's own scope), but offering a table in the stable ABI docs
giving
suggested wheel tags for different stable ABI declarations should be
feasible, and would be useful to both folks renaming already built
wheels
and anyone working on improving the build automation tools.
Actually I was able to do what I wanted without renaming wheels...
Specify 'py_limited_api=True' as an argument to Extension() (using
setuptools v57.0.0).
Specify...
[bdist_wheel]
py_limited_api = cp36
...in setup.cfg (using wheel v0.34.2).
The resulting wheel has a Python tag of 'cp36' and an ABI tag of 'abi3'
for all platforms, which is interpreted by the current version of pip
exactly as I want.
I'm not sure if this is documented anywhere.
Phil
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/XVBN3OWN5TAYAKTUYI6MEXATX3I62ZEZ/
Code of Conduct: http://python.org/psf/codeofconduct/