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 | Provenance | Actions |
|---|---|---|---|---|
| cmp_version-3.0.0.tar.gz | 20.5 kB | Without provenance | Details for cmp_version-3.0.0.tar.gz |
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 |
Security for cmp_version 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.