Version Number Comparison Function

Robert Kern rkern at ucsd.edu
Fri Mar 25 12:03:26 EST 2005


[Pardon the piggybacking. My news-server does not see the OP's message.]

Fredrik Lundh wrote:
> "Keith" wrote:
> 
> 
>>Is there a function for comparing version numbers?
>>
>>E.g.
>>
>>0.1.0 < 0.1.2
>>1.876b < 1.876c
>>3.2.2 < 3.4

distutils has a set of version classes with comparisons.

In [1]:from distutils import version

In [2]:version?
Type:           module
Base Class:     <type 'module'>
String Form:    <module 'distutils.version' from 
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/distutils/version.pyc'>
Namespace:      Interactive
File: 
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/distutils/version.py
Docstring:
     Provides classes to represent module version numbers (one class for
     each style of version numbering).  There are currently two such classes
     implemented: StrictVersion and LooseVersion.

     Every version number class implements the following interface:
       * the 'parse' method takes a string and parses it to some internal
         representation; if the string is an invalid version number,
         'parse' raises a ValueError exception
       * the class constructor takes an optional string argument which,
         if supplied, is passed to 'parse'
       * __str__ reconstructs the string that was passed to 'parse' (or
         an equivalent string -- ie. one that will generate an equivalent
         version number instance)
       * __repr__ generates Python code to recreate the version number 
instance
       * __cmp__ compares the current instance with either another instance
         of the same class or a string (which will be parsed to an instance
         of the same class, thus must follow the same rules)



-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter



More information about the Python-list mailing list