Features and Improvements
- Packaging metadata moved from
setup.cfgto a PEP 621pyproject.toml,
built with hatchling.setup.py,setup.cfg, andMANIFEST.inare
gone. - The package version is now derived from the git tag by hatch-vcs instead of
being stored ininternetarchive/__version__.py. TaggingvX.Y.Zis what
sets the version, so the tag and the released version cannot disagree, and
releases no longer need a version-bump PR or a follow-up.devNbump.
internetarchive.__version__keeps working for installed packages, reading
the value hatch-vcs generates at build time. In a source checkout that has
never been built it falls back to the installed distribution metadata, and
reports0.0.0.dev0if the package is not installed at all. make release RELEASE=X.Y.Zreplacesmake prepare-release/
check-version; it validates the branch, tree, tag, and changelog section
before pushing the tag.- The
install_internetarchiveCI job now tests installation across Python
3.10-3.14 rather than across historical setuptools versions, which no longer
mean anything now that hatchling is the build backend, and asserts that the
installed version resolved from git rather than falling back. setuptoolsandtypes-setuptoolsdropped from the development extras;
nothing importssetuptoolsorpkg_resourcesat runtime.- Dependencies are now locked in
uv.lock, and CI installs from it with
uv sync --lockedrather than resolving fresh on every run. Contributors
who change a dependency must runuv lockin the same commit; the
--lockedflag fails the build when the lockfile andpyproject.toml
disagree.toxstill resolves per interpreter, since that is the point of
running it. - The
pexbuild tool and thetwine/packagingrelease tools are now
declared as PEP 735 dependency groups, so their versions are pinned by the
lockfile without being published as installable extras. Previously CI
installed them unpinned, which is how thepexbootstrap grew roughly
500 KB between 5.11.0 and 5.11.1 with no change in this repository. tests/requirements.txtis gone; it duplicated thetestextra, which
toxnow uses directly.- mypy runs from the locked environment in both
lint_pythonand the
pre-commit hook, against explicit targets. The two checks previously used
different mypy versions and different type-stub sets, so they could disagree
about the same file.
What's Changed
Other Changes
- Bump dev version to 5.11.2.dev0 (post-5.11.1 release) by @jjjake in #801
- Move packaging to PEP 621 pyproject.toml, derive version from git tag by @jjjake in #802
- Report request failures from ia account instead of printing null by @jjjake in #817
- Lock dependencies with uv.lock and sync CI from it by @jjjake in #804
- Date the 5.12.0 changelog section by @jjjake in #821
Full Changelog: v5.11.1...v5.12.0