Package version resolution is a completely different and np-complete problem. https://en.wikipedia.org/wiki/Boolean_satisfiability_problem

On Thu, Aug 30, 2018 at 2:51 PM Chris Jerdonek <chris.jerdonek@gmail.com> wrote:
Broad question: is there a sense in which the same “resolver” logic could be used for both choosing the best tag, and choosing what versions of packages to install from abstract requirements, or are these fundamentally different paradigms that shouldn’t be thought of along the same lines?

—Chris

On Thu, Aug 30, 2018 at 11:42 AM 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. But I never managed to design a
workable scheme for doing that, so it may not even be possible.

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/
--
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/ZZEHWOFEHILLMNXRHXOHKBB3FQZYQNUY/