Sponsor of the Day:
Jerkmate
https://peps.python.org/pep-0607/
PEP 607 – Reducing CPython’s Feature Delivery Latency | peps.python.org
PEP 602 and PEP 605 describe two alternative approaches to delivering smaller collections of features to Python’s users more frequently (as compared to the...
feature deliverypeps python607reducinglatency
https://peps.python.org/pep-0810/
PEP 810 – Explicit lazy imports | peps.python.org
This PEP introduces syntax for lazy imports as an explicit language feature:
lazy importspeps python810explicit
https://peps.python.org/pep-0800/
PEP 800 – Disjoint bases in the type system | peps.python.org
To analyze Python programs precisely, type checkers need to know when two classes can and cannot have a common child class. However, the information necessary...
type systempeps python800disjointbases
https://peps.python.org/pep-0709/
PEP 709 – Inlined comprehensions | peps.python.org
Comprehensions are currently compiled as nested functions, which provides isolation of the comprehension’s iteration variable, but is inefficient at runtime....
peps python709inlinedcomprehensions
https://peps.python.org/pep-0513/
PEP 513 – A Platform Tag for Portable Linux Built Distributions | peps.python.org
This PEP proposes the creation of a new platform tag for Python package built distributions, such as wheels, called manylinux1_{x86_64,i686} with external...
distributions peps pythonplatform tagportable linux513built
https://peps.python.org/pep-0349/
PEP 349 – Allow str() to return unicode strings | peps.python.org
This PEP proposes to change the str() built-in function so that it can return unicode strings. This change would make it easier to write code that works with...
peps python349allowstrreturn
https://peps.python.org/pep-3131/
PEP 3131 – Supporting Non-ASCII Identifiers | peps.python.org
This PEP suggests to support non-ASCII letters (such as accented characters, Cyrillic, Greek, Kanji, etc.) in Python identifiers.
supporting nonpeps python3131asciiidentifiers
https://peps.python.org/pep-0484/
PEP 484 – Type Hints | peps.python.org
PEP 3107 introduced syntax for function annotations, but the semantics were deliberately left undefined. There has now been enough 3rd party usage for static...
type hints peps484python
https://peps.python.org/pep-0723/
PEP 723 – Inline script metadata | peps.python.org
This PEP specifies a metadata format that can be embedded in single-file Python scripts to assist launchers, IDEs and other external tools which may need to...
script metadatapeps python723inline
https://peps.python.org/pep-0612/
PEP 612 – Parameter Specification Variables | peps.python.org
There currently are two ways to specify the type of a callable, the Callable[[int, str], bool] syntax defined in PEP 484, and callback protocols from PEP 544....
peps python612parameterspecificationvariables
https://peps.python.org/pep-3129/
PEP 3129 – Class Decorators | peps.python.org
This PEP proposes class decorators, an extension to the function and method decorators introduced in PEP 318.
peps python3129classdecorators
https://peps.python.org/pep-0589/
PEP 589 – TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys | peps.python.org
PEP 484 defines the type Dict[K, V] for uniform dictionaries, where each value has the same type, and arbitrary key values are supported. It doesn’t properly...
type hintspeps python589typeddictdictionaries
https://peps.python.org/pep-0807/
PEP 807 – Index support for Trusted Publishing | peps.python.org
This PEP proposes a standard mechanism through which arbitrary Python package indices can support “Trusted Publishing,” a misuse-resistant credential exchange...
index supporttrusted publishingpeps python807
https://peps.python.org/pep-0482/
PEP 482 – Literature Overview for Type Hints | peps.python.org
This PEP is one of three related to type hinting. This PEP gives a literature overview of related work. The main spec is PEP 484.
type hints peps482literatureoverviewpython
https://peps.python.org/pep-0311/
PEP 311 – Simplified Global Interpreter Lock Acquisition for Extensions | peps.python.org
This PEP proposes a simplified API for access to the Global Interpreter Lock (GIL) for Python extension modules. Specifically, it provides a solution for...
global interpreter lockpeps python311simplifiedacquisition
https://peps.python.org/pep-0649/
PEP 649 – Deferred Evaluation Of Annotations Using Descriptors | peps.python.org
Annotations are a Python technology that allows expressing type information and other metadata about Python functions, classes, and modules. But Python’s...
peps python649deferredevaluationannotations
https://peps.python.org/pep-0403/
PEP 403 – General purpose decorator clause (aka “@in” clause) | peps.python.org
This PEP proposes the addition of a new @in decorator clause that makes it possible to override the name binding step of a function or class definition.
general purposepeps python403decoratorclause
https://peps.python.org/pep-0706/
PEP 706 – Filter for tarfile.extractall | peps.python.org
The extraction methods in tarfile gain a filter argument, which allows rejecting files or modifying metadata as the archive is extracted. Three built-in named...
peps python706filter
https://peps.python.org/pep-0360/
PEP 360 – Externally Maintained Packages | peps.python.org
There are many great pieces of Python software developed outside of the Python standard library (a.k.a., the “stdlib”). Sometimes it makes sense to incorporate...
packages peps360externallymaintainedpython
https://peps.python.org/pep-0647/
PEP 647 – User-Defined Type Guards | peps.python.org
This PEP specifies a way for programs to influence conditional type narrowing employed by a type checker based on runtime checks.
user definedpeps python647typeguards
https://peps.python.org/pep-0257/
PEP 257 – Docstring Conventions | peps.python.org
This PEP documents the semantics and conventions associated with Python docstrings.
peps python257docstringconventions
https://peps.python.org/pep-0660/
PEP 660 – Editable installs for pyproject.toml based builds (wheel based) | peps.python.org
This document describes a PEP 517 style method for the installation of packages in editable mode.
pyproject tomlpeps python660editableinstalls
https://peps.python.org/pep-0780/
PEP 780 – ABI features as environment markers | peps.python.org
This PEP defines using ABI features as environment markers for project dependencies, through a new sys_abi_features environment marker. PEP 508 (later moved to...
peps python780abifeaturesenvironment
https://peps.python.org/pep-0394/
PEP 394 – The “python” Command on Unix-Like Systems | peps.python.org
This PEP outlines the behavior of Python scripts when the python command is invoked. Depending on a distribution or system configuration, python may or may not...
unix likepeps python394commandsystems
https://peps.python.org/pep-0425/
PEP 425 – Compatibility Tags for Built Distributions | peps.python.org
This PEP specifies a tagging system to indicate with which versions of Python a built or binary distribution is compatible. A set of three tags indicate which...
distributions peps python425compatibilitytagsbuilt
https://peps.python.org/pep-3107/
PEP 3107 – Function Annotations | peps.python.org
This PEP introduces a syntax for adding arbitrary metadata annotations to Python functions 1.
annotations peps python3107function
https://peps.python.org/pep-0813/
PEP 813 – The Pretty Print Protocol | peps.python.org
This PEP describes the “pretty print protocol”, a collection of changes proposed to make pretty printing more customizable and convenient.
pretty printprotocol peps813python
https://peps.python.org/pep-3101/
PEP 3101 – Advanced String Formatting | peps.python.org
This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing ‘%’ string formatting operator.
string formattingpeps python3101advanced
https://peps.python.org/pep-0325/
PEP 325 – Resource-Release Support for Generators | peps.python.org
Generators allow for natural coding and abstraction of traversal over data. Currently if external resources needing proper timely release are involved,...
peps python325resourcereleasesupport
https://peps.python.org/pep-0492/
PEP 492 – Coroutines with async and await syntax | peps.python.org
The growth of Internet and general connectivity has triggered the proportionate need for responsive and scalable code. This proposal aims to answer that need...
peps python492coroutinesasyncawait
https://peps.python.org/pep-3143/
PEP 3143 – Standard daemon process library | peps.python.org
Writing a program to become a well-behaved Unix daemon is somewhat complex and tricky to get right, yet the steps are largely similar for any daemon regardless...
library peps python3143standarddaemonprocess
https://peps.python.org/pep-0580/
PEP 580 – The C call protocol | peps.python.org
A new “C call” protocol is proposed. It is meant for classes representing functions or methods which need to implement fast calling. The goal is to generalize...
protocol peps580callpython
https://peps.python.org/pep-0553/
PEP 553 – Built-in breakpoint() | peps.python.org
This PEP proposes adding a new built-in function called breakpoint() which enters a Python debugger at the point of the call. Additionally, two new names are...
peps python553builtbreakpoint
https://peps.python.org/pep-0302/
PEP 302 – New Import Hooks | peps.python.org
This PEP proposes to add a new set of import hooks that offer better customization of the Python import mechanism. Contrary to the current __import__ hook, a...
new importpeps python302hooks
https://peps.python.org/pep-0658/
PEP 658 – Serve Distribution Metadata in the Simple Repository API | peps.python.org
This PEP proposes adding an anchor tag to expose the METADATA file from distributions in the PEP 503 “simple” repository API. A data-dist-info-metadata...
repository apipeps python658servedistribution
https://peps.python.org/pep-0554/
PEP 554 – Multiple Interpreters in the Stdlib | peps.python.org
CPython has supported multiple interpreters in the same process (AKA “subinterpreters”) since version 1.5 (1997). The feature has been available via the C-API....
peps python554multipleinterpretersstdlib
https://peps.python.org/pep-0804/
PEP 804 – An external dependency registry and name mapping mechanism | peps.python.org
This PEP specifies a name mapping mechanism that allows packaging tools to map external dependency identifiers (as introduced in PEP 725) to their counterparts...
peps python804externaldependencyregistry
https://peps.python.org/pep-0585/
PEP 585 – Type Hinting Generics In Standard Collections | peps.python.org
Static typing as defined by PEPs 484, 526, 544, 560, and 563 was built incrementally on top of the existing Python runtime and constrained by existing syntax...
collections peps585typehintinggenerics
https://peps.python.org/pep-0011/
PEP 11 – CPython platform support | peps.python.org
This PEP documents how an operating system (platform) becomes supported in CPython, what platforms are currently supported, and documents past support.
platform supportpeps python11cpython
https://peps.python.org/pep-0207/
PEP 207 – Rich Comparisons | peps.python.org
This PEP proposes several new features for comparisons:
peps python207richcomparisons
https://peps.python.org/pep-0735/
PEP 735 – Dependency Groups in pyproject.toml | peps.python.org
This PEP specifies a mechanism for storing package requirements in pyproject.toml files such that they are not included in any built distribution of the...
dependency groupspyproject tomlpeps python735
https://peps.python.org/pep-0742/
PEP 742 – Narrowing types with TypeIs | peps.python.org
This PEP proposes a new special form, TypeIs, to allow annotating functions that can be used to narrow the type of a value, similar to the builtin...
peps python742narrowingtypes
https://peps.python.org/pep-0703/
PEP 703 – Making the Global Interpreter Lock Optional in CPython | peps.python.org
CPython’s global interpreter lock (“GIL”) prevents multiple threads from executing Python code at the same time. The GIL is an obstacle to using multi-core...
global interpreter lockcpython peps703makingoptional
https://peps.python.org/pep-0264/
PEP 264 – Future statements in simulated shells | peps.python.org
As noted in PEP 236, there is no clear way for “simulated interactive shells” to simulate the behaviour of __future__ statements in “real” interactive shells,...
peps python264futurestatementssimulated
https://peps.python.org/pep-0659/
PEP 659 – Specializing Adaptive Interpreter | peps.python.org
In order to perform well, virtual machines for dynamic languages must specialize the code that they execute to the types and values in the program being run....
peps python659specializingadaptiveinterpreter
https://peps.python.org/pep-0571/
PEP 571 – The manylinux2010 Platform Tag | peps.python.org
This PEP proposes the creation of a manylinux2010 platform tag to succeed the manylinux1 tag introduced by PEP 513. It also proposes that PyPI and pip both be...
platform tagpeps python571
https://peps.python.org/pep-0383/
PEP 383 – Non-decodable Bytes in System Character Interfaces | peps.python.org
File names, environment variables, and command line arguments are defined as being character data in POSIX; the C APIs however allow passing arbitrary bytes -...
peps python383nondecodablebytes
https://peps.python.org/pep-0448/
PEP 448 – Additional Unpacking Generalizations | peps.python.org
This PEP proposes extended usages of the * iterable unpacking operator and ** dictionary unpacking operators to allow unpacking in more positions, an arbitrary...
peps python448additionalunpacking
https://peps.python.org/pep-0225/
PEP 225 – Elementwise/Objectwise Operators | peps.python.org
This PEP describes a proposal to add new operators to Python which are useful for distinguishing elementwise and objectwise operations, and summarizes...
peps python225elementwiseoperators
https://peps.python.org/pep-0755/
PEP 755 – Implicit namespace policy for PyPI | peps.python.org
This PEP codifies an implementation of PEP 752 for PyPI 1.
peps python755implicitnamespacepolicy
https://peps.python.org/pep-0215/
PEP 215 – String Interpolation | peps.python.org
This document proposes a string interpolation feature for Python to allow easier string formatting. The suggested syntax change is the introduction of a ‘$’...
peps python215stringinterpolation
https://peps.python.org/pep-0318/
PEP 318 – Decorators for Functions and Methods | peps.python.org
The current method for transforming functions and methods (for instance, declaring them as a class or static method) is awkward and can lead to code that is...
peps python318decoratorsfunctionsmethods
https://peps.python.org/pep-0756/
PEP 756 – Add PyUnicode_Export() and PyUnicode_Import() C functions | peps.python.org
Add functions to the limited C API version 3.14:
peps python756addexportimport
https://peps.python.org/pep-0667/
PEP 667 – Consistent views of namespaces | peps.python.org
In early versions of Python all namespaces, whether in functions, classes or modules, were all implemented the same way: as a dictionary.
peps python667consistentviewsnamespaces
https://peps.python.org/pep-0556/
PEP 556 – Threaded garbage collection | peps.python.org
This PEP proposes a new optional mode of operation for CPython’s cyclic garbage collector (GC) where implicit (i.e. opportunistic) collections happen in a...
garbage collectionpeps python556threaded
https://peps.python.org/pep-0787/
PEP 787 – Safer subprocess usage using t-strings | peps.python.org
PEP 750 introduced template strings (t-strings) as a generalization of f-strings, providing a way to safely handle string interpolation in various contexts....
usage usingpeps python787safersubprocess
https://peps.python.org/pep-0573/
PEP 573 – Module State Access from C Extension Methods | peps.python.org
This PEP proposes to add a way for CPython extension methods to access context, such as the state of the modules they are defined in.
c extensionpeps python573modulestate
https://peps.python.org/pep-0655/
PEP 655 – Marking individual TypedDict items as required or potentially-missing | peps.python.org
PEP 589 defines notation for declaring a TypedDict with all required keys and notation for defining a TypedDict with all potentially-missing keys, however it...
peps python655markingindividualtypeddict
https://peps.python.org/pep-0227/
PEP 227 – Statically Nested Scopes | peps.python.org
This PEP describes the addition of statically nested scoping (lexical scoping) for Python 2.2, and as a source level option for python 2.1. In addition, Python...
peps python227staticallynestedscopes
https://peps.python.org/pep-0594/
PEP 594 – Removing dead batteries from the standard library | peps.python.org
This PEP proposed a list of standard library modules to be removed from the standard library. The modules are mostly historic data formats (e.g. Commodore and...
standard library peps594removingdeadbatteries
https://peps.python.org/pep-0293/
PEP 293 – Codec Error Handling Callbacks | peps.python.org
This PEP aims at extending Python’s fixed codec error handling schemes with a more flexible callback based approach.
error handlingpeps python293codeccallbacks
https://peps.python.org/pep-0814/
PEP 814 – Add frozendict built-in type | peps.python.org
A new public immutable type frozendict is added to the builtins module.
type peps814addfrozendictbuilt
https://peps.python.org/pep-0526/
PEP 526 – Syntax for Variable Annotations | peps.python.org
PEP 484 introduced type hints, a.k.a. type annotations. While its main focus was function annotations, it also introduced the notion of type comments to...
annotations peps python526syntaxvariable
https://peps.python.org/pep-0643/
PEP 643 – Metadata for Package Source Distributions | peps.python.org
Python package metadata is stored in the distribution file in a standard format, defined in the Core Metadata Specification. However, for source distributions,...
distributions peps python643metadatapackagesource
https://peps.python.org/pep-0747/
PEP 747 – Annotating Type Forms | peps.python.org
Type expressions provide a standardized way to specify types in the Python type system. When a type expression is evaluated at runtime, the resulting type form...
peps python747annotatingtypeforms
https://peps.python.org/pep-0272/
PEP 272 – API for Block Encryption Algorithms v1.0 | peps.python.org
This document specifies a standard API for secret-key block encryption algorithms such as DES or Rijndael, making it easier to switch between different...
v1 0 pepsencryption algorithms272apiblock
https://peps.python.org/pep-0581/
PEP 581 – Using GitHub Issues for CPython | peps.python.org
This PEP outlines the rationale for migration from Python’s issue tracker on Roundup to GitHub issues. See PEP 588 for the detailed migration plan.
using githubcpython peps581issues
https://peps.python.org/topic/typing/
Typing PEPs | peps.python.org
peps pythontyping
https://peps.python.org/pep-8013/
PEP 8013 – The External Council Governance Model | peps.python.org
This PEP proposes a new model of Python governance based on a Council of Auditors (CoA) tasked with making final decisions for the language. It differs from...
council governancepeps python8013externalmodel
https://peps.python.org/pep-0615/
PEP 615 – Support for the IANA Time Zone Database in the Standard Library | peps.python.org
This proposes adding a module, zoneinfo, to provide a concrete time zone implementation supporting the IANA time zone database. By default, zoneinfo will use...
iana time zonestandard library peps615supportdatabase
https://peps.python.org/pep-0572/
PEP 572 – Assignment Expressions | peps.python.org
This is a proposal for creating a way to assign to variables within an expression using the notation NAME := expr.
expressions peps572assignmentpython
https://peps.python.org/pep-0604/
PEP 604 – Allow writing union types as X | Y | peps.python.org
This PEP proposes overloading the | operator on types to allow writing Union[X, Y] as X | Y, and allows it to appear in isinstance and issubclass calls.
union typespeps python604allowwriting
https://peps.python.org/pep-0544/
PEP 544 – Protocols: Structural subtyping (static duck typing) | peps.python.org
Type hints introduced in PEP 484 can be used to specify type metadata for static type checkers and other third party tools. However, PEP 484 only specifies the...
duck typingpeps python544protocolsstructural
https://peps.python.org/pep-0524/
PEP 524 – Make os.urandom() blocking on Linux | peps.python.org
Modify os.urandom() to block on Linux 3.17 and newer until the OS urandom is initialized to increase the security.
peps python524makeosurandom
https://peps.python.org/pep-0632/
PEP 632 – Deprecate distutils module | peps.python.org
The distutils module 1 has for a long time recommended using the setuptools package 2 instead. Setuptools has recently integrated a complete copy of distutils...
peps python632deprecatedistutilsmodule
https://peps.python.org/pep-0303/
PEP 303 – Extend divmod() for Multiple Divisors | peps.python.org
This PEP describes an extension to the built-in divmod() function, allowing it to take multiple divisors, chaining several calls to divmod() into one.
peps python303extendmultipledivisors
https://peps.python.org/pep-0774/
PEP 774 – Removing the LLVM requirement for JIT builds | peps.python.org
Since Python 3.13, CPython has been able to be configured and built with an experimental just-in-time (JIT) compiler via the --enable-experimental-jit flag on...
peps python774removingllvmrequirement
https://peps.python.org/pep-0744/
PEP 744 – JIT Compilation | peps.python.org
Earlier this year, an experimental “just-in-time” compiler was merged into CPython’s main development branch. While recent CPython releases have included other...
peps python744jitcompilation
https://peps.python.org/pep-0483/
PEP 483 – The Theory of Type Hints | peps.python.org
This PEP lays out the theory referenced by PEP 484.
type hints peps483theorypython
https://peps.python.org/pep-3114/
PEP 3114 – Renaming iterator.next() to iterator.__next__() | peps.python.org
The iterator protocol in Python 2.x consists of two methods: __iter__() called on an iterable object to yield an iterator, and next() called on an iterator...
peps python3114renamingiteratornext
https://peps.python.org/pep-0574/
PEP 574 – Pickle protocol 5 with out-of-band data | peps.python.org
This PEP proposes to standardize a new pickle protocol version, and accompanying APIs to take full advantage of it:
peps python574pickleprotocolband
https://peps.python.org/pep-0442/
PEP 442 – Safe object finalization | peps.python.org
This PEP proposes to deal with the current limitations of object finalization. The goal is to be able to define and run finalizers for any object, regardless...
peps python442safeobjectfinalization
https://peps.python.org/pep-0611/
PEP 611 – The one million limit | peps.python.org
This PR proposes a soft limit of one million (1 000 000), and a larger hard limit for various aspects of Python code and its implementation.
one millionpeps python611limit
https://peps.python.org/pep-0730/
PEP 730 – Adding iOS as a supported platform | peps.python.org
This PEP proposes adding iOS as a supported platform in CPython. The initial goal is to achieve Tier 3 support for Python 3.13. This PEP describes the...
peps python730addingiossupported
https://peps.python.org/pep-0705/
PEP 705 – TypedDict: Read-only items | peps.python.org
PEP 589 defines the structural type TypedDict for dictionaries with a fixed set of keys. As TypedDict is a mutable type, it is difficult to correctly annotate...
peps python705typeddictreaditems
https://peps.python.org/pep-0234/
PEP 234 – Iterators | peps.python.org
This document proposes an iteration interface that objects can provide to control the behaviour of for loops. Looping is customized by providing a method that...
peps python234iterators
https://peps.python.org/pep-0480/
PEP 480 – Surviving a Compromise of PyPI: End-to-end signing of packages | peps.python.org
Proposed is an extension to PEP 458 that adds support for end-to-end signing and the maximum security model. End-to-end signing allows both PyPI and developers...
packages peps480survivingcompromisepypi
https://peps.python.org/pep-3151/
PEP 3151 – Reworking the OS and IO exception hierarchy | peps.python.org
The standard exception hierarchy is an important part of the Python language. It has two defining qualities: it is both generic and selective. Generic in that...
peps python3151reworkingosio
https://peps.python.org/pep-0636/
PEP 636 – Structural Pattern Matching: Tutorial | peps.python.org
This PEP is a tutorial for the pattern matching introduced by PEP 634.
pattern matchingpeps python636structuraltutorial
https://peps.python.org/pep-0542/
PEP 542 – Dot Notation Assignment In Function Header | peps.python.org
Function definitions only allow simple function names to be used, even though functions are assignable first class objects.
dot notationpeps python542assignmentfunction
https://peps.python.org/pep-0684/
PEP 684 – A Per-Interpreter GIL | peps.python.org
Since Python 1.5 (1997), CPython users can run multiple interpreters in the same process. However, interpreters in the same process have always shared a...
peps python684perinterpretergil
https://peps.python.org/pep-0759/
PEP 759 – External Wheel Hosting | peps.python.org
This PEP proposes a mechanism by which projects hosted on pypi.org can safely host wheel artifacts on external sites other than PyPI. This PEP explicitly does...
peps python759externalwheelhosting
https://peps.python.org/pep-0563/
PEP 563 – Postponed Evaluation of Annotations | peps.python.org
PEP 3107 introduced syntax for function annotations, but the semantics were deliberately left undefined. PEP 484 introduced a standard meaning to annotations:...
annotations peps python563postponedevaluation
https://peps.python.org/pep-0455/
PEP 455 – Adding a key-transforming dictionary to collections | peps.python.org
This PEP proposes a new data structure for the collections module, called “TransformDict” in this PEP. This structure is a mutable mapping which transforms the...
collections peps455addingkeytransforming
https://peps.python.org/pep-0290/
PEP 290 – Code Migration and Modernization | peps.python.org
This PEP is a collection of procedures and ideas for updating Python applications when newer versions of Python are installed.
code migrationpeps python290modernization
https://peps.python.org/pep-0463/
PEP 463 – Exception-catching expressions | peps.python.org
Just as PEP 308 introduced a means of value-based conditions in an expression, this system allows exception-based conditions to be used as part of an...
expressions peps463exceptioncatchingpython
https://peps.python.org/pep-0411/
PEP 411 – Provisional packages in the Python standard library | peps.python.org
The process of including a new package into the Python standard library is hindered by the API lock-in and promise of backward compatibility implied by a...
python standard librarypep411provisionalpackages
https://peps.python.org/pep-0249/
PEP 249 – Python Database API Specification v2.0 | peps.python.org
This API has been defined to encourage similarity between the Python modules that are used to access databases. By doing this, we hope to achieve a consistency...
specification v2 0python databasepep249api