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.