A python versioning scheme for modules, patches, softwares etc.

Robert Kern robert.kern at gmail.com
Tue Feb 17 18:31:00 CET 2009

On 2009-02-17 11:16, kretel wrote:
> There exist a number of versioning schemes to keep track of software
> version. Each developer certainly have it's own style and preferred
> scheme. However, I am wonder if there is a specific versioning scheme
> for python modules.

A number of Python tools that manipulate Python packages use the version number 
parsing code in distutils.version, so it would be a good idea to use version 
numbers it can parse. From the docstring of the StrictVersion class in that module:

     """Version numbering for anal retentives and software idealists.
     Implements the standard interface for version number classes as
     described above.  A version number consists of two or three
     dot-separated numeric components, with an optional "pre-release" tag
     on the end.  The pre-release tag consists of the letter 'a' or 'b'
     followed by a number.  If the numeric components of two version
     numbers are equal, then one with a pre-release tag will always
     be deemed earlier (lesser) than one without.

     The following are valid version numbers (shown in the order that
     would be obtained by sorting according to the supplied cmp function):

         0.4       0.4.0  (these two are equivalent)

     The following are examples of invalid version numbers:


     The rationale for this version numbering system will be explained
     in the distutils documentation.

You probably want to do release candidates, too, and the "1.3c4" format is 
really quite useful for that. In reality, people usually use LooseVersion from 
that module to parse version numbers, and it will accept "1.3c4". But it also 
accepts a whole lot of version number formats that I would not recommend that 
you use.

Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco

More information about the Python-list mailing list