Parse, compare, bump, and validate semantic version strings
Project description
philiprehberger-semver
Parse, compare, bump, and validate semantic version strings.
Installation
pip install philiprehberger-semver
Usage
from philiprehberger_semver import parse, bump, compare, satisfies, is_valid, sort_versions, next_pre, latest, latest_stable
Parsing
v = parse("1.2.3-beta.1+build.42")
v.major # 1
v.minor # 2
v.patch # 3
v.pre # "beta.1"
v.build # "build.42"
str(v) # "1.2.3-beta.1+build.42"
A leading v prefix is accepted:
parse("v2.0.0") # Version(major=2, minor=0, patch=0)
Bumping
bump("1.2.3", "major") # "2.0.0"
bump("1.2.3", "minor") # "1.3.0"
bump("1.2.3", "patch") # "1.2.4"
Comparing
compare("1.2.3", "1.3.0") # -1
compare("2.0.0", "2.0.0") # 0
compare("3.0.0", "2.9.9") # 1
Range matching
satisfies("1.5.0", ">=1.0.0 <2.0.0") # True
satisfies("1.2.5", "^1.2.3") # True (>=1.2.3 <2.0.0)
satisfies("1.2.5", "~1.2.3") # True (>=1.2.3 <1.3.0)
satisfies("1.3.0", "~1.2.3") # False
Validation
is_valid("1.2.3") # True
is_valid("not-a-version") # False
Sorting
sort_versions(["2.0.0", "1.0.0", "1.1.0"]) # ["1.0.0", "1.1.0", "2.0.0"]
Range expansion
Get the lower (inclusive) and upper (exclusive) bounds of a range:
from philiprehberger_semver import expand_range
expand_range("^1.2.3") # (Version(1,2,3), Version(2,0,0))
expand_range("~1.2.3") # (Version(1,2,3), Version(1,3,0))
expand_range(">=1.0.0") # (Version(1,0,0), None)
expand_range(">=1 <2") # (Version(1,0,0), Version(2,0,0))
Pre-release generation
next_pre("1.2.3") # "1.2.4-rc.1"
next_pre("1.2.4-rc.1") # "1.2.4-rc.2"
next_pre("1.2.3", "beta") # "1.2.4-beta.1"
Finding the latest version
from philiprehberger_semver import latest, latest_stable
latest(["1.0.0", "2.0.0", "1.5.0"]) # Version(2, 0, 0)
latest([]) # None
latest_stable(["1.0.0", "2.0.0-rc1", "1.5.0"]) # Version(1, 5, 0)
latest_stable(["2.0.0-rc1", "2.0.0-rc2"]) # None
API
| Function | Description |
|---|---|
parse(version) |
Parse a semver string into a Version object |
bump(version, part) |
Bump major, minor, or patch and return the new version string |
compare(a, b) |
Compare two version strings, returns -1, 0, or 1 |
satisfies(version, range_str) |
Check if a version satisfies a range (>=, <, ^, ~) |
is_valid(version) |
Check if a string is valid semver |
sort_versions(versions) |
Sort a list of version strings in ascending order |
next_pre(version, prefix) |
Generate the next pre-release version string |
expand_range(range_str) |
Return (lower_inclusive, upper_exclusive) bounds of a range |
latest(versions) |
Return the highest Version from an iterable, or None if empty |
latest_stable(versions) |
Return the highest non-prerelease Version, or None if none exist |
Development
pip install -e .
python -m pytest tests/ -v
Support
If you find this project useful:
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
philiprehberger_semver-0.3.0.tar.gz
(184.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file philiprehberger_semver-0.3.0.tar.gz.
File metadata
- Download URL: philiprehberger_semver-0.3.0.tar.gz
- Upload date:
- Size: 184.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bcef1618559ef5d4b0eea3a8c933d3cbe356dea53d3571f3650a726881874b4
|
|
| MD5 |
b216399b9614ea88f5ebbe0dee48c832
|
|
| BLAKE2b-256 |
5818cc6ed113a3adf1f7ab95797a4dd1de05942cdde64968ba51157bad0122c7
|
File details
Details for the file philiprehberger_semver-0.3.0-py3-none-any.whl.
File metadata
- Download URL: philiprehberger_semver-0.3.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef38c99204f76322d401370121651cb8673cae91d963f71e3eb8a8b380dfe104
|
|
| MD5 |
f1a687731da05b91d77dce50aa8b1d08
|
|
| BLAKE2b-256 |
cbdbc7e0c43188b243e4e4b16fe759a066b40ce3ff09b326199e59419c3da713
|