github GeiserX/Wayback-Archive v1.4.6

2 hours ago

Packaging fix. No behaviour change to the tool itself.

The sdist we have been publishing contains no code

pip install --no-binary :all: wayback-archive has failed on every release to date:

$ pip install --no-binary :all: wayback-archive==1.4.3
× Getting requirements to build wheel did not run successfully.

setup.py lived in config/, so the sdist root was config/. The root MANIFEST.in was never read and the package itself sat outside the sdist entirely — what reached PyPI was three files: PKG-INFO, setup.cfg, setup.py.

Wheels were unaffected, since bdist_wheel built straight from the source tree. That is why releases have looked healthy and why this went unnoticed. It broke anyone installing from source: distro packagers, offline mirrors, and pip on any platform without a matching wheel.

What changed

Metadata moves to a pyproject.toml at the repository root, where the package, README and requirements are all in scope. It remains a single source of truth rather than a second copy — the version is still read from wayback_archive/__init__.py and the dependencies from config/requirements.txt.

The release workflow now proves its artifacts before uploading instead of assuming them: twine check on both, then install the sdist into a fresh virtualenv, import the package, and assert it resolved under site-packages. That last assertion matters — python puts the working directory ahead of site-packages, so a check run from inside the checkout passes on a completely empty sdist. Verified in both directions:

from a temp dir   sdist ok 1.4.6 .../site-packages/wayback_archive
from the repo     AssertionError: .../Wayback-Archive/wayback_archive

requires-python stays >=3.9 and the classifiers are unchanged, even though CI dropped 3.9 as end-of-life and current dependencies no longer publish 3.9 wheels. Tightening that alters install resolution for existing users, so it is a decision of its own rather than a rider on a packaging fix.

Don't miss a new Wayback-Archive release

NewReleases is sending notifications on new releases.