semaver

Semantic Versioning Helper for Python


License
MIT
Install
pip install semaver==0.2.1

Documentation

SemaVer

SemaVer is a simple library for Python that helps to work with versions using semantic versioning notation.

Build status

Build Status Coverage

Requirements

Python >=3.5

Installation

pip install semaver

Usage

Version objects

To create a version object, instantiate the Version class and pass version identifier as a first constructor's argument:

from semaver import Version

v1_0_0 = Version('1.0.0')

Valid version identifiers can be found at semver.org. Please note that currently SemaVer does not support pre-release and [build metadata] specs.

All non-specified parts of the version identifier counts as zeroes, i. e. '1' == '1.0' == '1.0.0'.

Compare versions

You may compare versions using regular Python comparison operators:

from semaver import Version

v1_0 = Version('1.0')
v1_0_0 = Version('1.0.0')
v1_0_1 = Version('1.0.1')

assert v1_0 == v1_0_0  # True
assert v1_0 != v1_0_0  # False

assert v1_0 < v1_0_1  # True
assert v1_0 <= v1_0_1  # True
assert v1_0 > v1_0_1  # False
assert v1_0 >= v1_0_1  # False

# Or using plain strings

assert v1_0 == '1'  # True
assert v1_0 == '1.0'  # True
assert v1_0 == '1.0.0'  # True

Adding and subtracting versions

from semaver import Version

print(Version('1.0.0') + Version('0.1.1'))  # '1.1.1'
from semaver import Version

print(Version('2.0.1') - Version('1.0.1'))  # '1.0.0'

Version range objects

Instance of VersionRange represents a version range. First argument of the constructor is a version range identifier.

from semaver import VersionRange

VersionRange('1.x')

Following formats are supported.

For example, each item of the following list shows equal version range identifiers:

  • 1.x, 1.*, ^1, >=1,<2.
  • ^1.1, >=1.1,<2.
  • 1.0.x, 1.0.*, ~1, ~1.0.

Checking if a version is in a range

from semaver import Version, VersionRange

v1_2_3 = Version('1.2.3')
v1_x = VersionRange('1.x')
v2_x = VersionRange('2.x')

assert v1_2_3 in v1_x  # True
assert v1_2_3 in v2_x  # False

# Or using plain strings

assert '1.2.3' in v1_x  # True
assert '1.2.3' in v2_x  # False

Checking if a range is in a range

from semaver import VersionRange

v1_to_3 = VersionRange('>=1,<=3')
v2_x = VersionRange('2.x')

assert v2_x in v1_to_3  # True
assert v1_to_3 in v2_x  # False

# Or using plain strings

assert '2.x' in v1_to_3  # True
assert '>=1,<=3' in v2_x  # False

Testing

tox

Contributing

See the CONTRIBUTING.md file for details.

Changelog

See the CHANGELOG.md file for details.

Support

If you have any issues or enhancement proposals feel free to report them via project's Issue Tracker.

Authors

License

This project is licensed under the MIT License. See the LICENSE.md file for details.