On Thu, 30 Aug 2018 at 11:41 Paul Moore <p.f.moore@gmail.com> wrote:
On Thu, 30 Aug 2018 at 19:30, Donald Stufft <donald@stufft.io> wrote:
> I find it helpful to generally not think of compatibility tags as hard “this wheel is supported on this platform”, but more along the lines of “if I built a wheel in the specified environment, I would get the same results”. Those results may or may not work. So for example, if you have a pure Python wheel that *only* works on Python 3.5+, but it produces the same output when building the wheel on Python 3.3 (even if it doesn’t ultimately work), then a “py3” wheel is the right tag to use. Arguably you’d even use py2.py3 since you’d produce the same output (but in practice most don’t since that’s extra work).

I also quite like Daniel's description of the list of supported tags
as "try these, in this order - the first one you match is the best
chance you have of getting something that works". It may still not
work, but there's nothing that the package builder declared as being
any better.
 

The thing I most dislike about the tag system is that if pip (or any
installer) misses out a particular tag combination, it gets totally
ignored. I sort of wish that there was some level of wildcard
matching, so that weird combinations get picked up at least
*somewhere* in the priority list.

So basically unless the python_requires is set to something that definitely won't work for a release, you almost want to try anything that has a remote chance of working?
 
But I never managed to design a
workable scheme for doing that, so it may not even be possible.

So you could get that with the 'py' interpreter tag. If you said for e.g. Python 3.7 you first want py37-none, then py3-none, then any py3N-none where 0 <= N < 7, then py3M-none where M > 7, you have basically given a wildcard for pure Python wheels based on version. And if you extend this to ignoring the ABI tag after trying for 'none' then you really make it hard to not match some pure Python wheel that works with some version of Python 3 (BTW the only ABI tags not 'none' for 'py3' are cp27m, release, b, none1, py2, and sf across 11 projects on PyPI; there are no 'py36' wheels that don't have 'none' as the ABI).

Is that what you're after? Wildcarding on C ABIs is probably too much trouble beyond abi3 and checking older Python versions.

-Brett
 

Paul
--
Distutils-SIG mailing list -- distutils-sig@python.org
To unsubscribe send an email to distutils-sig-leave@python.org
https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
Message archived at https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/HU2K3CEZPJF7SWRMPGZ5NCULMZIB65NO/