Configuration
All uvr configuration lives in your root pyproject.toml under [tool.uvr.*] tables.
Filter packages
By default, all workspace members are included. Use include or exclude to control which packages participate in releases.
uvr workflow config --include pkg-alpha pkg-beta
uvr workflow config --exclude pkg-gamma
uvr workflow config --latest pkg-alpha
uvr workflow config # show current configStored in pyproject.toml.
[tool.uvr.config]
include = ["pkg-alpha", "pkg-beta"]
exclude = ["pkg-gamma"]
latest = "pkg-alpha"exclude is applied after include. Use --remove to remove packages from lists, or --clear to reset everything.
Build runners
By default, every package builds on ubuntu-latest. To build on multiple platforms, assign runners per package.
uvr workflow runners pkg-alpha --add macos-latest windows-latest
uvr workflow runners pkg-alpha --remove windows-latest
uvr workflow runners pkg-alpha --clear
uvr workflow runners # show allStored in pyproject.toml.
[tool.uvr.runners]
pkg-alpha = [["ubuntu-latest"], ["macos-latest"]]Each inner list is a set of runner labels for a single matrix entry. Use multiple labels for composite runners (e.g., ["self-hosted", "linux", "arm64"]).
Publishing
uvr can publish wheels to package indexes after creating GitHub releases. Publishing requires a named index in your pyproject.toml with a publish-url.
[[tool.uv.index]]
name = "pypi"
url = "https://pypi.org/simple/"
publish-url = "https://upload.pypi.org/legacy/"Then configure uvr to use it.
uvr workflow publish --index pypi --environment pypi-publish
uvr workflow publish --trusted-publishing always
uvr workflow publish --exclude pkg-debugStored in pyproject.toml.
[tool.uvr.publish]
index = "pypi" # must match a [[tool.uv.index]] name
environment = "pypi-publish" # GitHub Actions environment
trusted-publishing = "automatic" # "automatic", "always", or "never"
exclude = ["pkg-debug"]The environment field enables trusted publishing (OIDC). No API tokens needed.
Python hooks
Place uvr_hooks.py at your workspace root with a ReleaseHook subclass and uvr discovers it automatically. For a custom path, configure it explicitly.
[tool.uvr.hooks]
file = "scripts/my_hooks.py:MyHook"See Customizing the Pipeline for the full hook API and examples.
Preferred editor
uvr workflow config --editor codeUsed for conflict resolution during uvr workflow init --upgrade.