[Distutils] distlib and wheel metadata
Vinay Sajip
vinay_sajip at yahoo.co.uk
Tue Feb 14 18:01:48 EST 2017
> The technical problem with PEP 426 is that unless you want to throw away pypi and start over,
> all tools need to understand the old METADATA files regardless.
It might not be as bad as that. For example, that IMO was the mistake behind the original
concept of distutils2 - it was never going to fly as it required everyone to switch over to
distutils2's way of doing things, and wouldn't be able to deal with old releases etc.
For a time, I maintained a pretty extensive parallel set of metadata, based on just the data
passed to setup() by packages using distutils/setuptools. This included not just the data for
installation but even the data for package build, where it was purely declarative at the
arguments-to-setup() level. Where a package didn't do completely bespoke things in setup() -
like create new files, move files around etc. then the parallel set of metadata would allow
installation of even old releases, without executing any setuptools code at all.
I've not had the bandwidth to keep working on distlib and the metadata (example [1]), and the
volume of new stuff going onto PyPI meant I didn't have time to keep on top of it. But the
approach had some promise, in my view, and certainly showed that purely declarative packages
(which didn't use e.g. custom build and install distutils/setuptools commands) could be
installed using a completely different tool [than distutils/setuptools] without package
authors having to change anything (beyond staying purely declarative). The distil
documentation [2] shows installing a number of distributions (existing releases)
from PyPI with better dependency resolution than pip does now, and without "throwing away
PyPI".
Anyway, I guess it's water under the bridge.
Regards,
Vinay Sajip
[1] https://www.red-dove.com/pypi/projects/J/Jinja2/package-2.7.3.json
[2] https://distil.readthedocs.io/en/0.1.0/installing.html#installing-distributions
More information about the Distutils-SIG
mailing list