[Distutils] Updated drafts of metadata 2.0 (PEP 426 and PEP 440)

Paul Moore p.f.moore at gmail.com
Thu Jun 20 23:40:15 CEST 2013


On 20 June 2013 21:54, Daniel Holth <dholth at gmail.com> wrote:

> These metadata PEPs are
> mostly about the installer, database of installed files, and package
> indexes.
>

In essence (and I freely admit I don't fully understand the details yet
myself) I think the idea is that PEPs 426 and 440 define a set of data that
can be published by packages. The *how* of publishing that data is still to
be defined - the idea is that there will be the appropriate metadata JSON
files available, but no tools currently produce that format. Equally,
installers like pip will be able to read the metadata and ensure that
dependencies are installed appropriately (for example) but again, that will
be a future change to pip.

For now, the PEPs define a standard for tools to *use*, but leave the
creation of such tools (or modification of existing tools) as a later step.

I don't think the PEPs say anything about a plan for implementing the spec
(although I haven't read the PEPs in detail yet, so I may have missed
something) but my assumption is that it'll go something like this:

1. Python setup.py sdist and python setup.py dist_info will be changed to
generate pymeta.json files. But that will be for Python 3.4 only (there's a
big problem if this doesn't make it into 3.4...). Unless there's a
distutils backport or similar.
2. Pypi will be changed to publish metadata from pymeta.json, when it is
present, which tools like pip can consume (see later).
3. Wheel will put pymeta.json into wheels, from the pymeta.json created by
(1) and likely by converting legacy egg-info metadata as a fallback. Wheel
will also write pymeta.json on install.
4. Pip will use PE 426 metadata from PyPI, write pymeta.json on install,
and use installed pymeta.json (again probably falling back to legacy
formats where pymeta.json isn't present).
5. Distlib will follow suit.

The big gap here is older versions of Python. Maybe a setuptools plugin to
generate the new metadata in sdists would be viable. Maybe package writers
could provide pymeta.json by hand, although I seriously doubt many will
bother.

How close am I to reality here?

Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130620/c2b200ea/attachment.html>


More information about the Distutils-SIG mailing list