[Distutils] Review of latest draft of PEP 426 (Python package etadata v1.3)

Nick Coghlan ncoghlan at gmail.com
Wed Jan 30 11:19:20 CET 2013

On Wed, Jan 30, 2013 at 3:02 AM, Daniel Holth <dholth at gmail.com> wrote:
> Version-Scheme (optional)
> :::::::::::::::::::::::::
> A string specifying the sorting method for this distribution's version
> numbers.  Although straightforward version numbers tend to sort the same in
> each scheme, there is disagreement about how to sort patch releases and
> versions having alphanumeric components such as "1.0.0rc2" and "1.0.0pre3".
>     Version-Scheme: pkg_resources
>     Version-Scheme: pep386
> The two initially supported schemes are:
> * pkg_resources: sort versions compatibly with setuptools' pkg_resources
> module
> * pep386: sort according to the rules in pep386

I'm happy with these two options. The core problem that needs to be
resolved relative to metadata v1.2 is that there are existing projects
where the PEP 386 scheme gets pre-release ordering subtly wrong
relative to what the project wants, but pkg_resources gets it right.
The fact that the "pkg_resources" scheme is implementation defined is
also OK by me - this is a transitional hack to let people currently
relying on the way setuptools handles version sorting to explicitly
request that behaviour if they need it, rather than having PEP 386
version numbering compliance as a hard barrier to the adoption of the
new metadata format. (Yes, I'm aware this means that distlib et al
will likely need to rely on pkg_resources, or at least a copy of
pkg_resources.parse_version(), in order to support packages that
request this version comparison method).

For most packages which use much simpler version numbering, it won't
matter which scheme you use, you'll get the same sort order. That
means projects with simple numbering and any new projects should be
able to just use PEP 386.

I'm also happy with the idea that adding new schemes, or changing the
default scheme, will require a new version of the metadata. Neither of
those changes is one we should make lightly.

The one missing piece is that "Version-Scheme: pep386" needs to be
explicitly identified as the default behaviour if no Version-Scheme
field is present (as well as the cosmetic fix to get the
Version-Scheme examples to display correctly).


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Distutils-SIG mailing list