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