[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