[Distutils] [Python-Dev] [Python-checkins] peps: PEP 426: replace implied 'version starts with' with new ~= operator

Daniel Holth dholth at gmail.com
Tue Feb 26 21:06:18 CET 2013


On Tue, Feb 26, 2013 at 2:53 PM, Chris Jerdonek
<chris.jerdonek at gmail.com> wrote:
> On Tue, Feb 26, 2013 at 8:01 AM, Donald Stufft <donald.stufft at gmail.com> wrote:
>> On Tuesday, February 26, 2013 at 10:10 AM, Nick Coghlan wrote:
>>
>> Remember, part of the goals of both PEP 386 and PEP 426 is to tighten
>> up cases where setuptools is considered too permissive, because it's
>> guessing in the face of ambiguity. "Trailing zeroes should be
>> considered implied" when comparing versions is one such guess.
>>
>> It goes against the common usage in the Python community.
>>
>> * 135869 total releases
>> * 66528 total releases that have at least 3 version levels (A.B.C)
>> * 20244 total releases that have at least 3 version levels where A.B and
>>   A.B.0 appear to be equivalent[1].
>> * 86 total releases using at least 3 version levels where A.B and A.B.0
>> appear
>>   to be different[2].
>>
>> Would break the assumptions made in ~30% of the releases using at least 3
>> version levels, or 15% of all releases. Furthermore A.B == A.B.0 being
>> equivalent is a matter of opinion with no clear answer. I would be inclined
>> to say that not breaking it for the 15% of all releases is a greater net
>> benefit here then anyones notion of "right" unless there is a clear benefit.
>>
>> For what it's worth, the implementation of PEP386 treats them as equal as
>> well,
>> choosing to pad the shorter one out to whatever the requisite number of 0's
>> is required to make the number of components equal.
>>
>> On a tangential note PyPI should probably not be allowing you to upload both
>> a A.B and an A.B.0, or at the very least if we want PyPI to continue
>> allowing
>> it then we need to be explicit about how that should be handled in either
>> scheme.
>
> There is a similar issue with leading zeroes.  For example, I was able
> to upload to PyPI versions both of the form A.B.2 and A.B.02.  The PEP
> should probably be explicit and state that any N must be the unique
> integer representation, and state how that case should be handled if
> violated (with respect to equality, etc).
>
> Is it easy to check if any releases on PyPI have versions with leading zeroes?
>
> --Chris

We could use an official PyPI normalization for both dist names and
versions. PyPI reportedly at least prohibits dists that differ only in
case.

PEP 427 converts anything that is not a letter or a digit or . into _,
extending the setuptools scheme by allowing Unicode letters and
digits. Unfortunately this is unkind to my favorite dist
https://crate.io/packages/%E2%98%83/ which Donald still hasn't written
any code for.


More information about the Distutils-SIG mailing list