[Distutils] Metadataformat PEP 426 on PyPI?

Vinay Sajip vinay_sajip at yahoo.co.uk
Wed Jul 3 16:51:02 CEST 2013


Alexander Schneider <Alexander.Schneider <at> uni-duesseldorf.de> writes:


> Will there be build-in Metadata in the new PEP 426 format online on PyPI
> for all packages? If yes, are there already specifications on how they
> will be retreavable?

I have experimental support for PEP 426 metadata available, which is
up-to-date with the spec apart from the changes Nick linked to. For any
given package, you can access some JSON at an URL based on the project name.
For example, setuptools 0.7.5 metadata is available at

http://www.red-dove.com/pypi/projects/S/setuptools/package-0.7.5.json

If you deserialize the JSON at an URL like the above into a dict, the PEP
426 metadata is available in the subdict at key "index-metadata" in the
top-level dict. Example from setuptools 0.7.5:

  "index-metadata": {
    "description": "omitted for brevity", 
    "license": "PSF or ZPL", 
    "contacts": [
      {
        "role": "author", 
        "name": "The fellowship of the packaging", 
        "email": "distutils-sig at python.org"
      }
    ], 
    "summary": "Easily download, build, install, upgrade, and uninstall
Python packages", 
    "project_urls": {
      "Home": "https://pypi.python.org/pypi/setuptools"
    }, 
    "keywords": [
      "CPAN", 
      "PyPI", 
      "distutils", 
      "eggs", 
      "package", 
      "management"
    ], 
    "metadata_version": "2.0", 
    "extras": [
      "certs", 
      "ssl"
    ], 
    "version": "0.7.5", 
    "run_may_require": [
      {
        "environment": "sys_platform=='win32'", 
        "dependencies": [
          "wincertstore (== 0.1)"
        ], 
        "extra": "ssl"
      }, 
      {
        "environment": "sys_platform=='win32' and python_version=='2.4'", 
        "dependencies": [
          "ctypes (== 1.0.2)"
        ], 
        "extra": "ssl"
      }, 
      {
        "dependencies": [
          "certifi (== 0.0.8)"
        ], 
        "extra": "certs"
      }, 
      {
        "environment": "python_version in '2.4, 2.5'", 
        "dependencies": [
          "ssl (== 1.16)"
        ], 
        "extra": "ssl"
      }
    ], 
    "classifiers": [
      "Development Status :: 5 - Production/Stable", 
      "Intended Audience :: Developers", 
      "License :: OSI Approved :: Python Software Foundation License", 
      "License :: OSI Approved :: Zope Public License", 
      "Operating System :: OS Independent", 
      "Programming Language :: Python :: 2.4", 
      "Programming Language :: Python :: 2.5", 
      "Programming Language :: Python :: 2.6", 
      "Programming Language :: Python :: 2.7", 
      "Programming Language :: Python :: 3", 
      "Programming Language :: Python :: 3.1", 
      "Programming Language :: Python :: 3.2", 
      "Programming Language :: Python :: 3.3", 
      "Topic :: Software Development :: Libraries :: Python Modules", 
      "Topic :: System :: Archiving :: Packaging", 
      "Topic :: System :: Systems Administration", 
      "Topic :: Utilities"
    ], 
    "name": "setuptools"
  },

I expect this metadata to track the PEP as changes to it are published.
Currently, the top-level dict contains some legacy representations of the
metadata which will be removed in due course.

I would hope that once the dust settles on the PEP, this metadata (the PEP
426 part) can be migrated to PyPI.

Regards,

Vinay Sajip



More information about the Distutils-SIG mailing list