cmp_version
A script and python module to compare version numbers. Use this to compare the version strings of packages, modules, really anything.
Since version 3.0, cmp_version supports all kinds of complex version numbers, including those with releases ( like $version-5 ) or Epochs (like 5:$version)
Commandline Tool
You can use the provided cmp-version tool to compare two version strings.
It will print to stdout “-1” if version1 is less/older than version2, “0” if they are equal, and “1” if version1 is greater/newer than version2.
Examples:
$ ./cmp-version 1.0.1b 1.0.1a
1
$ ./cmp-version 1.0.1b 1.0.2
-1
$ ./cmp-version 1.0 1.0.0
0
Comparing Filenames
Without actually scanning the contents of a package, you can from a script compare the versions based on the filenames.
Example:
$ cmp-version glibc-6.2.1-3.x86_64.rpm glibc-6.2.3-1.x86_64.rpm
-1
Method Signature
The cmp_version module provides a single method, cmp_version which compares two versions “cmp” style (think strcmp or the “cmp” operator in python<3).
def cmp_version(version1, version2):
‘’’
cmp_version - Compare two version strings, checking which one represents a “newer” (greater) release.
Note that even if two version strings are not equal string-wise, they may still be equal version-wise (e.x. 1.0.0 is the same version as 1.0)
@param version1 <str> - A version string
@param version2 <str> - A version string
@return <int>
-1 if version1 is older/less than version2
0 if version1 is equal to version2
1 if version1 is newer/greater than version2
So for example,
cmp_version(‘1.0.5b’, ‘1.0.5a’) would return 1 because 1.0.5b comes after 1.0.5a
Special Type
cmp_version provides a special type, “VersionString”, which inherits string. All the comparison magic functions are implemented, such that you can directly compare VersionString objects.
Example:
>>> x = VersionString('0.1b2')>>> y = VersionString('.2b2')>>>>>> '0.1b2' < '.2b2' # Show that as strings this version compare gives wrong answerFalse
>>> x < y # Show that using VersionString objects, the comparison does workTrue
Sorting Lists
You can sort a list of versions, or filenames containing versions etc like this:
>>> from cmp\_version import cmp\_version, VersionString>>>>>> x = ['.9a', '0.9', '0.9.0', '1.2c', '1.1b', '1.b4.0']>>> sorted(x, key=VersionString)[‘0.9’, ‘0.9.0’, ‘.9a’, ‘1.1b’, ‘1.2c’, ‘1.b4.0’]
Return value
0 is returned when the two versions are equal, even if the strings are not equal (for example “1.0” is the same version as “1.0.0”)
-1 is returned when version1 is older/less than version2
1 is returned when version1 is newer/greater than version2.
License
This module is released under Public Domain.
Metadata
Release files for cmp_version 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cmp_version-3.0.0.tar.gz | 20.5 kB | Details |
Release files / cmp_version-3.0.0.tar.gz
| Download URL | cmp_version-3.0.0.tar.gz |
|---|---|
| Size | 20.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a61ff0052f514f9f5d427034b7be8d0eac30d9884aed4bb28f0a14bdaef8f0f
|
|
BLAKE2b-256 checksum How to use checksums |
61d2b79dc36a234554319cb1c346340eaaa162101bfe808ce9d68cf02bb4d7f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |