Skip to main content

uv-readiness

Find out whether a uv project can move to a new Python version, and what is in the way.

uv-readiness checking a project for Python 3.13: two packages are blocked, two need an update, and uv explains why

uvx uv-readiness 3.14

Run it in a directory that has a uv.lock. It checks every locked package, direct or transitive, and never modifies your project.

What it tells you

  • What blocks the upgrade. Packages that ship compiled wheels but none for the target Python, drawn as a tree from your project down, so you can see which dependency pulls each one in.
  • What fixes it. It re-locks a temporary copy of the project for the target Python and prints the uv lock command that works. When no upgrade helps, it shows uv's own explanation of which requirement holds things back.
  • What "ready" rests on. Most packages ship py3-none wheels that install on any Python 3, which says nothing about one particular version. The summary counts those apart from packages with a wheel built for the target, and a classifier check lists the ones that do not declare the target yet.

Two signals, used differently

The tool reads both wheels and classifiers. Which one applies depends on the package.

Wheels Classifiers
What it is A published file tagged for a Python version. A line the author adds to the package metadata.
Which packages Compiled ones: few in most projects, but the ones that hold up an upgrade. Everything else: py3-none packages, usually the large majority.
How strong A fact. A cp314 binary exists or it does not. A hint. Often added months late, or never.
Effect Decides the verdict and the exit code. Shown in the report. Never changes the verdict.

So for most of your packages the classifier is the only version-specific information there is, and the report shows it. It does not fail a run, because a missing classifier usually means the author has not updated the metadata, not that the package is broken.

This is the uv counterpart to pdm-readiness, which reads classifiers for direct dependencies only.

Usage

uv-readiness <python> [--project DIR] [--offline] [--json] [--verbose]
Argument Meaning
<python> Target version: 3.14, or 3.14t for the free-threaded build.
--project DIR Project root containing uv.lock. Default: current directory.
--offline Only read uv.lock: no uv lock runs, no PyPI lookups.
--json Print the report as JSON.
--verbose Also list ready packages.
Exit code Meaning
0 Ready: no package is missing a wheel for the target.
1 Updates are needed, or packages are blocked.
2 The tool could not run: no uv.lock, a bad version, uv missing.

uv has no plugin system, so this is a standalone command, not uv readiness. It needs uv on your PATH whenever it has to ask the resolver.

In CI

- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.2.0
- run: uvx uv-readiness 3.14

The step fails until the project is ready. See Running in CI for a scheduled workflow and for using the JSON output.

Documentation

Limits worth knowing first

  • A wheel shows that a package installs, not that it was tested. A py3-none wheel counts as ready even if the code uses something the target Python removed.
  • Platform tags are ignored: a wheel for the target Python on any platform counts.
  • The suggested command is resolved for the target Python only. In a project that spans several Python versions, uv may pick other versions for the older ones.

The full list is in Limits.

Development

uv sync
uv run pytest                 # unit tests
uv run pytest -m network      # runs real `uv lock` and queries PyPI
uv run ruff check && uv run ruff format --check && uv run ty check
vhs docs/demo.tape            # re-record the demo GIF

License

MIT. See LICENSE.

Metadata

Release files for uv-readiness 0.1.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-readiness 0.1.0
File Size Uploaded
uv_readiness-0.1.0.tar.gz 197.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uv-readiness 0.1.0
File Interpreter ABI Platform
uv_readiness-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 212.4 kB

Release files / uv_readiness-0.1.0.tar.gz

Download URL uv_readiness-0.1.0.tar.gz
Size 197.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8d2781754488e727b59572eea5fce49196631b746e9faf28bc3e5e1a7f9b6f3a
BLAKE2b-256 checksum
How to use checksums
c48a9c253457570f8c274d7d057b2c404a797479f5cbe281c9e31c67da9d535f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","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 / uv_readiness-0.1.0-py3-none-any.whl

Download URL uv_readiness-0.1.0-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
35e56dd3708598d2e20922398b9ec39d72aec15d3b7e7d363b38897ac488ae42
BLAKE2b-256 checksum
How to use checksums
95c7aa9640a127d6ba16deef7cd2409051adb3590f00becf19b9217749db2a96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","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 history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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