Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 0 – Index of Python Enhancement Proposals (PEPs)

Author:
The PEP Editors
Status:
Active
Type:
Informational
Created:
13-Jul-2000

Table of Contents

Introduction

This PEP contains the index of all Python Enhancement Proposals, known as PEPs. PEP numbers are assigned by the PEP editors, and once assigned are never changed. The version control history of the PEP texts represent their historical record.

Topics

PEPs for specialist subjects are indexed by topic.

Index by Category

Meta-PEPs (PEPs about PEPs or Processes)

PEP Title Authors
PA 1 PEP Purpose and Guidelines Barry Warsaw, Jeremy Hylton, David Goodger, Alyssa Coghlan
PA 2 Procedure for Adding New Modules Brett Cannon, Martijn Faassen
PA 4 Deprecation of Standard Modules Brett Cannon, Martin von Löwis
PA 7 Style Guide for C Code Guido van Rossum, Barry Warsaw
PA 8 Style Guide for Python Code Guido van Rossum, Barry Warsaw, Alyssa Coghlan
PA 10 Voting Guidelines Barry Warsaw
PA 11 CPython platform support Martin von Löwis, Brett Cannon
PA 12 Sample reStructuredText PEP Template David Goodger, Barry Warsaw, Brett Cannon
PA 13 Python Language Governance The Python core team and community
PA 387 Backwards Compatibility Policy Benjamin Peterson
PA 581 Using GitHub Issues for CPython Mariatta
PA 609 Python Packaging Authority (PyPA) Governance Dustin Ingram, Pradyun Gedam, Sumana Harihareswara
PA 676 PEP Infrastructure Process Adam Turner
PA 729 Typing governance process Jelle Zijlstra, Shantanu Jain
PA 731 C API Working Group Charter Guido van Rossum, Petr Viktorin, Victor Stinner, Steve Dower, Irit Katriel

Other Informational PEPs

PEP Title Authors
IA 20 The Zen of Python Tim Peters
IA 101 Doing Python Releases 101 Barry Warsaw, Guido van Rossum
IF 247 API for Cryptographic Hash Functions A.M. Kuchling
IF 248 Python Database API Specification v1.0 Greg Stein, Marc-André Lemburg
IF 249 Python Database API Specification v2.0 Marc-André Lemburg
IA 257 Docstring Conventions David Goodger, Guido van Rossum
IF 272 API for Block Encryption Algorithms v1.0 A.M. Kuchling
IA 287 reStructuredText Docstring Format David Goodger
IA 290 Code Migration and Modernization Raymond Hettinger
IF 291 Backward Compatibility for the Python 2 Standard Library Neal Norwitz 2.3
IF 333 Python Web Server Gateway Interface v1.0 Phillip J. Eby
IA 394 The “python” Command on Unix-Like Systems Kerrick Staley, Alyssa Coghlan, Barry Warsaw, Petr Viktorin, Miro Hrončok, Carol Willing
IF 399 Pure Python/C Accelerator Module Compatibility Requirements Brett Cannon 3.3
IF 430 Migrating to Python 3 as the default online documentation Alyssa Coghlan
IA 434 IDLE Enhancement Exception for All Branches Todd Rovito, Terry Reedy
IF 452 API for Cryptographic Hash Functions v2.0 A.M. Kuchling, Christian Heimes
IF 457 Notation For Positional-Only Parameters Larry Hastings
IF 482 Literature Overview for Type Hints Łukasz Langa
IF 483 The Theory of Type Hints Guido van Rossum, Ivan Levkivskyi
IA 514 Python registration in the Windows registry Steve Dower
IA 569 Python 3.8 Release Schedule Łukasz Langa 3.8
IF 579 Refactoring C functions and methods Jeroen Demeyer
IA 596 Python 3.9 Release Schedule Łukasz Langa 3.9
IA 602 Annual Release Cycle for Python Łukasz Langa 3.9
IF 607 Reducing CPython’s Feature Delivery Latency Łukasz Langa, Steve Dower, Alyssa Coghlan 3.9
IA 619 Python 3.10 Release Schedule Pablo Galindo Salgado 3.10
IF 630 Isolating Extension Modules Petr Viktorin
IF 635 Structural Pattern Matching: Motivation and Rationale Tobias Kohn, Guido van Rossum 3.10
IF 636 Structural Pattern Matching: Tutorial Daniel F Moisset 3.10
IA 664 Python 3.11 Release Schedule Pablo Galindo Salgado 3.11
IA 672 Unicode-related Security Considerations for Python Petr Viktorin
IA 693 Python 3.12 Release Schedule Thomas Wouters 3.12
IA 719 Python 3.13 Release Schedule Thomas Wouters 3.13
IA 801 Reserved Barry Warsaw
IF 3333 Python Web Server Gateway Interface v1.0.1 Phillip J. Eby
IF 8000 Python Language Governance Proposal Overview Barry Warsaw
IF 8002 Open Source Governance Survey Barry Warsaw, Łukasz Langa, Antoine Pitrou, Doug Hellmann, Carol Willing
IA 8016 The Steering Council Model Nathaniel J. Smith, Donald Stufft
IF 8100 January 2019 Steering Council election Nathaniel J. Smith, Ee Durbin
IF 8101 2020 Term Steering Council election Ewa Jodlowska, Ee Durbin
IF 8102 2021 Term Steering Council election Ewa Jodlowska, Ee Durbin, Joe Carey
IF 8103 2022 Term Steering Council election Ewa Jodlowska, Ee Durbin, Joe Carey
IA 8104 2023 Term Steering Council election Ee Durbin
IA 8105 2024 Term Steering Council election Ee Durbin

