Your wheel can be a valid zip and still break installers. I built a checker for that.
Description and use
zipgate validates ZIP64 structures in wheel files, detecting errors that cause installer failures, enabling pre‑upload fixes.
Problem
Large or retagged Python wheels may contain malformed ZIP64 structures that cause strict installers to fail, even though Python’s zipfile module tolerates them.
Outcome
zipgate successfully identified malformed ZIP64 structures in wheels retagged with wheel 0.47.0, while wheels built with wheel 0.48.0 passed validation.
Workflow
- 1. Install zipgate via pip:
pip install zipgate - 2. Run zipgate against a wheel:
zipgate dist/*.whl - 3. Interpret exit codes: 0 = all valid, 1 = at least one invalid, 2 = unreadable
- 4. If invalid, investigate the reported rule violations (e.g., SPURIOUS_ZIP64_LOCAL).
Evidence
A 5.8 GiB PyTorch ROCm nightly wheel failed to install under uv with zip64 extended information field was too long
Both are the same class of problem: the ZIP64 extra field (0x0001) in the file doesn't match what APPNOTE 4.5.3 requires.
I parse local file headers and central directory entries by hand (not trusting zipfile) and validate…
The 0.47.0 output trips the exact rule the issue describes; 0.48.0 is clean.
- Record date: 2026-10-04T08:41:18.999Z