uvbump (distribution: uvbump-cli)
CLI helper that inspects a uv-managed project (or workspace) and reports which
dependencies can be bumped based on what is pinned in pyproject.toml, what is
installed in your lockfile environment, and what is currently available on
PyPI.
Quick start
- Install uv: https://docs.astral.sh/uv/.
- Install uvbump once published:
pip install uvbump-cli(oruv tool install uvbump-cli). - From a uv project root, run
uvbumpto print two tables:- Packages out of date: your pins lag behind the newest versions on PyPI.
- Packages can be bumped: installed versions differ from the versions pinned in
pyproject.toml.
$ uvbump --root .
Packages out of date:
Package Name Installed Version Project Version Newest Version Suggested Action
requests 2.32.3 2.31.0 2.32.3 Update package version
Packages can be bumped:
Package Name Installed Version Project Version Newest Version Suggested Action
requests 2.32.3 2.31.0 2.32.3 Bump package version in project specification
Usage
uvbump --root /path/to/project
Install and run as a uv tool
uv tool install uvbump-cli
uvbump --root /path/to/project
Examples:
# uv workspace (default)
uvbump --root .
# npm project
uvbump --kind npm --root path/to/frontend
# upgrade all dependencies (uv)
uvbump --root . --upgrade
# interactively choose upgrades (npm)
uvbump --kind npm --root path/to/frontend --upgrade --interactive --group-by package
# preview upgrade changes without writing files
uvbump --root . --upgrade --dry-run
Common flags:
--root(optional): path to the directory that containspyproject.tomlorpackage.json. Defaults to the current working directory.--kind(optional):uvornpm(default:uv).--timeout(optional): subprocess timeout in seconds for uv/uvx/npm calls.--upgrade: rewrite dependency versions to the newest available versions.--interactive: pick which dependencies to upgrade.--group-by(interactive only):workspaceorpackage(default:workspace).--dry-run: preview upgrade changes without writing files.--show-up-to-date: include dependencies that already match the newest version in upgrade selection.--version: print the current uvbump version.
The command uses uv export and uvx pip index versions under the hood for uv projects, so make sure uv is on your PATH.
Development
- Run locally with
uv run python -m uvbump --root examplesto exercise the sample workspace inexamples/. - Formatting/linting is handled by ruff; run
ruff checkandruff formatas needed.
Docker test harness
- Build an image that prepares custom mismatched environments:
docker build -t uvbump-tests . - Version scenarios are driven by Jinja templates:
- Edit
examples/version.envfor the pin you want inpyproject.toml.jinjafiles and the install versions you want in the environment. - On container start the entrypoint sources that env file, renders each
*.jinjaunderexamples/intopyproject.toml, and installs the requested runtime packages.
- Edit
- Run a sample check:
docker run --rm -e VERSION_ENV=/app/examples/version.env uvbump-tests python -m uvbump --root examples - Opt out of installs with
SKIP_INSTALL=1, skip template rendering withSKIP_TEMPLATE_RENDER=1, or skip the whole version step withSKIP_VERSION_CONFIG=1.
Building & publishing to PyPI
- Build artifacts:
uv build(uses Hatchling under the hood). - Verify contents: inspect
dist/for the wheel and sdist. - Publish (after configuring credentials):
uv publish --token <pypi-token>orpython -m twine upload dist/*.
The project metadata lives in pyproject.toml; update the version there before each release.
Release files for uvbump-cli 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uvbump_cli-1.5.0.tar.gz | 12.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uvbump_cli-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.4 kB
Release files / uvbump_cli-1.5.0.tar.gz
| Download URL | uvbump_cli-1.5.0.tar.gz |
|---|---|
| Size | 12.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e09aeb1c11dfc4ed49259a8af6469771f25fc5afe1725ecf395b68e08c992d3
|
|
BLAKE2b-256 checksum How to use checksums |
252b5afce07e6f42e2aac34a1a93e2a20bfa7899cb4e2c647dfb3d4684743b3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / uvbump_cli-1.5.0-py3-none-any.whl
| Download URL | uvbump_cli-1.5.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a55e35a1a66178856f9960611bb3af493e26709993b772ffa5b9fbb9bc2b25e7
|
|
BLAKE2b-256 checksum How to use checksums |
416e77f66515d19f5c1b1a390f7f4160ba881f9655d82ac74f787fcf6090932d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|