Provisional PEPs (provisionally accepted; interface may still change)

PEP Title Authors
SP 708 Extending the Repository API to Mitigate Dependency Confusion Attacks Donald Stufft
SP 723 Inline script metadata Ofek Lev

Accepted PEPs (accepted; may not be implemented yet)

PEP Title Authors
SA 458 Secure PyPI downloads with signed repository metadata Trishank Karthik Kuppusamy, Vladimir Diaz, Marina Moore, Lukas Puehringer, Joshua Lock, Lois Anne DeLong, Justin Cappos
SA 544 Protocols: Structural subtyping (static duck typing) Ivan Levkivskyi, Jukka Lehtosalo, Łukasz Langa 3.8
SA 560 Core support for typing module and generic types Ivan Levkivskyi 3.7
SA 563 Postponed Evaluation of Annotations Łukasz Langa 3.7
SA 578 Python Runtime Audit Hooks Steve Dower 3.8
SA 586 Literal Types Michael Lee, Ivan Levkivskyi, Jukka Lehtosalo 3.8
SA 589 TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys Jukka Lehtosalo 3.8
SA 590 Vectorcall: a fast calling protocol for CPython Mark Shannon, Jeroen Demeyer 3.8
SA 591 Adding a final qualifier to typing Michael J. Sullivan, Ivan Levkivskyi 3.8
SA 593 Flexible function and variable annotations Till Varoquaux, Konstantin Kashin 3.9
SA 604 Allow writing union types as X | Y Philippe PRADOS, Maggie Moss 3.10
SA 612 Parameter Specification Variables Mark Mendoza 3.10
SA 613 Explicit Type Aliases Shannon Zhu 3.10
SA 615 Support for the IANA Time Zone Database in the Standard Library Paul Ganssle 3.9
SA 617 New PEG parser for CPython Guido van Rossum, Pablo Galindo, Lysandros Nikolaou 3.9
SA 625 Filename of a Source Distribution Tzu-ping Chung, Paul Moore
SA 646 Variadic Generics Mark Mendoza, Matthew Rahtz, Pradeep Kumar Srinivasan, Vincent Siles 3.11
SA 647 User-Defined Type Guards Eric Traut 3.10
SA 649 Deferred Evaluation Of Annotations Using Descriptors Larry Hastings 3.13
SA 655 Marking individual TypedDict items as required or potentially-missing David Foster 3.11
SA 658 Serve Distribution Metadata in the Simple Repository API Tzu-ping Chung
SA 668 Marking Python base environments as “externally managed” Geoffrey Thomas, Matthias Klose, Filipe Laíns, Donald Stufft, Tzu-ping Chung, Stefano Rivera, Elana Hashman, Pradyun Gedam
SA 669 Low Impact Monitoring for CPython Mark Shannon 3.12
SA 673 Self Type Pradeep Kumar Srinivasan, James Hilton-Balfe 3.11
SA 675 Arbitrary Literal String Type Pradeep Kumar Srinivasan, Graham Bleaney 3.11
SA 681 Data Class Transforms Erik De Bonte, Eric Traut 3.11
SA 683 Immortal Objects, Using a Fixed Refcount Eric Snow, Eddie Elizondo 3.12
SA 684 A Per-Interpreter GIL Eric Snow 3.12
SA 685 Comparison of extra names for optional distribution dependencies Brett Cannon
SA 686 Make UTF-8 mode default Inada Naoki 3.15
SA 687 Isolating modules in the standard library Erlend Egeberg Aasland, Petr Viktorin 3.12
SA 688 Making the buffer protocol accessible in Python Jelle Zijlstra 3.12
SA 691 JSON-based Simple API for Python Package Indexes Donald Stufft, Pradyun Gedam, Cooper Lees, Dustin Ingram
SA 692 Using TypedDict for more precise **kwargs typing Franek Magiera 3.12
SA 695 Type Parameter Syntax Eric Traut 3.12
SA 698 Override Decorator for Static Typing Steven Troxler, Joshua Xu, Shannon Zhu 3.12
SA 699 Remove private dict version field added in PEP 509 Ken Jin 3.12
SA 700 Additional Fields for the Simple API for Package Indexes Paul Moore
SA 701 Syntactic formalization of f-strings Pablo Galindo, Batuhan Taskaya, Lysandros Nikolaou, Marta Gómez Macías 3.12
SA 702 Marking deprecations using the type system Jelle Zijlstra 3.13
SA 703 Making the Global Interpreter Lock Optional in CPython Sam Gross 3.13
SA 714 Rename dist-info-metadata in the Simple API Donald Stufft

