Skip to main content

Build Status PyPI

Purpose

Provides fast and correct generic version string comparison algorithm.

See libversion repository for more details on the algorithm.

Performance

libversion is 10x to 100x faster than other version comparison facilities widely used in Python world.

Facility

comps/sec

libversion.version_compare

3219.02K

libversion.Version

227.56K

tuple(map(int, (v.split(‘.’))))

206.02K

cmp_version.cmp_version

189.15K

cmp_version.VersionString

156.42K

distutils.version.StrictVersion

75.00K

version.Version

71.39K

distutils.version.LooseVersion

51.38K

pkg_resources.parse_version

22.26K

Correctness

libversion handles certain complex version cases better than other version comparison facilities. Here are some example cases where others fail:

Test case

libversion

tuple

StrictVersion

LooseVersion

parse_version

cmp_version

1.0 = 1.0.0

ok

incorrect (<)

ok

incorrect (<)

ok

ok

1.2_3 = 1.2-3

ok

fail

fail

incorrect (>)

incorrect (<)

ok

1.2.3 = 1.2-3

ok

fail

fail

fail

incorrect (>)

incorrect (<)

1.0alpha1 = 1.0.alpha1

ok

fail

fail

ok

ok

incorrect (>)

1.0rc1 < 1.0

ok

fail

fail

incorrect (>)

ok

incorrect (>)

1.0 < 1.0patch1

ok

fail

fail

ok

incorrect (>)

ok

1.0.2a < 1.0.2g

ok

fail

fail

ok

incorrect (>)

ok

Note: version module was not able to complete any tests as it’s a strict semantic version implementation which require 3 version components. Also, it does not support Python 3 without modification.

Python wrapper features

  • Provides API similar to C library, version_compare(a, b) function

  • Provides more pythonic (but slower) Version class with overloaded comparison operators

Requirements

Example code

from libversion import Version, version_compare

assert(version_compare("0.9", "1.1") < 0)
assert(version_compare("1.0", "1.0.0") == 0)
assert(version_compare("1.1", "0.9") > 0)

assert(Version("0.9") < Version("1.1"))
assert(Version("1.0") ==  Version("1.0.0"))
assert(Version("1.1") > Version("0.9"))

assert(Version("0.999") < Version("1.0alpha1"))
assert(Version("1.0alpha1") < Version("1.0alpha2"))
assert(Version("1.0alpha2") < Version("1.0beta1"))
assert(Version("1.0beta1") < Version("1.0pre1"))
assert(Version("1.0pre1") < Version("1.0rc1"))
assert(Version("1.0rc1") < Version("1.0"))
assert(Version("1.0") < Version("1.0patch1"))

License

MIT license, copyright (c) 2017-2018 Dmitry Marakasov amdmi3@amdmi3.ru.

Metadata

Release files for libversion 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for libversion 0.2.2
File Size Uploaded
libversion-0.2.2.tar.gz 7.8 kB Details

Release files / libversion-0.2.2.tar.gz

Download URL libversion-0.2.2.tar.gz
Size 7.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5778451506cc39f061ebcce5a6569dbffcdebb10b73da2dd741fc376a4e79aa6
BLAKE2b-256 checksum
How to use checksums
52c81b906000833e356ba72a804a4bf0d8e7ae3962d9212c5b3ef0e1e5092f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

This release

0.2.2 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page