Skip to main content

UV-bump

Bump pyproject.toml dependency minimum versions to latest feasible versions.

Package version Supported Python versions

WARNING: this tool is provided as-is and doesn't come with warranty. Please make sure your code has been backed up and/or version controlled in case something goes wrong.

Features

  • Bump your minimum bounds in pyproject.toml in sync with the uv.lock file automatically.
  • Hold back package upgrades by using the standard == & <= syntax in pyproject.toml.
  • Respects your pyproject.toml files by keeping the formatting including comments.
  • Workspace support.
  • Speed and power of UV; uv-bump does the minimum possible on top of UV.
  • Zero config & no interactivity required, just run uv-bump in your projects root directory.
  • Runs on Python 3.10+ without any dependencies other than UV.

Howto

Within your project, ensure that it is clean. That is:

  1. your uv.lock file is up to date and commited
  2. your .venv is up to date

Run uv sync --all-extras if you are unsure, and commit your lock file if any changes.

Proceed by installing the tool and running it:

uvx uv-bump

Alternatively, if you want to add uv-bump to your development dependencies:

uv add --dev uv-bump
uv-bump

UV-bump will run uv sync, which updates the packages in your virtual environment and your uv.lock file, and in addition updates all pyproject.toml files in the workspace by bumping all minimum bounds to the version installed. Review the changes, and when happy, commit.

UV-bump will respect your currently set version pins and bounds. For example, if you specify polars==1.20.0, Polars won't be updated, although newer versions are available. Similarly, if you set plotly>=5.0,<6.0 version 6 of Plotly will not be selected. To make these available, change the specifications to use >= without an upper bound. If you find that a particular package upgrade is difficult and warrants more attention, edit pyproject.toml to add an upper bound, and re-run UV-bump. In this way, you can keep up to date on all the non-breaking changes whilst holding back bigger updates if needed.

Why uv-bump?

UV-bump is a tool help application developers keep up to date on their dependencies. For library developers, the pyproject.toml dependency specifications are usually set as wide as possible. However, for application developers, this is not desirable, and ideally versions are being kept up-to-date to incorporate bug fixes and, if desired, feature upgrades. Although uv sync --upgrade will up the versions in your uv.lock file, it won't touch the pyproject.toml file. This causes the dependency specifications to lag reality. For example, say you use package X version Y, and specify "PackageX>=Y". Over time, a new version, Z, comes out. The uv.lock file is updated with uv sync --upgrade, and you end up using the new version, and start using some of the new features. Effectively, pyproject.toml is now outdated, your application won't work any longer with version Y, but only version Z, which can cause problems down the road.

FAQ

Q1. Help, UV-bump does not select the latest version?

A1. UV-bump uses UV to resolve package requirements. It may well be that amongst your dependencies one or more are holding your dependency back.

Q2. will UV add native support for this functionality?

A2. See the issue tracker: https://github.com/astral-sh/uv/issues/6794

Q3. Can I see which of my dependencies are outdated?

A3. uv pip list --outdated. This does not, per Q1, mean that they can actually all be updated to the latest version.

Development

Git checkout the repository.

  • Run the unit tests: pytest.
  • Formatting and linting is done by ruff format . and ruff check . respectively.
  • To type check the code base: mypy.

UV is required for running tests in parallel across python versions: make -j testall.

Metadata

Release files for uv-bump 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uv-bump 0.6.0
File Size Uploaded Provenance Actions
uv_bump-0.6.0.tar.gz 6.5 kB Without provenance Details for uv_bump-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for uv-bump 0.6.0
File Interpreter ABI Platform Actions
uv_bump-0.6.0-py3-none-any.whl Python 3 none any Details for uv_bump-0.6.0-py3-none-any.whl

Total release size: 14.4 kB

Release files / uv_bump-0.6.0.tar.gz

Download URL uv_bump-0.6.0.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1a0c65538442021e38d8cbf5f7948cc3386f1b1eb607f6a414e6003d7b2fcc3b
BLAKE2b-256 checksum
How to use checksums
3ece27f8c01e3bc8e356b212da502e22308ac04c55ca96c9cb4f379a16061ac6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / uv_bump-0.6.0-py3-none-any.whl

Download URL uv_bump-0.6.0-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c184c362e83ea531dd5b5f4213f10b7fa1549c8f0bf30640897cc3e6104bd4ba
BLAKE2b-256 checksum
How to use checksums
edd1b1d7f4d02df203634235b8ae6618233046240c01ea0f77924fe0436aa112
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for uv-bump 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page