[Distutils] Metadata 2.0: Is there a formal spec for a requirement?

Vinay Sajip vinay_sajip at yahoo.co.uk
Tue Sep 16 19:02:25 CEST 2014


From: Paul Moore <p.f.moore at gmail.com>


> One thing that might be worth clarifying somewhere/somehow (not
> particularly in the specs, though) is where is the best place to find
> the "canonical" implementations of the various metadata specs. At one
> point, distlib seemed to be taking that role, but I'm not sure it is
> any more.

That's more to do with the preferences of, and choices made by, other people. I don't know who decides what's "canonical" (I suppose Nick, naturally, but I'm not sure if it's *only* Nick) or what criteria they would use, but I've aimed distlib to implement the various PEPs in their various states of completion. Although I have been less active of late than I have previously, that's just down to my current workload: I'm busy with consultancy work :-) Note that I have recently updated distlib to reflect changes in PEP 440, though this functionality has not been officially released (it's available in the public repos, though). On requirements, distlib supports both the setuptools forms "foo>=X.Y" and the PEP forms such as "foo (~ X.Y)".

Generally, distlib and distil work well enough [for my needs] for the most part. Where distributions uses custom code in setup.py or extends distutils/setuptools command classes, I use "distil pip" to convert sdists to wheels, or "distil package" to convert .exe installers (like those on Christoph Golhke's site) to wheels. When you pin your dependencies, you don't have to do this dance too often.

I feel I'm fairly responsive when issues are raised against either distlib or distil. I'm always open to feedback, try to keep the docs up to date, etc. The coverage docs are a little out of date, and coveralls is on my todo list. Not sure what more would be expected from a canonical implementation, other than an official blessing.

While on the topic of specs, I'm curious to know what the specification status is for other elements in the packaging landscape, such as Warehouse or Twine - are there any PEPs specifying anything new that they do over existing PyPI/distutils, or is there nothing new over and above existing code other than (no doubt improved) reimplementation of existing functionality?

Regards,

Vinay Sajip


More information about the Distutils-SIG mailing list