Skip to content

Versioning


Configuration

When the version is not statically set, configuration is defined in the tool.hatch.version table. The source option determines the source to use for retrieving and updating the version. The regex source is used by default.

The regex source requires an option path that represents a relative path to a file containing the project's version:

[tool.hatch.version]
path = "src/hatch_demo/__about__.py"
[version]
path = "src/hatch_demo/__about__.py"

The default pattern looks for a variable named __version__ or VERSION that is set to a string containing the version, optionally prefixed with the lowercase letter v.

If this doesn't reflect how you store the version, you can define a different regular expression using the pattern option:

[tool.hatch.version]
path = "pkg/__init__.py"
pattern = "BUILD = 'b(?P<version>[^']+)'"
[version]
path = "pkg/__init__.py"
pattern = "BUILD = 'b(?P<version>[^']+)'"

The pattern must have a named group called version that represents the version.

Display

Invoking the version command without any arguments will display the current version of the project:

$ hatch version
0.0.1

Updating

You can update the version like so:

$ hatch version "0.1.0"
Old: 0.0.1
New: 0.1.0

The scheme option determines the scheme to use for parsing both the existing and new versions. The standard scheme is used by default, which is based on PEP 440.

Rather than setting the version explicitly, you can select the name of a segment used to increment the version:

$ hatch version minor
Old: 0.1.0
New: 0.2.0

You can chain multiple segment updates with a comma. For example, if you wanted to release a preview of your project's first major version, you could do:

$ hatch version major,rc
Old: 0.2.0
New: 1.0.0rc0

When you want to release the final version, you would do:

$ hatch version release
Old: 1.0.0rc0
New: 1.0.0

Supported segments

Here are the supported segments and how they would influence an existing version of 1.0.0:

Segments New version
release 1.0.0
major 2.0.0
minor 1.1.0
micro
patch
fix
1.0.1
a
alpha
1.0.0a0
b
beta
1.0.0b0
c
rc
pre
preview
1.0.0rc0
r
rev
post
1.0.0.post0
dev 1.0.0.dev0