PyPA Roadmap

Last Reviewed:

2020-07-20

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

Core Standards

Metadata 2.0

Last Reviewed:

2020-06-08

Summary:

Major upgrades of the metadata format. Version 1.2 was specified in PEP 345. PEP 426 is in Withdrawn status; it had a very broad scope, and included “build_requires” and “test_requires”, and the extensions system.

PEP Src:

pep-0426-core-metadata.rst

Issues/PRs:

pypa/interoperability-peps/labels/PEP426

Status:

PEP 566 (Metadata 1.3) was accepted in February 2018. PEP 566 (Metadata 2.1) was accepted in February 2018. Several features of Metadata 2.0 are specified but not yet accepted or implemented.

Environment Markers Update

Last Reviewed:

2017-12-10

Summary:

An update to the notion of “Environment Markers” introduced in PEP 345. PEP 426 was originally scoped to include this update, but it was moved out to PEP 496.

PEP Src:

pep-0496-environment-markers.rst

Issues/PRs:

pypa/interoperability-peps/labels/PEP496

Status:

PEP 496 has been rejected in favor of the more comprehensive PEP 508.

Optional Dependencies (“Extras”)

Last Reviewed:

2017-12-10

Summary:

An attempt to formalize the notion of “Extras” introduced by setuptools. PEP 426 was originally scoped to include this, but it will likely be broken out.

Issues/PRs:

pypa/interoperability-peps/labels/Extras

Status:

Currently covered in PEP 426 (which is in Deferred status), but will likely be broken out.

Metadata Extensions

Last Reviewed:

2017-12-10

Summary:

A system that supports extending metadata with custom metadata. PEP 426 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 PEP 426 (which is in Deferred status), but may be broken out.

Standard Python Extensions

Last Reviewed:

2017-12-10

Summary:

Assuming we support an extensions system, then this describes a set of standard extensions for Python packages. This is currently specified in PEP 459.

PEP Src:

pep-0459-standard-metadata-extensions.rst

Issues/PRs:

pypa/interoperability-peps/labels/PEP459

Status:

PEP 459 is in Deferred status.

Build Neutrality

Last Reviewed:

2017-12-10

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

Last Reviewed:

2017-12-10

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

Last Reviewed:

2017-12-10

Summary:

An update to the “dist-info” installation database format introduced in PEP 376.

Issues/PRs:

pypa/interoperability-peps/labels/Installation-Database

Status:

No current activity.

Wheel Updates

Last Reviewed:

2017-12-10

Summary:

An update to the wheel spec (PEP 427) 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

Last Reviewed:

2017-12-10

Summary:

This would be a replacement for PEP 425 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

Last Reviewed:

2020-06-08

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:

The Packaging Working Group of the Python Software Foundation successfully applied for funding to finish the overhaul of the resolver, and a team is working on the project. A pip release including the new resolver is expected in 2020.

pip upgrade [–all]

Last Reviewed:

2017-12-10

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

Last Reviewed:

2023-01-16

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

Status:

Complete.

PyPI Integrate TUF

Last Reviewed:

2020-06-08

Summary:

An effort to integrate PyPI with the “The Update Framework” (TUF). This is specified in PEP 458

PEP Src:

pep-0458-tuf-online-keys.rst

Issues/PRs:

pypa/interoperability-peps/labels/PEP458

Status:

PEP 458 is in Accepted status. The PSF’s Packaging Working Group received funding from Facebook and a team is currently working on implementing TUF on PyPI.

Documentation and Governance

New PyPUG Tutorials

Last Reviewed:

2017-12-10

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; see pypa/python-packaging-user-guide/tree/master/source/tutorials.

Specs vs PEPs

Last Reviewed:

2017-12-10

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

Last Reviewed:

2017-12-10

Summary:

At its 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 PEP 507.

Issues/PRs:

interoperability-peps/issues/53

Status:

This is being worked on in conjunction with the Specs vs PEPs work.

PyPA Governance

Last Reviewed:

2020-07-20

Summary:

PEP 609 suggests a governing model that aims to formalize existing practices.

Status:

PEP 609 is approved. The PyPA and the Steering Council will continue to discuss and refine the scope of the PEP process, how and when it applies to packaging-specific standards and architecture decisions, and how we all might adapt governance processes further.