[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Daniel Holth
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 wrote: > Broad question: is there a sense in which the same “resolver” logic could > be used for both

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Donald Stufft
> On Aug 30, 2018, at 3:07 PM, Daniel Holth wrote: > > Package version resolution is a completely different and np-complete problem. > https://en.wikipedia.org/wiki/Boolean_satisfiability_problem > They are related in the sense

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Donald Stufft
> On Aug 30, 2018, at 1:59 PM, Nathaniel Smith wrote: > > That's the theory, but I think these tags are useless in practice. > > If you're on py35 and pip sees a wheel with py36 as the tag, then it falls > back to building from the sdist. For ABI-related tags this makes sense, > because

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Nick Coghlan
On Thu, 30 Aug 2018 at 09:58, Brett Cannon wrote: > On Wed, 29 Aug 2018 at 15:54 Nathaniel Smith wrote: >> This is a tricky decision. Any time a new Python comes out, some >> existing wheels will continue to work fine, and some will be broken. >> One goal is to avoid installing broken wheels.

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Nathaniel Smith
On Thu, Aug 30, 2018, 08:23 Nick Coghlan wrote: > On Thu, 30 Aug 2018 at 09:58, Brett Cannon wrote: > > On Wed, 29 Aug 2018 at 15:54 Nathaniel Smith wrote: > >> This is a tricky decision. Any time a new Python comes out, some > >> existing wheels will continue to work fine, and some will be

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Chris Jerdonek
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

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Brett Cannon
So based on all of this, here is my proposal of what the compatible tags should become (in priority order from most to least strict). In the list below yellow means the value changed compared to the previous tag, blue means it's something I'm proposing to add, and red is something I'm proposing to

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Daniel Holth
It's not an intuitive system. We have wheel tags to choose the best alternative wheel or fall back to sdist. So py3-none-any is fine for f-strings if no other candidate wheel (a list of all available wheels for the same version number of a package) has been compiled to not require f-strings. The

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Paul Moore
On Thu, 30 Aug 2018 at 19:30, Donald Stufft 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 >

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Daniel Holth
As far as I know no one has released a compiler that turns f-strings into not-f-strings. If something like that existed, then you could have two wheels for the same software, one that had been passed through the compiler to remove f-strings and gain compatibility with older Python. If you were

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Nathaniel Smith
If we're going to rethink this, then I would really like to move away from assigning special meaning to specific combinations of tags. The thing where if you use cp36m as you Python ABI tag then you're forced to use cp36 as your python dialect tag doesn't make sense. And the thing where if you

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Donald Stufft
> On Aug 30, 2018, at 9:05 PM, Brett Cannon wrote: > > Basically I'm trying to figure out what tags pip and various tools should be > matching when determining what wheel to download from PyPI (so that diff is > what pip matches against now in two scenarios and how I think what is matched >

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Brett Cannon
On Thu, 30 Aug 2018 at 11:41 Paul Moore wrote: > On Thu, 30 Aug 2018 at 19:30, Donald Stufft 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

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Brett Cannon
On Thu, 30 Aug 2018 at 11:29 Donald Stufft wrote: > > > On Aug 30, 2018, at 1:59 PM, Nathaniel Smith wrote: > > That's the theory, but I think these tags are useless in practice. > > If you're on py35 and pip sees a wheel with py36 as the tag, then it falls > back to building from the sdist.

[Distutils] Re: Three clarification questions about PEP 425 and PyPy3

2018-08-30 Thread Brett Cannon
On Thu, 30 Aug 2018 at 18:08 Donald Stufft wrote: > > On Aug 30, 2018, at 9:05 PM, Brett Cannon wrote: > > Basically I'm trying to figure out what tags pip and various tools should > be matching when determining what wheel to download from PyPI (so that diff > is what pip matches against now in