PyPA Roadmap

Last Reviewed:2015-11-02

A status page for the major PyPA Todo items that will determine the course of Python Packaging.

Core Standards

Metadata 2.0

Summary:The next major upgrade of the metadata format, currently specified in PEP426. The current version, 1.2, is specified in PEP345. PEP426 currently has a very broad scope, and will likely be trimmed, with the minimum scope being at least to include “build_requires” and “test_requires”, and possibly the extensions system.
PEP Src:pep-0426-core-metadata.rst
Issues/PRs:pypa/interoperability-peps/labels/PEP426
Status:PEP426 is in Draft status.

Environment Markers Update

Summary:An update to the notion of “Environment Markers” introduced in PEP345. PEP426 was originally scoped to include this update, but it’s being moved out to PEP496.
PEP Src:pep-0496-environment-markers.rst
Issues/PRs:pypa/interoperability-peps/labels/PEP496
Status:PEP496 is in Draft status.

Optional Dependencies (“Extras”)

Summary:An attempt to formalize the notion of “Extras” introduced by setuptools. PEP426 was originally scoped to include this, but it will likely be broken out.
Issues/PRs:pypa/interoperability-peps/labels/Extras
Status:Currently covered in PEP426 (which is in Draft status), but will likely be broken out.

Metadata Extensions

Summary:A system that supports extending metadata with custom metadata. PEP426 was originally scoped to include this. It’s unclear, if it will remain, or be broken out.
Issues/PRs:pypa/interoperability-peps/labels/Extensions
Status:Currently covered in PEP426 (which is in Draft status), but may be broken out.

Standard Python Extensions

Summary:Assuming we support an extensions system, then this describes a set of standard extensions for Python packages. This is currently specified in PEP459 .
PEP Src:pep-0459-standard-metadata-extensions.rst
Issues/PRs:pypa/interoperability-peps/labels/PEP459
Status:PEP459 is in Draft status.

Build Neutrality

Summary:An attempt to specify a tool-neutral Build API, that pip will adopt, with the goal being to easily support other build systems besides setuptools/distutils.
Issues/PRs:pypa/interoperability-peps/labels/Build-Neutrality
Status:Discussions are ongoing on distutils-sig. Some proposals involve solutions that solve sdist 2.0 and build neutrality with a single plan. There is also some debate whether to initially support neutrality using setup.py as the interface, or to use something completely new.

Source Distribution 2.0

Summary:A specification for a new sdist format. The current setuptools sdist format has no formal specification. It’s up for debate whether this new format will be numbered “1.0” or “2.0”.
Issues/PRs:pypa/interoperability-peps/labels/sdist-2.0
Status:Discussions are ongoing on distutils-sig. Some proposals involve solutions that solve sdist 2.0 and build neutrality with a single plan. A central part of the discussion is whether sdists should (or can) be required to hold static metadata (vs. requiring a build command to generate the metadata).

Installation Database Updates

Summary:An update to the “dist-info” installation database format introduced in PEP376.
Issues/PRs:pypa/interoperability-peps/labels/Installation-Database
Status:No current activity.

Wheel Updates

Summary:An update to the wheel spec (PEP427) largely to handle a tagging scheme for linux binary wheels, although there are various other issues that people have raised.
Issues/PRs:pypa/interoperability-peps/labels/Wheel
Status:No current activity.

Common Filename Scheme

Summary:This would be a replacement for PEP425 that increases scope to also cover the naming scheme used for dist-info directories, installation DB metadata directories, sdist archives and wheel archives.
Issues/PRs:pypa/interoperability-peps/issues/48
Status:No current activity.

Tools & Systems

pip Dependency Resolution

Summary:pip currently has an overly-simplistic “first found, wins” resolver that ignores constraints already present in the environment.
Issues/PRs:pip/issues/988
Status:Robert Collins is known to be working on a new resolver in pip/pull/2716

pip upgrade [–all]

Summary:Many pip users want a non-recursive upgrade (pip upgrade -U is currently recursive), and many users also want some sort of pip upgrade --all command.
Issues/PRs:pip/issues/59
Status:Ongoing discussion in pip/issues/59. A non-recursive implementation of pip upgrade exists in pip/pull/3194

Vendor distutils into setuptools

Summary:Possibly “vendor” a copy of distutils into setuptools, so that setuptools is free to evolve independent of the Standard Library copy of distutils.
Issues/PRs:setuptools/issues/417/adopt-distutils
Status:Under consideration.

The New & Improved PyPI

Summary:A rehaul of PyPI built on Warehouse
Issues:pypa/warehouse/issues
Status:Under Development

PyPI Integrate TUF

Summary:An effort to integrate PyPI with the “The Update Framework” (TUF). This is specified in PEP458
PEP Src:pep-0458-tuf-online-keys.rst
Issues/PRs:pypa/interoperability-peps/labels/PEP458
Status:PEP458 is in Draft status.

Documentation

New PyPUG Tutorials

Summary:An attempt to improve the 2 primary PyPUG tutorials for readability and style, to coincide with the launch of the new Warehouse-backed PyPI.
Issues/PRs:warehouse/issues/729
Status:Nicole (from Warehouse team) and Marcus are working together on this along with a team of volunteer writers.

Specs vs PEPs

Summary:An attempt to present finalized PEPs as non-numbered “Specifications” that are organized together in the PyPUG. As it is, it’s too hard to know what really represents the finalized set of PyPA PEPs.
Issues/PRs:pypa.io/issues/11
Status:Nick Coghlan has started working on migrating to this approach, using pypa.io/specifications/ as the stable base URL.

PyPA PEP Process

Summary:At it’s core, PyPA is consistent with the Python PEP process, but around the edges, it has a unique workflow that should be documented, with the goal being to increase involvement. This process may change if the Python PEP database migrates to using gitlab as specified in PEP507.
Issues/PRs:interoperability-peps/issues/53
Status:This is being worked on in conjunction with the Specs vs PEPs work.