freshcrate
Skin:/
Home > Frameworks > semantic-version

semantic-version

A library implementing the 'SemVer' scheme.

Why this rank:Strong adoptionRelease freshnessHealthy release cadence

Description

Introduction ============ This small python library provides a few tools to handle `SemVer`_ in Python. It follows strictly the 2.0.0 version of the SemVer scheme. .. image:: https://github.com/rbarrois/python-semanticversion/actions/workflows/test.yml/badge.svg :target: https://github.com/rbarrois/python-semanticversion/actions/workflows/test.yml .. image:: https://img.shields.io/pypi/v/semantic_version.svg :target: https://python-semanticversion.readthedocs.io/en/latest/changelog.html :alt: Latest Version .. image:: https://img.shields.io/pypi/pyversions/semantic_version.svg :target: https://pypi.python.org/pypi/semantic_version/ :alt: Supported Python versions .. image:: https://img.shields.io/pypi/wheel/semantic_version.svg :target: https://pypi.python.org/pypi/semantic_version/ :alt: Wheel status .. image:: https://img.shields.io/pypi/l/semantic_version.svg :target: https://pypi.python.org/pypi/semantic_version/ :alt: License Links ----- - Package on `PyPI`_: https://pypi.org/project/semantic-version/ - Doc on `ReadTheDocs <http://readthedocs.org/>`_: https://python-semanticversion.readthedocs.io/ - Source on `GitHub <http://github.com/>`_: http://github.com/rbarrois/python-semanticversion/ - Build on Github Actions: https://github.com/rbarrois/python-semanticversion/actions - Semantic Version specification: `SemVer`_ Getting started =============== Install the package from `PyPI`_, using pip: .. code-block:: sh pip install semantic-version Or from GitHub: .. code-block:: sh $ git clone git://github.com/rbarrois/python-semanticversion.git Import it in your code: .. code-block:: python import semantic_version This module provides classes to handle semantic versions: - ``Version`` represents a version number (``0.1.1-alpha+build.2012-05-15``) - ``BaseSpec``-derived classes represent requirement specifications (``>=0.1.1,<0.3.0``): - ``SimpleSpec`` describes a natural description syntax - ``NpmSpec`` is used for NPM-style range descriptions. Versions -------- Defining a ``Version`` is quite simple: .. code-block:: pycon >>> import semantic_version >>> v = semantic_version.Version('0.1.1') >>> v.major 0 >>> v.minor 1 >>> v.patch 1 >>> v.prerelease [] >>> v.build [] >>> list(v) [0, 1, 1, [], []] If the provided version string is invalid, a ``ValueError`` will be raised: .. code-block:: pycon >>> semantic_version.Version('0.1') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/rbarrois/dev/semantic_version/src/semantic_version/base.py", line 64, in __init__ major, minor, patch, prerelease, build = self.parse(version_string, partial) File "/Users/rbarrois/dev/semantic_version/src/semantic_version/base.py", line 86, in parse raise ValueError('Invalid version string: %r' % version_string) ValueError: Invalid version string: '0.1' One may also create a ``Version`` with named components: .. code-block:: pycon >>> semantic_version.Version(major=0, minor=1, patch=2) Version('0.1.2') In that case, ``major``, ``minor`` and ``patch`` are mandatory, and must be integers. ``prerelease`` and ``build``, if provided, must be tuples of strings: .. code-block:: pycon >>> semantic_version.Version(major=0, minor=1, patch=2, prerelease=('alpha', '2')) Version('0.1.2-alpha.2') Some user-supplied input might not match the semantic version scheme. For such cases, the ``Version.coerce`` method will try to convert any version-like string into a valid semver version: .. code-block:: pycon >>> Version.coerce('0') Version('0.0.0') >>> Version.coerce('0.1.2.3.4') Version('0.1.2+3.4') >>> Version.coerce('0.1.2a3') Version('0.1.2-a3') Working with versions """"""""""""""""""""" Obviously, versions can be compared: .. code-block:: pycon >>> semantic_version.Version('0.1.1') < semantic_version.Version('0.1.2') True >>> semantic_version.Version('0.1.1') > semantic_version.Version('0.1.1-alpha') True >>> semantic_version.Version('0.1.1') <= semantic_version.Version('0.1.1-alpha') False You can also get a new version that represents a bump in one of the version levels: .. code-block:: pycon >>> v = semantic_version.Version('0.1.1+build') >>> new_v = v.next_major() >>> str(new_v) '1.0.0' >>> v = semantic_version.Version('1.1.1+build') >>> new_v = v.next_minor() >>> str(new_v) '1.2.0' >>> v = semantic_version.Version('1.1.1+build') >>> new_v = v.next_patch() >>> str(new_v) '1.1.2' Requirement specification ------------------------- python-semanticversion provides a couple of ways to describe a range of accepted versions: - The ``SimpleSpec`` class provides a simple, easily understood scheme -- somewhat inspired from PyPI range notations; - The ``NpmSpec`` class supports the whole NPM range spe

Release History

VersionChangesUrgencyDate
2.10.0Imported from PyPI (2.10.0)Low4/21/2026
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
master@2024-04-04Latest activity on master branchLow4/4/2024
2.9.0Tag 2.9.0Low2/6/2022
v2.6.0Tag v2.6.0Low9/25/2016
v2.5.0Tag v2.5.0Low2/12/2016
v2.4.2Tag v2.4.2Low7/2/2015
v2.4.1Tag v2.4.1Low3/31/2015
v2.4.0Tag v2.4.0Low3/31/2015
v2.3.1Tag v2.3.1Low9/23/2014
v2.3.0Tag v2.3.0Low3/16/2014
v2.2.2Tag v2.2.2Low12/23/2013
v2.2.1Tag v2.2.1Low10/29/2013
v2.2.0Tag v2.2.0Low3/22/2013
v2.1.2Tag v2.1.2Low5/22/2012
v2.1.1Tag v2.1.1Low5/22/2012
v2.1.0Tag v2.1.0Low5/22/2012
v2.0.0Tag v2.0.0Low5/21/2012
v1.2.0Tag v1.2.0Low5/17/2012
v1.1.0Tag v1.1.0Low5/17/2012
v1.0.0Tag v1.0.0Low5/17/2012
v1.0.0-betaTag v1.0.0-betaLow5/16/2012

Dependencies & License Audit

Loading dependencies...

Similar Packages

dunamaiDynamic version generation1.26.1
schemathesisProperty-based testing framework for Open API and GraphQL based appsv4.21.1
ctranslate2Fast inference engine for Transformer modelsv4.8.0
cadwynProduction-ready community-driven modern Stripe-like API versioning in FastAPI7.0.0
tqdmFast, Extensible Progress Meterv4.68.1

More in Frameworks

deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of ta
simBuild, deploy, and orchestrate AI agents. Sim is the central intelligence layer for your AI workforce.
ctranslate2Fast inference engine for Transformer models
schemathesisProperty-based testing framework for Open API and GraphQL based apps