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

K

kretel

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.

Regards,
Krzysztof
 
R

Robert Kern

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)
0.4.1
0.5a1
0.5b3
0.5
0.9.6
1.0
1.0.4a3
1.0.4b1
1.0.4

The following are examples of invalid version numbers:

1
2.7.2.2
1.3.a4
1.3pl1
1.3c4

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
 
K

kretel

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)
         0.4.1
         0.5a1
         0.5b3
         0.5
         0.9.6
         1.0
         1.0.4a3
         1.0.4b1
         1.0.4

     The following are examples of invalid version numbers:

         1
         2.7.2.2
         1.3.a4
         1.3pl1
         1.3c4

     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

Thanks for pointing this out.


Krzysztof
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top