Skip to content

Managing Versions

How versions work

Every package carries a .devN suffix between releases. uvr release strips .devN to produce the published version. After release, CI bumps to the next patch .dev0.

1.3.0.dev0  →  release  →  1.3.0  →  CI bumps  →  1.3.1.dev0

Bump changed packages

bash
uvr bump --minor

By default, uvr bump only targets packages with changes since their last release. It writes new versions to pyproject.toml, updates internal dependency pins in downstream packages, and syncs the lockfile.

Bump specific packages

bash
uvr bump --packages pkg-alpha pkg-beta --major

If other packages also have unreleased changes, uvr errors to prevent accidental partial bumps. Override with --force.

bash
uvr bump --packages pkg-alpha --major --force

Skip dependency pinning

bash
uvr bump --packages pkg-alpha --minor --no-pin

By default, bumping a package updates >= pins in downstream dependents. The --no-pin flag skips this.

Bump types

FlagExampleDescription
--major1.2.3.dev02.0.0.dev0Next major version
--minor1.2.3.dev01.3.0.dev0Next minor version
--patch1.2.3.dev01.2.4.dev0Next patch version
--alpha1.3.0.dev01.3.0a0.dev0Enter alpha pre-release cycle
--beta1.3.0a2.dev01.3.0b0.dev0Enter beta pre-release cycle
--rc1.3.0b1.dev01.3.0rc0.dev0Enter release candidate cycle
--post1.3.0.dev01.3.0.post0.dev0Enter post-release cycle
--dev1.3.0.dev01.3.0.dev1Increment the dev number
--stable1.3.0a2.dev01.3.0.dev0Strip pre-release markers

Repeating the same pre-release type increments it. --alpha twice goes 1.0.0a0.dev01.0.0a1.dev0.

Pre-release workflow

bash
uvr bump --minor                  # 1.3.0.dev0
uvr bump --alpha                  # 1.3.0a0.dev0
uvr release                       # publishes 1.3.0a0, CI bumps to 1.3.0a1.dev0
uvr bump --alpha                  # 1.3.0a2.dev0
uvr release                       # publishes 1.3.0a2, CI bumps to 1.3.0a3.dev0
uvr bump --beta                   # 1.3.0b0.dev0
uvr release                       # publishes 1.3.0b0, CI bumps to 1.3.0b1.dev0
uvr bump --stable                 # 1.3.0.dev0
uvr release                       # publishes 1.3.0, CI bumps to 1.3.1.dev0

Tag formats

uvr creates two kinds of tags.

Release tags mark published versions. Format {package}/v{version}.

pkg-alpha/v1.3.0

Baseline tags mark where the next dev cycle begins. Format {package}/v{version}-base.

pkg-alpha/v1.3.1.dev0-base

Change detection compares HEAD against the baseline tag. If no baseline exists, the package is treated as new.


Under the hood. Bump | Change Detection