hatch-semver

Hatch plugin for semver versioning scheme


Keywords
development, hatch, plugin, version, versioning, python, semver
License
MIT
Install
pip install hatch-semver==2.0.1

Documentation

hatch-semver

A plugin for hatch to support semantic versioning. Hatch-semver relies on python-semver for all the versioning logic.

Setup

Introduce hatch-semver as a build-dependency to your project (in your pyproject.toml):

[build-system]
requires = [
    "hatchling",
    "hatch-semver",
]
build-backend = "hatchling.build"

Further down in pyproject.toml, where you set up the hatch version command, set version scheme to semver:

[tool.hatch.version]
path = "src/<your_project>/__about__.py"
validate-bump = true
scheme = "semver"

Beware

Hatch-semver plugin will only work with project versions which can be readily parsed by python-semver. Therefore, if you are introducing hatch-semver into an existing project, you must make sure that the project's current version is a valid semantic version. You can test that here.

Quick Start

Many of hatch's standard versioning commands also work for hatch-semver to bump your project's version in a semver-compliant way. Such command is written as a single string of comma-separated bump instructions as a positional argument of the hatch version subcommand, i.e hatch version <COMMAND>.

Starting with 0.1.0 as the original version, here is a series of example commands which illustrate some common ways how to bump the version:

Old Version Command New Version
0.1.0 patch 0.1.1
0.1.1 minor,patch,patch 0.2.2
0.2.2 minor 0.3.0
0.3.0 rc 0.3.1-rc.1
0.3.1-rc.1 rc 0.3.1-rc.2
0.3.1-rc.2 release 0.3.1
0.3.1 0.9.5 0.9.5
0.9.5 major,rc 1.0.0-rc.1
1.0.0-rc.1 release 1.0.0

See the command reference for all the commands in full detail. If you are familiar with hatch's standard versioning scheme, perhaps a comparison of the standard scheme and hatch-semver will be of interest.