[Catalog-sig] Extending the package meta-data with more detailed download information

David Lyon david.lyon at preisshare.net
Thu Nov 19 15:29:32 CET 2009

On Thu, 19 Nov 2009 11:37:32 +0100, "M.-A. Lemburg" <mal at egenix.com> wrote:
> In the current or intended next vesion (1.2 - see PEP 345), the
> package meta data does not include any machine usable form of
> defining download URLs for particular platforms, Python versions
> and variants.
> The only entry we have is:
> """
> Download-URL
>     A string containing the URL from which this version of the package
>     be downloaded. (This
> means that the URL can't be something like ".../package-latest.tgz", but
> instead must be
> ".../package-0.45.tgz".)
> """
> which may be usable by a developer looking for the download links,
> but isn't really suited for package managers to use.
> PyPI has already extended the meta-data information to include uploaded
> files, but only makes this information available via the RPC interface.

Which imo is entirely satisfactory.

> Now I'm not sure whether such download information should be part
> of the package's meta-data, but do see a point in having all package
> related information in one place for easy access by package managers
> and developers.

The key thing for imho now is to have the dependencies available in
the metadata.

> I would like to extend the available download information to make
> automated downloads more reliable. Here's a list of things that
> would be needed:
>  * Distribution type (sdist, bdist_egg, bdist_msi, bdist_wininst, etc.)
>  * Distribution URL (full URL of the download file)
>  * Distribution Comment (any text)
>  * Distribution MD5 digest (as HEX string)
>  * Distribution SHA1 digest (as HEX string)
>  * Distribution PGP signature (as string)
>  * Distribution variant (list defined by the package)

We could. To me these things are a little fluffy. One could
ask how much value they actually add.

>  * Python implementation (CPython, Jython, etc.)
>  * Python version (2.5, 3.1, etc.)
>  * Python build variant (UCS2, UCS4)

Definitely. But these are already slated to go in
aren't they? with the conditionals specification.

>  * OS identifier (Windows, Linux, Mac OS X, FreeBSD, etc.)
>  * OS version (XP, 2, 10.4, 7, etc.)
>  * Architecture identifier (x86, x64, ppc, ppc64, sparc, sparc64, etc.)
>  * Processor identifier (i386, i686, arm, etc.)

These were discussed on distutils a little during the year.

> Some of these would be optional, or could be set to 'n/a' if
> not applicable to the distribution.

Or just left out.

> distutils should then get a new API for matching the available
> download information to the currently running Python interpreter
> (but that's to be discussed on distutils-sig).
> Thoughts ?

They're good thoughts.


More information about the Catalog-SIG mailing list