Python Enhancement Proposals
The PEPs in this repo are published automatically on the web at
http://www.python.org/dev/peps/. To learn more about the purpose of
PEPs and how to go about writing a PEP, please start reading at PEP 1
pep-0001.txt in this repo). Note that PEP 0, the index PEP, is
now automatically generated, and not committed to the repo.
Contributing to PEPs
See the Contributing Guidelines.
reStructuredText for PEPs
Original PEP source should be written in reStructuredText format,
which is a constrained version of plaintext, and is described in
PEP 12. Older PEPs were often written in a more mildly restricted
plaintext format, as described in PEP 9. The
processing and installation script knows how to produce the HTML
for either PEP format.
For processing reStructuredText format PEPs, you need the docutils
package, which is available from PyPI.
If you have pip,
pip install docutils should install it.
Generating the PEP Index
PEP 0 is automatically generated based on the metadata headers in other
PEPs. The script handling this is
genpepindex.py, with supporting
libraries in the
Checking PEP formatting and rendering
Do not commit changes with bad formatting. To check the formatting of
a PEP, use the Makefile. In particular, to generate HTML for PEP 999,
your source code should be in
pep-0999.rst and the HTML will be
pep-0999.html by the command
The default Make target generates HTML for all PEPs.
If you don't have Make, use the
pep2html.py script directly.
Generating HTML for python.org
python.org includes its own helper modules to render PEPs as HTML, with suitable links back to the source pages in the version control repository.
These can be found at https://github.com/python/pythondotorg/tree/master/peps
When making changes to the PEP management process that may impact python.org's rendering pipeline:
- Clone the python.org repository from https://github.com/python/pythondotorg/
- Get set up for local python.org development as per https://pythondotorg.readthedocs.io/install.html#manual-setup
pydotorg/settings/local.pyto refer to your local clone of the PEP repository
./manage.py generate_pep_pagesas described in https://pythondotorg.readthedocs.io/pep_generation.html