Skip to main content

Simple semver utilities for Python.

Project description

easysemver

This package provides utilities for comparing SemVer versions, with special attention on the correct treatment of prerelease parts.

Installation

easysemver can be installed from PyPI:

pip install easysemver

Usage

Before versions can be compared, they must be converted into Version objects. If the version is not valid SemVer, a TypeError will be raised.

from easysemver import Version

# Not a valid SemVer version, so raises TypeError
version = Version("20230809-1")
# Create a SemVer version
version = Version("1.2.3")
# Prerelease and build parts are supported
version = Version("1.2.3-alpha.0+abcdefg")

# Comparing versions respects prerelease parts
#   The following all resolve to True
Version("1.2.3") < Version("1.2.4")
Version("1.2.3") < Version("2.0.0")
Version("1.2.3") < Version("1.2.4-alpha.0")
Version("1.2.3-alpha.0") < Version("1.2.3")
#   Prerelease parts that are all digits are compared as numbers
Version("1.2.3-alpha.0") < Version("1.2.3-alpha.100")
#   Prerelease parts that are strings are compared as strings
Version("1.2.3-alpha.0") < Version("1.2.3-beta.0")
#   Note that build parts don't affect comparison
Version("1.2.3") == Version("1.2.3+abcdefg")

Versions can also be compared to a SemVer range, which consists of a number of constraints separated by commas. Similar to Version, a TypeError will be raised if the constraints are not valid.

The supported constraints are SemVer versions with an operator, where the supported operators are ==, !=, >=, >, <= and <.

from easysemver import Range, Version

# Resolves to True
Version("1.2.3") in Range(">=1.0.0,<2.0.0")
# Resolves to False
Version("1.2.3") in Range(">=2.0.0")
# Prerelease versions are only considered part of a range if the lower bound includes a prerelease part
#   Resolves to False
Version("1.2.3-alpha.0") in Range(">=1.0.0")
#   Resolves to True
Version("1.2.3-alpha.0") in Range(">=1.0.0-0")
# Specific versions can be exclulded
#   Resolves to False
Version("1.2.3") in Range(">=1.0.0,<2.0.0,!=1.2.3")
#   Resolves to True
Version("1.2.4") in Range(">=1.0.0,<2.0.0,!=1.2.3")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easysemver-0.2.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

easysemver-0.2.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file easysemver-0.2.0.tar.gz.

File metadata

  • Download URL: easysemver-0.2.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for easysemver-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a62985b65993beec3b8b41154a31c34a49f360c2464dceaff1ac9b007242a7cd
MD5 6f57386993c205aa88f2951812bd3c47
BLAKE2b-256 938dd2a02fb567fb1e0ff47531f726be1e8a72d4e386f9ee04c7e5ac417c5b30

See more details on using hashes here.

File details

Details for the file easysemver-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: easysemver-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for easysemver-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fd25a79dff01085ea11a5364395a080c5e2d94b2369e6312da0f738c6030307
MD5 6537da7cecdc4d111c8841ca79ce98e8
BLAKE2b-256 4c906834f671582847987a74ab0cd2a35f3cdfbba6e24d7e803fca4dbd9b8f83

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page