Search notes:

Python PEPs

PEP stands for Python Enhancement Proposal.
The main purpose of PEPs is to
According to the PEPs' purpose, there are three kind of PEPS:
Description and general notes
Standard track PEPs New features and implementations (especially CPython), interoperability standards. Normative.
Informational PEPs Design issues, guidelines, background information that are of general interest to the Python ecosystem. Non-normative.
Process PEPs Processes surrounding Python and proposed changes. Normative.
PEPs are maintained as text files and version controlled on Github. They're automatically published at peps.python.org.
A categorized index of existing PEPs is maintained in PEP 0.

PEP status

Status Description Next status
Draft Proposal under active discussion and revision Accepted, Provisional, Deferred, Rejected or Withdrawn
Accepted Normative proposal accepted for implementation Final
Final Accepted and reference implementation merged into main source code repo, or no longer active Replaced (Superseded?)
Provisional Provisionally accepted but additional feedback needed Final, Rejected or Withdrawn
Rejected Formally declined and will not be accepted
Withdrawn Removed from consideration by sponsor or authors
Active Used for informational and process PEPs that were never meant to be completed (such as PEP 1) ?
Deferred Inactive draft that may be taken up again at a later time Draft
Superseded (Replaced?) Replaced by another succeeding PEP

Interesting PEPs

Some PEPs that I find interesting, useful or important include
8 Style Guide for Python Code Code for the standard libraries must adhere to PEP 8.
249 Python Database API Specification v2.0 My notes about PEP 249 are here.
263 Defining Python Source Code Encodings See also PEP 3120 and this.
343 The with statement Due to overlap, PEPs 310 and 319 were rejected, PEPs 340 and 346 were withdrawn.
376 Database of Installed Python Distributions A historical document, the up-to-date, canonical spec is the Core metadata specification.
380 Syntax for Delegating to a Subgenerator
397 Python launcher for Windows See also C:\Windows\py.exe
427 The Wheel Binary Package Format 1.0 Description of a built-package format for Python called wheel.
503 Simple Repository API Simple refers to the fact that PyPI's base URL is https://pypi.org/simple/.
405 Virtual Environments See also PEP 486 (Make the Python Launcher aware of virtual environments)
427 The Wheel Binary Package Format 1.0 A historical document, the up-to-date, canonical spec is maintained on the PyPA specs page.
465 A dedicated infix operator for matrix multiplication This pep proposes the at symbol (@) as binary operater (to be typically used for matrix multiplications) and the corresponding methods __matmul__, __rmatmul__ and __imatmul__. Compare with (the rejected) PEP 211 (Adding A New Outer Product Operator) and (also rejected) PEP 225 (Elementwise/Objectwise Operators)
482 Literature Overview for Type Hints
484 Type hints Introduction of type hints (aka type annotations), see also PEP 3107 (Function Annotations)
492 Coroutines with async and await syntax See also the asyncio standard library, async def, and PEPs 342 and 3156.
498 Literal String Interpolation F-Strings
517 A build-system independent format for source trees See also the command line options --use-pep517 and --check-build-dependencies of pip install, these notes and Packaging/deployment of modules.
518 Specifying Minimum Build System Requirements for Python Projects See also the command line option --no-build-isolation of pip install and Packaging/deployment of modules.
572 Assignment Expressions Introduction of the walrus operator.
584 Add Union Operators To dict Add the merge (|) and update (|=) operators to the built-in dict (and other) classes.
594 Removing dead batteries from the standard library
602 Annual Release Cycle for Python Each year, a major Python version (3.x) is released in October (see also this example release calendar).
622, 634, 635, 636 Structural Pattern Matching: Specification, Motivation and Rationale, Tutorial See the notes on Structurual Pattern Matching.
668 Marking Python base environments as “externally managed” See also these notes
686 Make UTF-8 mode default UTF-8 will be the default encoding for files, stdio and pipes starting with Python 3.15. Compare with PEP 263
3107 Function annotations Support for arbitrary annotations to function definitions (without meaning to the interpreter)
3120 Using UTF-8 as the default source encoding See also PEP 263
3156 Asynchronous IO Support Rebooted: the “asyncio” Module Implementation of Guido von Rossum's vision for asynchronous I/O, implemented as asyncio module in Python 3.3. Compare with PEP 492
3333 Python Web Server Gateway Interface v1.0.1 (WSGI) Noteably, Tornado is not based on WSGI. PEP 3333 supersedes 333. See also web app frameworks. My notes about PEP 3333 are here.

See also

Java (or OpenJDK?) has JEPs (JDK Enhancement Proposals).
Gentoo GLEPs are very similar in nature to PEPs.

Index