[Distutils] PEP 440 (versioning) nearing completion (I hope)

Nick Coghlan ncoghlan at gmail.com
Tue Jan 28 14:02:02 CET 2014


I just pushed a new draft of PEP 440 live:
http://www.python.org/dev/peps/pep-0440/

Relative to the version I posted just before Christmas, the main
significant change is the inclusion of version epochs as part of the
spec.

In 99.9% of cases, those won't be needed and can be ignored. However,
I'm swayed by the fact that at least Debian and Fedora found them
useful enough to add to their versioning schemes, and they're a
relatively elegant solution to the "How do I switch from date based
versioning to semantic versioning without renaming my project?"
problem.

There are also two clarifications:

- I changed the pseudo-syntax for the release segment from N[.N]+ to
N(.N)* to make it clearer that single value version numbers are
acceptable

- I point out in the rationale section that "-" makes local version
identifiers more readable in isolation, and the existing escaping
rules in PEP 427 take care of converting them to hyphens to avoid
ambiguity in wheel filenames. (Paul, you can consider this a belated
reply to your post from last week...)

With this update, I believe PEP 440 is functionally complete.

However, there are three additional requirements that need to be met
before I'm willing to declare it accepted:

- a reference implementation (I'm hoping Vinay will be willing to step
up to the plate with distlib again on that front)
- rerunning the compatibility analysis against the PyPI of early 2014
- surviving distutils-sig review without too much grumbling or virtual
tomato throwing ;)

I know it's a rather complex spec, but robust and comprehensive
versioning is a rather complex problem :)

Cheers,
Nick.

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


More information about the Distutils-SIG mailing list