Open PEPs (under consideration)

PEP Title Authors
S 467 Minor API improvements for binary sequences Alyssa Coghlan, Ethan Furman 3.12
S 480 Surviving a Compromise of PyPI: End-to-end signing of packages Trishank Karthik Kuppusamy, Vladimir Diaz, Justin Cappos, Marina Moore
I 588 GitHub Issues Migration Plan Mariatta
S 603 Adding a frozenmap type to collections Yury Selivanov
S 638 Syntactic Macros Mark Shannon
S 639 Improving License Clarity with Better Package Metadata Philippe Ombredanne, C.A.M. Gerlach
S 653 Precise Semantics for Pattern Matching Mark Shannon
I 659 Specializing Adaptive Interpreter Mark Shannon
S 661 Sentinel Values Tal Einat
S 667 Consistent views of namespaces Mark Shannon 3.13
S 671 Syntax for late-bound function argument defaults Chris Angelico 3.12
S 679 Allow parentheses in assert statements Pablo Galindo Salgado 3.12
S 694 Upload 2.0 API for Python Package Repositories Donald Stufft
S 696 Type defaults for TypeVarLikes James Hilton-Balfe 3.12
S 705 TypedDict: Read-only items Alice Purcell 3.13
S 710 Recording the provenance of installed packages Fridolín Pokorný
S 711 PyBI: a standard format for distributing Python Binaries Nathaniel J. Smith
S 712 Adding a “converter” parameter to dataclasses.field Joshua Cannon 3.13
S 718 Subscriptable functions James Hilton-Balfe 3.13
I 720 Cross-compiling Python packages Filipe Laíns 3.12
S 724 Stricter Type Guards Rich Chiodo, Eric Traut, Erik De Bonte 3.13
S 725 Specifying external dependencies in pyproject.toml Pradyun Gedam, Ralf Gommers
S 726 Module __setattr__ and __delattr__ Sergey B Kirpichev 3.13
S 727 Documentation in Annotated Metadata Sebastián Ramírez 3.13
S 730 Adding iOS as a supported platform Russell Keith-Magee 3.13
P 732 The Python Documentation Editorial Board Joanna Jablonski
I 733 An Evaluation of Python’s Public C API Erlend Egeberg Aasland, Domenico Andreoli, Stefan Behnel, Carl Friedrich Bolz-Tereick, Simon Cross, Steve Dower, Tim Felgentreff, David Hewitt, Shantanu Jain, Wenzel Jakob, Irit Katriel, Marc-Andre Lemburg, Donghee Na, Karl Nelson, Ronald Oussoren, Antoine Pitrou, Neil Schemenauer, Mark Shannon, Stepan Sindelar, Gregory P. Smith, Eric Snow, Victor Stinner, Guido van Rossum, Petr Viktorin, Carol Willing, William Woodruff, David Woods, Jelle Zijlstra
S 734 Multiple Interpreters in the Stdlib Eric Snow 3.13
S 735 Dependency Groups in pyproject.toml Stephen Rosen
S 737 Unify type name formatting Victor Stinner 3.13

