Skip to main content

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

Project description

UV-bump

Bump pyproject.toml dependency minimum versions to latest feasible 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.

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 pyproject.toml 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv_bump-0.3.2.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uv_bump-0.3.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file uv_bump-0.3.2.tar.gz.

File metadata

  • Download URL: uv_bump-0.3.2.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for uv_bump-0.3.2.tar.gz
Algorithm Hash digest
SHA256 edc194ef162b734b248295e42c94899c8f3f755a393d55fe968c229d5e666577
MD5 a12a4a699b2ae0e94dd6c1bf78bfc196
BLAKE2b-256 6d0073f1f9b976e5d57e690455d4244470e5ac9ec9afab76cea92df2576aa72e

See more details on using hashes here.

File details

Details for the file uv_bump-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: uv_bump-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for uv_bump-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 434ea755b3dc3a035c35693eaa1686ce2ced5d571e1a0f2056d6bfc418068e3b
MD5 e70598ffd2a55e3f676c62927609bb1d
BLAKE2b-256 90b043037c56ecf86bcb8c7f5c1a94f4158eaab90db0d3e35e20f43aa4ef258c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page