Skip to main content

wheelreach

License: MIT Python 3.9+ No dependencies

Apple published a wheel your Python can't install — and their own source says it should work.

Real case, still live: coreai-models==0.1.0. The wheel on PyPI declares Requires-Python: >=3.14, but the repo's python/pyproject.toml says requires-python = ">=3.11" and .python-version pins 3.11. Anyone on Python 3.11 or 3.12 gets a resolution failure for a package the source claims to support. (Verified against the live PyPI JSON API.)

A second flavor of the same disease: pytorch/pytorch#186099 — triton nightly wheels are built with cp315 tags, but their METADATA still says Requires-Python: >=3.10,<3.15, so pip rejects them on Python 3.15.

wheelreach checks that a package's declared Python support actually has installable release files — the release-integrity question nobody's CI asks.

Part of the release-integrity series: readmeta (did your README render?), wheeltruth (did your wheel ship complete?), casecrash (will your filenames survive checkout?), tagtruth (does the tag match the release?), wheelreach (can your Python actually install it?).

Quickstart

pip install wheelreach
wheelreach check --package coreai-models
version  python  verdict                   wheel
-------  ------  ------------------------  ----------------------------------
0.1.0    3.10    BLOCKED_BY_REQUIRES_PYTHON  coreai_models-0.1.0-py3-none-any.whl
0.1.0    3.11    BLOCKED_BY_REQUIRES_PYTHON  coreai_models-0.1.0-py3-none-any.whl
0.1.0    3.12    BLOCKED_BY_REQUIRES_PYTHON  coreai_models-0.1.0-py3-none-any.whl
0.1.0    3.13    BLOCKED_BY_REQUIRES_PYTHON  coreai_models-0.1.0-py3-none-any.whl
0.1.0    3.14    INSTALLABLE                 coreai_models-0.1.0-py3-none-any.whl

checked 5 version/python pairs, 4 problem(s): 0.1.0 on 3.10 (BLOCKED_BY_REQUIRES_PYTHON), ...
  0.1.0 / 3.11: wheel coreai_models-0.1.0-py3-none-any.whl exists for cp311 but Requires-Python '>=3.14' excludes Python 3.11

Exit codes: 0 clean, 1 problems found, 2 errors (fetch failures, bad args).

Verdicts

Verdict Meaning
INSTALLABLE a compatible wheel exists and metadata allows this Python
BLOCKED_BY_REQUIRES_PYTHON a wheel exists for this Python but Requires-Python excludes it
NO_WHEEL no compatible wheel and no sdist published
NO_WHEEL_HAS_SDIST no compatible wheel, but an sdist exists that might build

The NO_WHEEL / NO_WHEEL_HAS_SDIST split is deliberate: "no wheel" and "nothing installable at all" are different severities, and a checker that conflates them cries wolf on every sdist-only package.

Options:

wheelreach check --package <name> --version 1.2.3   # one version (default: latest stable)
wheelreach check --package <name> --all             # every published version
wheelreach check --package <name> --python 3.11     # single target Python
wheelreach check --package <name> --python-set 3.11,3.12
wheelreach check --package <name> --format json

Config file (pyproject.toml):

[tool.wheelreach]
python_set = "3.11,3.12"
ignore = ["2.0a1"]

What wheelreach does not verify

The target model is CPython on Linux x86-64 — the most common CI/server shape. macOS, Windows, ARM, and alternative interpreters are out of scope for v0.1.0. Wheel-tag compatibility is syntactic (filename tags + metadata), not a trial install: a passing check means pip should accept the file, not that the code runs. Requires-Python clauses beyond ==/!=/>=/<=/>/</~= (with optional .* wildcards) raise an error rather than guessing.

Metadata

Release files for wheelreach 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 wheelreach 0.1.0
File Size Uploaded Provenance Actions
wheelreach-0.1.0.tar.gz 16.5 kB Without provenance Details for wheelreach-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 30.5 kB

Release files / wheelreach-0.1.0.tar.gz

Download URL wheelreach-0.1.0.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e40c997d6d2ada633737b7503c2470583970f909aaeab0b4211ebbb6b0bfe2d8
BLAKE2b-256 checksum
How to use checksums
468bd95b62895b630e9290adaefd3be240fc891e80519c8c173a4162da3dc947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / wheelreach-0.1.0-py3-none-any.whl

Download URL wheelreach-0.1.0-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb10b19c868a9cf81b43c08a40501aa2b25aefd658cef971ceabb95e6249b500
BLAKE2b-256 checksum
How to use checksums
40a243a841339bfc1eade1d0e1f3e70c11cbe809658e7496992908c03e42da91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for wheelreach 0.1.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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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