wheelripe

The newer the Python, the more holes in the cheese.

wheelripe reads your lockfile and, for the Python you want to move to and every platform you ship, tells you which dependencies would fall back to a source build — and the first release of each that fixes it.

When a new CPython comes out (3.15 landed in October 2026, with a supported free-threaded 3.15t build), most upgrades stall on the same question: which of our dependencies have wheels for it yet? Today people answer it by trying an install, reading the error, opening PyPI for each package, scrolling the file list, and repeating per platform. wheelripe does that for every package at once, without installing anything, using the same tag rules pip uses.

What you get

$ wheelripe uv.lock --python 3.15
BLOCKED  confluent-kafka 2.16.0          no cp315 wheel for any target platform (ships cp38–cp314)
BUMP     numpy 1.26.4 → 2.5.2            no cp315 wheel in 1.26.4 (ships cp39–cp312); 2.5.2 is the first release with one
BUMP     pydantic_core 2.41.5 → 2.48.0   no cp315 wheel in 2.41.5 (ships cp39–cp314); 2.48.0 is the first release with one
READY    1 package (0 with binary wheels · 1 pure Python)

NOT RIPE for CPython 3.15: 1 blocked upstream · 2 need a version bump

Three ways to run it

CLI on your laptop, GitHub Action on a schedule so CI tells you the week you become ripe, and an MCP server so your coding agent can check before it bumps requires-python.

Install →