On Wed, 29 Aug 2018 at 15:54 Nathaniel Smith <n...@pobox.com> wrote:

> On Wed, Aug 29, 2018 at 10:25 AM, Brett Cannon <br...@python.org> wrote:
> >
> >
> > On Wed, 29 Aug 2018 at 01:56 Nathaniel Smith <n...@pobox.com> wrote:
> >>
> >> On Tue, Aug 28, 2018 at 11:46 AM, Brett Cannon <br...@python.org>
> wrote:
> >> > py36
> >> >
> >> > py36-none-% but not py36-none-any: 2 (example)
> >> >
> >> > py3
> >> >
> >> > py3-none-% but not py3-none-any: 142 (example)
> >>
> >> Oh right, and these ones are totally sensible: this is the correct tag
> >> for a project that ships some vendored shared libraries, and accesses
> >> them using cffi's ABI mode, or through ctypes: it cares about the
> >> CPU/OS ABI, but doesn't use the Python C ABI.
>

What you say below would also suggest that Python 3.7 should support down
to py30-none-% as well.


> >
> >
> > Yep. I was just surprised that py37-none-% wasn't being emitted as
> > acceptable since that technically makes sense.
>
> Setuptools never creates such wheels, so I guess it's not well tested.
> The main reason they exist at all is that Armin Ronacher jumped
> through a bunch of hoops to make it happen in his milksnake [1]
> project, and it's not even a year old.
>
> [1] https://github.com/getsentry/milksnake
>
> > I think figuring out what makes sense in terms of compatibility will be
> the
> > toughest bit. E.g. for Python 3.7, pip will check for py37-none-any down
> to
> > py30-none-any as well as py3-none-any. With python_requires in metadata
> well
> > as the py3 interpreter tag, I'm not sure if it still makes sense to
> > enumerate all the way down to py30, especially when Python doesn't follow
> > strict semver. Maybe for Python 3.7 py37, py3, and py36 makes the most
> sense
> > by assuming code is warning-free in Python 3.6 and so should be
> relatively
> > safe to use in 3.7 with warnings? Otherwise I wouldn't expect e.g. 3.5
> code
> > to work in 3.7 since there's new keywords that old code might break on.
>
> 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. But, there's also
> another consideration: if we're too conservative, then with every
> release we create a bunch of make-work as projects have to re-roll old
> wheels that would have worked fine, and some percentage of projects
> won't do this (e.g. b/c they're abandoned), and we lose them forever.
> Also, for the py3x tags in particular, if the wheel fails on py3(x+1),
> then the sdist probably will too, so it's not like we have any useful
> fallback.
>

Right, but isn't that what the py3-none-any tag is meant to represent? If
someone doesn't use that tag then I would take that as there is some
version-specific stuff in that wheel.


>
> So, it's arguably better to be optimistic and assume that all py3x
> wheels will work on py3(x+k), even if it's sometimes wrong, because
> when we're wrong the failure modes are more acceptable.
>

Quite possibly, but at this point I don't want to take anything for
certain. :) I mean in the end it's just a string coming from a generator so
it's cheap to include, but I just want to make sure we appropriately
justify its inclusion when it's inferred versus specified.
--
Distutils-SIG mailing list -- distutils-sig@python.org
To unsubscribe send an email to distutils-sig-le...@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/YOF2UIHC345KKNWSOXONRQP6FVIWG3RB/

Reply via email to