All Projects → python-semver → Python Semver

python-semver / Python Semver

Licence: bsd-3-clause
Python package to work with Semantic Versioning (http://semver.org/)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Python Semver

React Native Version
🔢 Version your React Native or Expo app in a `npm version` fashion.
Stars: ✭ 408 (+54.55%)
Mutual labels:  versioning, release, semver, semantic-versioning
next-ver
Tells you the next semantic version for your local package
Stars: ✭ 27 (-89.77%)
Mutual labels:  semver, version, semantic-versioning, release
Version
Represent and compare versions via semantic versioning (SemVer) in Swift
Stars: ✭ 160 (-39.39%)
Mutual labels:  versioning, version, semver, semantic-versioning
perfekt
Release, changelog and version your packages with perfe(k)t 👌 ease!
Stars: ✭ 15 (-94.32%)
Mutual labels:  semver, versioning, version, release
zerover
0️⃣ Minimalist versioning scheme for devs who can't be bothered.
Stars: ✭ 141 (-46.59%)
Mutual labels:  semver, versioning, version
Cli
🆑📍 Setup automated semver compliant package publishing
Stars: ✭ 272 (+3.03%)
Mutual labels:  version, release, semver
Axion Release Plugin
Gradle release & version management plugin.
Stars: ✭ 372 (+40.91%)
Mutual labels:  versioning, release, semantic-versioning
Semantic Release
📦🚀 Fully automated version management and package publishing
Stars: ✭ 14,364 (+5340.91%)
Mutual labels:  version, release, semver
Standard Version
🏆 Automate versioning and CHANGELOG generation, with semver.org and conventionalcommits.org
Stars: ✭ 5,806 (+2099.24%)
Mutual labels:  versioning, version, release
Reckon
Infer a project's version from your Git repository.
Stars: ✭ 124 (-53.03%)
Mutual labels:  versioning, version, semver
Grabver
Gradle Automatic Build Versioning Plugin - An easy Gradle plugin that follows semver.org rules to automatically generate the Patch version, Build number and Code version, while Major, Minor and Pre-Release suffix remain under our control.
Stars: ✭ 39 (-85.23%)
Mutual labels:  versioning, version, semver
Semver
Semantic versioning helper library for PHP
Stars: ✭ 144 (-45.45%)
Mutual labels:  versioning, semver, semantic-versioning
Shipjs
Take control of what is going to be your next release.
Stars: ✭ 668 (+153.03%)
Mutual labels:  versioning, release, semver
Semver.c
Semantic version library written in ANSI C
Stars: ✭ 147 (-44.32%)
Mutual labels:  versioning, version, semver
gradle-versioner
Gradle Version Plugin. Generates semantic versions with git meta data per branch.
Stars: ✭ 25 (-90.53%)
Mutual labels:  semver, semantic-versioning
glare
gracefully download (latest) releases from GitHub
Stars: ✭ 64 (-75.76%)
Mutual labels:  semver, release
change
A simple tool that automates generating and updating a changelog
Stars: ✭ 47 (-82.2%)
Mutual labels:  semver, release
versiontag
Bash command to automate tag semantic versioning
Stars: ✭ 40 (-84.85%)
Mutual labels:  versioning, semantic-versioning
dotnet-version-cli
dotnet version cli (similar to npm version cli)
Stars: ✭ 30 (-88.64%)
Mutual labels:  versioning, version
exec
🐚 semantic-release plugin to execute custom shell commands
Stars: ✭ 94 (-64.39%)
Mutual labels:  version, release

.. warning::

This is a development version. Do NOT use it in production before the final 3.0.0 is released.

Quickstart

.. teaser-begin

A Python module for semantic versioning_. Simplifies comparing versions.

|GHAction| |python-support| |downloads| |license| |docs| |black| |openissues| |GHDiscussion|

.. teaser-end

.. note::

This project works for Python 3.6 and greater only. If you are looking for a compatible version for Python 2, use the maintenance branch |MAINT|_.

The last version of semver which supports Python 2.7 to 3.5 will be 2.x.y However, keep in mind, the major 2 release is frozen: no new features nor backports will be integrated.

We recommend to upgrade your workflow to Python 3.x to gain support, bugfixes, and new features.

.. |MAINT| replace:: maint/v2 .. _MAINT: https://github.com/python-semver/python-semver/tree/maint/v2

The module follows the MAJOR.MINOR.PATCH style:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards compatible manner, and
  • PATCH version when you make backwards compatible bug fixes.

Additional labels for pre-release and build metadata are supported.

To import this library, use:

.. code-block:: python

>>> import semver

Working with the library is quite straightforward. To turn a version string into the different parts, use the semver.Version.parse function:

.. code-block:: python

>>> ver = semver.Version.parse('1.2.3-pre.2+build.4')
>>> ver.major
1
>>> ver.minor
2
>>> ver.patch
3
>>> ver.prerelease
'pre.2'
>>> ver.build
'build.4'

To raise parts of a version, there are a couple of functions available for you. The function semver.Version.bump_major leaves the original object untouched, but returns a new semver.Version instance with the raised major part:

.. code-block:: python

>>> ver = semver.Version.parse("3.4.5")
>>> ver.bump_major()
Version(major=4, minor=0, patch=0, prerelease=None, build=None)

It is allowed to concatenate different "bump functions":

.. code-block:: python

>>> ver.bump_major().bump_minor()
Version(major=4, minor=1, patch=0, prerelease=None, build=None)

To compare two versions, semver provides the semver.compare function. The return value indicates the relationship between the first and second version:

.. code-block:: python

>>> semver.compare("1.0.0", "2.0.0")
-1
>>> semver.compare("2.0.0", "1.0.0")
1
>>> semver.compare("2.0.0", "2.0.0")
0

There are other functions to discover. Read on!

.. |latest-version| image:: https://img.shields.io/pypi/v/semver.svg :alt: Latest version on PyPI :target: https://pypi.org/project/semver .. |python-support| image:: https://img.shields.io/pypi/pyversions/semver.svg :target: https://pypi.org/project/semver :alt: Python versions .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg :alt: Monthly downloads from PyPI :target: https://pypi.org/project/semver .. |license| image:: https://img.shields.io/pypi/l/semver.svg :alt: Software license :target: https://github.com/python-semver/python-semver/blob/master/LICENSE.txt .. |docs| image:: https://readthedocs.org/projects/python-semver/badge/?version=latest :target: http://python-semver.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. _semantic versioning: http://semver.org/ .. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: Black Formatter .. |Gitter| image:: https://badges.gitter.im/python-semver/community.svg :target: https://gitter.im/python-semver/community :alt: Gitter .. |openissues| image:: http://isitmaintained.com/badge/open/python-semver/python-semver.svg :target: http://isitmaintained.com/project/python-semver/python-semver :alt: Percentage of open issues .. |GHAction| image:: https://github.com/python-semver/python-semver/workflows/Python/badge.svg :alt: Python .. |GHDiscussion| image:: https://shields.io/badge/GitHub-%20Discussions-green?logo=github :target: https://github.com/python-semver/python-semver/discussions :alt: GitHub Discussion

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].