Finished PEPs (done, with a stable interface)

PEP Title Authors
SF 100 Python Unicode Integration Marc-André Lemburg 2.0
SF 201 Lockstep Iteration Barry Warsaw 2.0
SF 202 List Comprehensions Barry Warsaw 2.0
SF 203 Augmented Assignments Thomas Wouters 2.0
SF 205 Weak References Fred L. Drake, Jr. 2.1
SF 207 Rich Comparisons Guido van Rossum, David Ascher 2.1
SF 208 Reworking the Coercion Model Neil Schemenauer, Marc-André Lemburg 2.1
SF 214 Extended Print Statement Barry Warsaw 2.0
SF 217 Display Hook for Interactive Use Moshe Zadka 2.1
SF 218 Adding a Built-In Set Object Type Greg Wilson, Raymond Hettinger 2.2
SF 221 Import As Thomas Wouters 2.0
SF 223 Change the Meaning of x Escapes Tim Peters 2.0
SF 227 Statically Nested Scopes Jeremy Hylton 2.1
SF 229 Using Distutils to Build Python A.M. Kuchling 2.1
SF 230 Warning Framework Guido van Rossum 2.1
SF 232 Function Attributes Barry Warsaw 2.1
SF 234 Iterators Ka-Ping Yee, Guido van Rossum 2.1
SF 235 Import on Case-Insensitive Platforms Tim Peters 2.1
SF 236 Back to the __future__ Tim Peters 2.1
SF 237 Unifying Long Integers and Integers Moshe Zadka, Guido van Rossum 2.2
SF 238 Changing the Division Operator Moshe Zadka, Guido van Rossum 2.2
SF 250 Using site-packages on Windows Paul Moore 2.2
SF 252 Making Types Look More Like Classes Guido van Rossum 2.2
SF 253 Subtyping Built-in Types Guido van Rossum 2.2
SF 255 Simple Generators Neil Schemenauer, Tim Peters, Magnus Lie Hetland 2.2
SF 260 Simplify xrange() Guido van Rossum 2.2
SF 261 Support for “wide” Unicode characters Paul Prescod 2.2
SF 263 Defining Python Source Code Encodings Marc-André Lemburg, Martin von Löwis 2.3
SF 264 Future statements in simulated shells Michael Hudson 2.2
SF 273 Import Modules from Zip Archives James C. Ahlstrom 2.3
SF 274 Dict Comprehensions Barry Warsaw 2.7, 3.0
SF 277 Unicode file name support for Windows NT Neil Hodgson 2.3
SF 278 Universal Newline Support Jack Jansen 2.3
SF 279 The enumerate() built-in function Raymond Hettinger 2.3
SF 282 A Logging System Vinay Sajip, Trent Mick 2.3
SF 285 Adding a bool type Guido van Rossum 2.3
SF 289 Generator Expressions Raymond Hettinger 2.4
SF 292 Simpler String Substitutions Barry Warsaw 2.4
SF 293 Codec Error Handling Callbacks Walter Dörwald 2.3
SF 301 Package Index and Metadata for Distutils Richard Jones 2.3
SF 302 New Import Hooks Just van Rossum, Paul Moore 2.3
SF 305 CSV File API Kevin Altis, Dave Cole, Andrew McNamara, Skip Montanaro, Cliff Wells 2.3
SF 307 Extensions to the pickle protocol Guido van Rossum, Tim Peters 2.3
SF 308 Conditional Expressions Guido van Rossum, Raymond Hettinger 2.5
SF 309 Partial Function Application Peter Harris 2.5
SF 311 Simplified Global Interpreter Lock Acquisition for Extensions Mark Hammond 2.3
SF 318 Decorators for Functions and Methods Kevin D. Smith, Jim J. Jewett, Skip Montanaro, Anthony Baxter 2.4
SF 322 Reverse Iteration Raymond Hettinger 2.4
SF 324 subprocess - New process module Peter Astrand 2.4
SF 327 Decimal Data Type Facundo Batista 2.4
SF 328 Imports: Multi-Line and Absolute/Relative Aahz 2.4, 2.5, 2.6
SF 331 Locale-Independent Float/String Conversions Christian R. Reis 2.4
SF 338 Executing modules as scripts Alyssa Coghlan 2.5
SF 341 Unifying try-except and try-finally Georg Brandl 2.5
SF 342 Coroutines via Enhanced Generators Guido van Rossum, Phillip J. Eby 2.5
SF 343 The “with” Statement Guido van Rossum, Alyssa Coghlan 2.5
SF 352 Required Superclass for Exceptions Brett Cannon, Guido van Rossum 2.5
SF 353 Using ssize_t as the index type Martin von Löwis 2.5
SF 357 Allowing Any Object to be Used for Slicing Travis Oliphant 2.5
SF 358 The “bytes” Object Neil Schemenauer, Guido van Rossum 2.6, 3.0
SF 362 Function Signature Object Brett Cannon, Jiwon Seo, Yury Selivanov, Larry Hastings 3.3
SF 366 Main module explicit relative imports Alyssa Coghlan 2.6, 3.0
SF 370 Per user site-packages directory Christian Heimes 2.6, 3.0
SF 371 Addition of the multiprocessing package to the standard library Jesse Noller, Richard Oudkerk 2.6, 3.0
SF 372 Adding an ordered dictionary to collections Armin Ronacher, Raymond Hettinger 2.7, 3.1
SF 376 Database of Installed Python Distributions Tarek Ziadé 2.7, 3.2
SF 378 Format Specifier for Thousands Separator Raymond Hettinger 2.7, 3.1
SF 380 Syntax for Delegating to a Subgenerator Gregory Ewing 3.3
SF 383 Non-decodable Bytes in System Character Interfaces Martin von Löwis 3.1
SF 384 Defining a Stable ABI Martin von Löwis 3.2
SF 389 argparse - New Command Line Parsing Module Steven Bethard 2.7, 3.2
SF 391 Dictionary-Based Configuration For Logging Vinay Sajip 2.7, 3.2
SF 393 Flexible String Representation Martin von Löwis 3.3
SF 397 Python launcher for Windows Mark Hammond, Martin von Löwis 3.3
SF 405 Python Virtual Environments Carl Meyer 3.3
SF 409 Suppressing exception context Ethan Furman 3.3
SF 412 Key-Sharing Dictionary Mark Shannon 3.3