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.

API

The PEPS API is a JSON file of metadata about all the published PEPs. Read more here.

Numerical Index

The numerical index contains a table of all PEPs, ordered by number.

Index by Category

Process and Meta-PEPs

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 545 Python Documentation Translations Julien Palard, Inada Naoki, Victor Stinner
PA 602 Annual Release Cycle for Python Łukasz Langa 3.9
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
PA 732 The Python Documentation Editorial Board Joanna Jablonski
PA 761 Deprecating PGP signatures for CPython artifacts Seth Michael Larson 3.14

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 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
IF 579 Refactoring C functions and methods Jeroen Demeyer
IF 588 GitHub Issues Migration Plan Mariatta
IA 596 Python 3.9 Release Schedule Ł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
IF 659 Specializing Adaptive Interpreter Mark Shannon
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
IF 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
IA 745 Python 3.14 Release Schedule Hugo van Kemenade 3.14
IF 762 REPL-acing the default REPL Pablo Galindo Salgado, Łukasz Langa, Lysandros Nikolaou, Emily Morehouse-Valcarcel 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
IF 8104 2023 Term Steering Council election Ee Durbin
IF 8105 2024 Term Steering Council election Ee Durbin
IA 8106 2025 Term Steering Council election Ee Durbin

Provisional PEPs (provisionally accepted; interface may still change)

PEP Title Authors
SP 639 Improving License Clarity with Better Package Metadata Philippe Ombredanne, C.A.M. Gerlach, Karolina Surma
SP 708 Extending the Repository API to Mitigate Dependency Confusion Attacks Donald Stufft
SP 740 Index support for digital attestations William Woodruff, Facundo Tuesca, Dustin Ingram

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 563 Postponed Evaluation of Annotations Łukasz Langa 3.7
SA 590 Vectorcall: a fast calling protocol for CPython Mark Shannon, Jeroen Demeyer 3.8
SA 625 Filename of a Source Distribution Tzu-ping Chung, Paul Moore
SA 649 Deferred Evaluation Of Annotations Using Descriptors Larry Hastings 3.14
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 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 691 JSON-based Simple API for Python Package Indexes Donald Stufft, Pradyun Gedam, Cooper Lees, Dustin Ingram
SA 699 Remove private dict version field added in PEP 509 Ken Jin 3.12
SA 701 Syntactic formalization of f-strings Pablo Galindo, Batuhan Taskaya, Lysandros Nikolaou, Marta Gómez Macías 3.12
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
SA 735 Dependency Groups in pyproject.toml Stephen Rosen
SA 753 Uniform project URLs in core metadata William Woodruff, Facundo Tuesca

Open PEPs (under consideration)

PEP Title Authors
S 467 Minor API improvements for binary sequences Alyssa Coghlan, Ethan Furman 3.13
S 480 Surviving a Compromise of PyPI: End-to-end signing of packages Trishank Karthik Kuppusamy, Vladimir Diaz, Justin Cappos, Marina Moore
S 603 Adding a frozenmap type to collections Yury Selivanov
S 638 Syntactic Macros Mark Shannon
S 653 Precise Semantics for Pattern Matching Mark Shannon
S 661 Sentinel Values Tal Einat
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 710 Recording the provenance of installed packages Fridolín Pokorný
S 711 PyBI: a standard format for distributing Python Binaries Nathaniel J. Smith
S 718 Subscriptable functions James Hilton-Balfe 3.13
I 720 Cross-compiling Python packages Filipe Laíns 3.12
S 725 Specifying external dependencies in pyproject.toml Pradyun Gedam, Ralf Gommers
S 727 Documentation in Annotated Metadata Sebastián Ramírez 3.13
S 728 TypedDict with Typed Extra Items Zixuan James Li 3.14
S 736 Shorthand syntax for keyword arguments at invocation Joshua Bambrick, Chris Angelico 3.14
S 739 Static description file for build details of Python installations Filipe Laíns 3.14
S 743 Add Py_COMPAT_API_VERSION to the Python C API Victor Stinner, Petr Viktorin 3.14
I 744 JIT Compilation Brandt Bucher, Savannah Ostrowski 3.13
S 746 Type checking Annotated metadata Adrian Garcia Badaracco 3.14
S 747 Annotating Type Forms David Foster, Eric Traut 3.14
S 749 Implementing PEP 649 Jelle Zijlstra 3.14
S 750 Template Strings Jim Baker, Guido van Rossum, Paul Everitt, Koudai Aono, Lysandros Nikolaou, Dave Peck 3.14
S 751 A file format to record Python dependencies for installation reproducibility Brett Cannon
S 752 Implicit namespaces for package repositories Ofek Lev
P 755 Implicit namespace policy for PyPI Ofek Lev
S 757 C API to import-export Python integers Sergey B Kirpichev, Victor Stinner 3.14
S 758 Allow except and except* expressions without parentheses Pablo Galindo, Brett Cannon 3.14
S 759 External Wheel Hosting Barry Warsaw, Ethan Smith
S 763 Limiting deletions on PyPI William Woodruff, Alexis Challande
S 765 Disallow return/break/continue that exit a finally block Irit Katriel, Alyssa Coghlan 3.14
I 766 Explicit Priority Choices Among Multiple Indexes Michael Sarahan
S 777 How to Re-invent the Wheel Ethan Smith
S 789 Preventing task-cancellation bugs by limiting yield in async generators Zac Hatfield-Dodds, Nathaniel J. Smith 3.14
P 2026 Calendar versioning for Python Hugo van Kemenade 3.26

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
SF 414 Explicit Unicode Literal for Python 3.3 Armin Ronacher, Alyssa Coghlan 3.3
SF 415 Implement context suppression with exception attributes Benjamin Peterson 3.3
SF 417 Including mock in the Standard Library Michael Foord 3.3
SF 418 Add monotonic time, performance counter, and process time functions Cameron Simpson, Jim J. Jewett, Stephen J. Turnbull, Victor Stinner 3.3
SF 420 Implicit Namespace Packages Eric V. Smith 3.3
SF 421 Adding sys.implementation Eric Snow 3.3
SF 424 A method for exposing a length hint Alex Gaynor 3.4
SF 425 Compatibility Tags for Built Distributions Daniel Holth 3.4
SF 427 The Wheel Binary Package Format 1.0 Daniel Holth
SF 428 The pathlib module – object-oriented filesystem paths Antoine Pitrou 3.4
SF 435 Adding an Enum type to the Python standard library Barry Warsaw, Eli Bendersky, Ethan Furman 3.4
SF 436 The Argument Clinic DSL Larry Hastings 3.4
SF 440 Version Identification and Dependency Specification Alyssa Coghlan, Donald Stufft
SF 441 Improving Python ZIP Application Support Daniel Holth, Paul Moore 3.5
SF 442 Safe object finalization Antoine Pitrou 3.4
SF 443 Single-dispatch generic functions Łukasz Langa 3.4
SF 445 Add new APIs to customize Python memory allocators Victor Stinner 3.4
SF 446 Make newly created file descriptors non-inheritable Victor Stinner 3.4
SF 448 Additional Unpacking Generalizations Joshua Landau 3.5
SF 450 Adding A Statistics Module To The Standard Library Steven D’Aprano 3.4
SF 451 A ModuleSpec Type for the Import System Eric Snow 3.4
SF 453 Explicit bootstrapping of pip in Python installations Donald Stufft, Alyssa Coghlan
SF 454 Add a new tracemalloc module to trace Python memory allocations Victor Stinner 3.4
SF 456 Secure and interchangeable hash algorithm Christian Heimes 3.4
SF 461 Adding % formatting to bytes and bytearray Ethan Furman 3.5
SF 465 A dedicated infix operator for matrix multiplication Nathaniel J. Smith 3.5
SF 466 Network Security Enhancements for Python 2.7.x Alyssa Coghlan 2.7.9
SF 468 Preserving the order of **kwargs in a function. Eric Snow 3.6
SF 471 os.scandir() function – a better and faster directory iterator Ben Hoyt 3.5
SF 475 Retry system calls failing with EINTR Charles-François Natali, Victor Stinner 3.5
SF 476 Enabling certificate verification by default for stdlib http clients Alex Gaynor 2.7.9, 3.4.3, 3.5
SF 477 Backport ensurepip (PEP 453) to Python 2.7 Donald Stufft, Alyssa Coghlan
SF 479 Change StopIteration handling inside generators Chris Angelico, Guido van Rossum 3.5
SF 484 Type Hints Guido van Rossum, Jukka Lehtosalo, Łukasz Langa 3.5
SF 485 A Function for testing approximate equality Christopher Barker 3.5
SF 486 Make the Python Launcher aware of virtual environments Paul Moore 3.5
SF 487 Simpler customisation of class creation Martin Teichmann 3.6
SF 488 Elimination of PYO files Brett Cannon 3.5
SF 489 Multi-phase extension module initialization Petr Viktorin, Stefan Behnel, Alyssa Coghlan 3.5
SF 492 Coroutines with async and await syntax Yury Selivanov 3.5
SF 493 HTTPS verification migration tools for Python 2.7 Alyssa Coghlan, Robert Kuska, Marc-André Lemburg 2.7.12
SF 495 Local Time Disambiguation Alexander Belopolsky, Tim Peters 3.6
SF 498 Literal String Interpolation Eric V. Smith 3.6
SF 503 Simple Repository API Donald Stufft
SF 506 Adding A Secrets Module To The Standard Library Steven D’Aprano 3.6
SF 508 Dependency specification for Python Software Packages Robert Collins
SF 515 Underscores in Numeric Literals Georg Brandl, Serhiy Storchaka 3.6
SF 517 A build-system independent format for source trees Nathaniel J. Smith, Thomas Kluyver
SF 518 Specifying Minimum Build System Requirements for Python Projects Brett Cannon, Nathaniel J. Smith, Donald Stufft
SF 519 Adding a file system path protocol Brett Cannon, Koos Zevenhoven 3.6
SF 520 Preserving Class Attribute Definition Order Eric Snow 3.6
SF 523 Adding a frame evaluation API to CPython Brett Cannon, Dino Viehland 3.6
SF 524 Make os.urandom() blocking on Linux Victor Stinner 3.6
SF 525 Asynchronous Generators Yury Selivanov 3.6
SF 526 Syntax for Variable Annotations Ryan Gonzalez, Philip House, Ivan Levkivskyi, Lisa Roach, Guido van Rossum 3.6
SF 527 Removing Un(der)used file types/extensions on PyPI Donald Stufft
SF 528 Change Windows console encoding to UTF-8 Steve Dower 3.6
SF 529 Change Windows filesystem encoding to UTF-8 Steve Dower 3.6
SF 530 Asynchronous Comprehensions Yury Selivanov 3.6
SF 538 Coercing the legacy C locale to a UTF-8 based locale Alyssa Coghlan 3.7
SF 539 A New C-API for Thread-Local Storage in CPython Erik M. Bray, Masayuki Yamamoto 3.7
SF 540 Add a new UTF-8 Mode Victor Stinner 3.7
SF 544 Protocols: Structural subtyping (static duck typing) Ivan Levkivskyi, Jukka Lehtosalo, Łukasz Langa 3.8
SF 552 Deterministic pycs Benjamin Peterson 3.7
SF 553 Built-in breakpoint() Barry Warsaw 3.7
SF 557 Data Classes Eric V. Smith 3.7
SF 560 Core support for typing module and generic types Ivan Levkivskyi 3.7
SF 561 Distributing and Packaging Type Information Ethan Smith 3.7
SF 562 Module __getattr__ and __dir__ Ivan Levkivskyi 3.7
SF 564 Add new time functions with nanosecond resolution Victor Stinner 3.7
SF 565 Show DeprecationWarning in __main__ Alyssa Coghlan 3.7
SF 566 Metadata for Python Software Packages 2.1 Dustin Ingram 3.x
SF 567 Context Variables Yury Selivanov 3.7
SF 570 Python Positional-Only Parameters Larry Hastings, Pablo Galindo, Mario Corchero, Eric N. Vander Weele 3.8
SF 572 Assignment Expressions Chris Angelico, Tim Peters, Guido van Rossum 3.8
SF 573 Module State Access from C Extension Methods Petr Viktorin, Alyssa Coghlan, Eric Snow, Marcel Plch 3.9
SF 574 Pickle protocol 5 with out-of-band data Antoine Pitrou 3.8
SF 578 Python Runtime Audit Hooks Steve Dower 3.8
SF 584 Add Union Operators To dict Steven D’Aprano, Brandt Bucher 3.9
SF 585 Type Hinting Generics In Standard Collections Łukasz Langa 3.9
SF 586 Literal Types Michael Lee, Ivan Levkivskyi, Jukka Lehtosalo 3.8
SF 587 Python Initialization Configuration Victor Stinner, Alyssa Coghlan 3.8
SF 589 TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys Jukka Lehtosalo 3.8
SF 591 Adding a final qualifier to typing Michael J. Sullivan, Ivan Levkivskyi 3.8
SF 592 Adding “Yank” Support to the Simple API Donald Stufft
SF 593 Flexible function and variable annotations Till Varoquaux, Konstantin Kashin 3.9
SF 594 Removing dead batteries from the standard library Christian Heimes, Brett Cannon 3.11
SF 597 Add optional EncodingWarning Inada Naoki 3.10
SF 600 Future ‘manylinux’ Platform Tags for Portable Linux Built Distributions Nathaniel J. Smith, Thomas Kluyver
SF 604 Allow writing union types as X | Y Philippe PRADOS, Maggie Moss 3.10
SF 610 Recording the Direct URL Origin of installed distributions Stéphane Bidoul, Chris Jerdonek
SF 612 Parameter Specification Variables Mark Mendoza 3.10
SF 613 Explicit Type Aliases Shannon Zhu 3.10
SF 614 Relaxing Grammar Restrictions On Decorators Brandt Bucher 3.9
SF 615 Support for the IANA Time Zone Database in the Standard Library Paul Ganssle 3.9
SF 616 String methods to remove prefixes and suffixes Dennis Sweeney 3.9
SF 617 New PEG parser for CPython Guido van Rossum, Pablo Galindo, Lysandros Nikolaou 3.9
SF 618 Add Optional Length-Checking To zip Brandt Bucher 3.10
SF 621 Storing project metadata in pyproject.toml Brett Cannon, Dustin Ingram, Paul Ganssle, Pradyun Gedam, Sébastien Eustace, Thomas Kluyver, Tzu-ping Chung
SF 623 Remove wstr from Unicode Inada Naoki 3.10
SF 624 Remove Py_UNICODE encoder APIs Inada Naoki 3.11
SF 626 Precise line numbers for debugging and other tools. Mark Shannon 3.10
SF 627 Recording installed projects Petr Viktorin
SF 628 Add math.tau Alyssa Coghlan 3.6
SF 629 Versioning PyPI’s Simple API Donald Stufft
SF 632 Deprecate distutils module Steve Dower 3.10
SF 634 Structural Pattern Matching: Specification Brandt Bucher, Guido van Rossum 3.10
SF 643 Metadata for Package Source Distributions Paul Moore
SF 644 Require OpenSSL 1.1.1 or newer Christian Heimes 3.10
SF 646 Variadic Generics Mark Mendoza, Matthew Rahtz, Pradeep Kumar Srinivasan, Vincent Siles 3.11
SF 647 User-Defined Type Guards Eric Traut 3.10
SF 652 Maintaining the Stable ABI Petr Viktorin 3.10
SF 654 Exception Groups and except* Irit Katriel, Yury Selivanov, Guido van Rossum 3.11
SF 655 Marking individual TypedDict items as required or potentially-missing David Foster 3.11
SF 656 Platform Tag for Linux Distributions Using Musl Tzu-ping Chung
SF 657 Include Fine Grained Error Locations in Tracebacks Pablo Galindo, Batuhan Taskaya, Ammar Askar 3.11
SF 660 Editable installs for pyproject.toml based builds (wheel based) Daniel Holth, Stéphane Bidoul
SF 667 Consistent views of namespaces Mark Shannon, Tian Gao 3.13
SF 669 Low Impact Monitoring for CPython Mark Shannon 3.12
SF 670 Convert macros to functions in the Python C API Erlend Egeberg Aasland, Victor Stinner 3.11
SF 673 Self Type Pradeep Kumar Srinivasan, James Hilton-Balfe 3.11
SF 675 Arbitrary Literal String Type Pradeep Kumar Srinivasan, Graham Bleaney 3.11
SF 678 Enriching Exceptions with Notes Zac Hatfield-Dodds 3.11
SF 680 tomllib: Support for Parsing TOML in the Standard Library Taneli Hukkinen, Shantanu Jain 3.11
SF 681 Data Class Transforms Erik De Bonte, Eric Traut 3.11
SF 682 Format Specifier for Signed Zero John Belmonte 3.11
SF 683 Immortal Objects, Using a Fixed Refcount Eric Snow, Eddie Elizondo 3.12
SF 684 A Per-Interpreter GIL Eric Snow 3.12
SF 688 Making the buffer protocol accessible in Python Jelle Zijlstra 3.12
SF 689 Unstable C API tier Petr Viktorin 3.12
SF 692 Using TypedDict for more precise **kwargs typing Franek Magiera 3.12
SF 695 Type Parameter Syntax Eric Traut 3.12
SF 696 Type Defaults for Type Parameters James Hilton-Balfe 3.13
SF 697 Limited C API for Extending Opaque Types Petr Viktorin 3.12
SF 698 Override Decorator for Static Typing Steven Troxler, Joshua Xu, Shannon Zhu 3.12
SF 700 Additional Fields for the Simple API for Package Indexes Paul Moore
SF 702 Marking deprecations using the type system Jelle Zijlstra 3.13
SF 705 TypedDict: Read-only items Alice Purcell 3.13
SF 706 Filter for tarfile.extractall Petr Viktorin 3.12
SF 709 Inlined comprehensions Carl Meyer 3.12
SF 715 Disabling bdist_egg distribution uploads on PyPI William Woodruff
SF 721 Using tarfile.data_filter for source distribution extraction Petr Viktorin 3.12
SF 723 Inline script metadata Ofek Lev
SF 730 Adding iOS as a supported platform Russell Keith-Magee 3.13
SF 737 C API to format a type fully qualified name Victor Stinner 3.13
SF 738 Adding Android as a supported platform Malcolm Smith 3.13
SF 741 Python Configuration C API Victor Stinner 3.14
SF 742 Narrowing types with TypeIs Jelle Zijlstra 3.13
SF 3101 Advanced String Formatting Talin 3.0
SF 3102 Keyword-Only Arguments Talin 3.0
SF 3104 Access to Names in Outer Scopes Ka-Ping Yee 3.0
SF 3105 Make print a function Georg Brandl 3.0
SF 3106 Revamping dict.keys(), .values() and .items() Guido van Rossum 3.0
SF 3107 Function Annotations Collin Winter, Tony Lownds 3.0
SF 3108 Standard Library Reorganization Brett Cannon 3.0
SF 3109 Raising Exceptions in Python 3000 Collin Winter 3.0
SF 3110 Catching Exceptions in Python 3000 Collin Winter 3.0
SF 3111 Simple input built-in in Python 3000 Andre Roberge 3.0
SF 3112 Bytes literals in Python 3000 Jason Orendorff 3.0
SF 3113 Removal of Tuple Parameter Unpacking Brett Cannon 3.0
SF 3114 Renaming iterator.next() to iterator.__next__() Ka-Ping Yee 3.0
SF 3115 Metaclasses in Python 3000 Talin 3.0
SF 3116 New I/O Daniel Stutzbach, Guido van Rossum, Mike Verdone 3.0
SF 3118 Revising the buffer protocol Travis Oliphant, Carl Banks 3.0
SF 3119 Introducing Abstract Base Classes Guido van Rossum, Talin 3.0
SF 3120 Using UTF-8 as the default source encoding Martin von Löwis 3.0
SF 3121 Extension Module Initialization and Finalization Martin von Löwis 3.0
SF 3123 Making PyObject_HEAD conform to standard C Martin von Löwis 3.0
SF 3127 Integer Literal Support and Syntax Patrick Maupin 3.0
SF 3129 Class Decorators Collin Winter 3.0
SF 3131 Supporting Non-ASCII Identifiers Martin von Löwis 3.0
SF 3132 Extended Iterable Unpacking Georg Brandl 3.0
SF 3134 Exception Chaining and Embedded Tracebacks Ka-Ping Yee 3.0
SF 3135 New Super Calvin Spealman, Tim Delaney, Lie Ryan 3.0
SF 3137 Immutable Bytes and Mutable Buffer Guido van Rossum 3.0
SF 3138 String representation in Python 3000 Atsuo Ishimoto 3.0
SF 3141 A Type Hierarchy for Numbers Jeffrey Yasskin 3.0
SF 3144 IP Address Manipulation Library for the Python Standard Library Peter Moody 3.3
SF 3147 PYC Repository Directories Barry Warsaw 3.2
SF 3148 futures - execute computations asynchronously Brian Quinlan 3.2
SF 3149 ABI version tagged .so files Barry Warsaw 3.2
SF 3151 Reworking the OS and IO exception hierarchy Antoine Pitrou 3.3
SF 3154 Pickle protocol version 4 Antoine Pitrou 3.4
SF 3155 Qualified name for classes and functions Antoine Pitrou 3.3
SF 3156 Asynchronous IO Support Rebooted: the “asyncio” Module Guido van Rossum 3.3

Historical Meta-PEPs and Informational PEPs

PEP Title Authors
PS 5 Guidelines for Language Evolution Paul Prescod
PS 6 Bug Fix Releases Aahz, Anthony Baxter
IF 160 Python 1.6 Release Schedule Fred L. Drake, Jr. 1.6
IF 200 Python 2.0 Release Schedule Jeremy Hylton 2.0
IF 226 Python 2.1 Release Schedule Jeremy Hylton 2.1
IF 251 Python 2.2 Release Schedule Barry Warsaw, Guido van Rossum 2.2
IF 283 Python 2.3 Release Schedule Guido van Rossum 2.3
IF 320 Python 2.4 Release Schedule Barry Warsaw, Raymond Hettinger, Anthony Baxter 2.4
PF 347 Migrating the Python CVS to Subversion Martin von Löwis
IF 356 Python 2.5 Release Schedule Neal Norwitz, Guido van Rossum, Anthony Baxter 2.5
PF 360 Externally Maintained Packages Brett Cannon
IF 361 Python 2.6 and 3.0 Release Schedule Neal Norwitz, Barry Warsaw 2.6, 3.0
IF 373 Python 2.7 Release Schedule Benjamin Peterson 2.7
PF 374 Choosing a distributed VCS for the Python project Brett Cannon, Stephen J. Turnbull, Alexandre Vassalotti, Barry Warsaw, Dirkjan Ochtman
IF 375 Python 3.1 Release Schedule Benjamin Peterson 3.1
PF 385 Migrating from Subversion to Mercurial Dirkjan Ochtman, Antoine Pitrou, Georg Brandl
IF 392 Python 3.2 Release Schedule Georg Brandl 3.2
IF 398 Python 3.3 Release Schedule Georg Brandl 3.3
IF 404 Python 2.8 Un-release Schedule Barry Warsaw 2.8
IF 429 Python 3.4 Release Schedule Larry Hastings 3.4
PS 438 Transitioning to release-file hosting on PyPI Holger Krekel, Carl Meyer
PF 449 Removal of the PyPI Mirror Auto Discovery and Naming Scheme Donald Stufft
PF 464 Removal of the PyPI Mirror Authenticity API Donald Stufft
PF 470 Removing External Hosting Support on PyPI Donald Stufft
IF 478 Python 3.5 Release Schedule Larry Hastings 3.5
IF 494 Python 3.6 Release Schedule Ned Deily 3.6
PF 512 Migrating from hg.python.org to GitHub Brett Cannon
IF 537 Python 3.7 Release Schedule Ned Deily 3.7
PF 541 Package Index Name Retention Łukasz Langa
IF 569 Python 3.8 Release Schedule Łukasz Langa 3.8
PF 581 Using GitHub Issues for CPython Mariatta
PF 3000 Python 3000 Guido van Rossum
PF 3002 Procedure for Backwards-Incompatible Changes Steven Bethard
PF 3003 Python Language Moratorium Brett Cannon, Jesse Noller, Guido van Rossum
PF 3099 Things that will Not Change in Python 3000 Georg Brandl
PF 3100 Miscellaneous Python 3.0 Plans Brett Cannon
PF 8001 Python Governance Voting Process Brett Cannon, Christian Heimes, Donald Stufft, Eric Snow, Gregory P. Smith, Łukasz Langa, Mariatta, Nathaniel J. Smith, Pablo Galindo Salgado, Raymond Hettinger, Tal Einat, Tim Peters, Zachary Ware

Deferred PEPs (postponed pending further research or updates)

PEP Title Authors
SD 213 Attribute Access Handlers Paul Prescod 2.1
SD 219 Stackless Python Gordon McMillan 2.1
SD 222 Web Library Enhancements A.M. Kuchling 2.1
SD 233 Python Online Help Paul Prescod 2.1
SD 267 Optimized Access to Module Namespaces Jeremy Hylton 2.2
SD 269 Pgen Module for Python Jonathan Riehl 2.2
SD 280 Optimizing access to globals Guido van Rossum 2.3
SD 286 Enhanced Argument Tuples Martin von Löwis 2.3
SD 312 Simple Implicit Lambda Roman Suzi, Alex Martelli 2.4
SD 316 Programming by Contract for Python Terence Way
SD 323 Copyable Iterators Alex Martelli 2.5
SD 337 Logging Usage in the Standard Library Michael P. Dubner 2.5
SD 368 Standard image protocol and class Lino Mastrodomenico 2.6, 3.0
SD 400 Deprecate codecs.StreamReader and codecs.StreamWriter Victor Stinner 3.3
SD 403 General purpose decorator clause (aka “@in” clause) Alyssa Coghlan 3.4
PD 407 New release cycle and introducing long-term support versions Antoine Pitrou, Georg Brandl, Barry Warsaw
SD 419 Protecting cleanup statements from interruptions Paul Colomiets 3.3
ID 423 Naming conventions and recipes related to packaging Benoit Bryon
ID 444 Python Web3 Interface Chris McDonough, Armin Ronacher
SD 447 Add __getdescriptor__ method to metaclass Ronald Oussoren
SD 491 The Wheel Binary Package Format 1.9 Daniel Holth
SD 499 python -m foo should also bind ‘foo’ in sys.modules Cameron Simpson, Chris Angelico, Joseph Jevnik 3.10
SD 505 None-aware operators Mark E. Haase, Steve Dower 3.8
SD 532 A circuit breaking protocol and binary operators Alyssa Coghlan, Mark E. Haase 3.8
SD 533 Deterministic cleanup for iterators Nathaniel J. Smith
SD 534 Improved Errors for Missing Standard Library Modules Tomáš Orsava, Petr Viktorin, Alyssa Coghlan
SD 535 Rich comparison chaining Alyssa Coghlan 3.8
SD 547 Running extension modules using the -m option Marcel Plch, Petr Viktorin 3.7
SD 556 Threaded garbage collection Antoine Pitrou 3.7
SD 568 Generator-sensitivity for Context Variables Nathaniel J. Smith 3.8
SD 674 Disallow using macros as l-values Victor Stinner 3.12
SD 734 Multiple Interpreters in the Stdlib Eric Snow 3.13
SD 3124 Overloading, Generic Functions, Interfaces, and Adaptation Phillip J. Eby
SD 3143 Standard daemon process library Ben Finney 3.x
SD 3150 Statement local namespaces (aka “given” clause) Alyssa Coghlan 3.4

Rejected, Superseded, and Withdrawn PEPs

PEP Title Authors
PW 3 Guidelines for Handling Bug Reports Jeremy Hylton
PW 9 Sample Plaintext PEP Template Barry Warsaw
PW 42 Feature Requests Jeremy Hylton
IS 102 Doing Python Micro Releases Anthony Baxter, Barry Warsaw, Guido van Rossum
IW 103 Collecting information about git Oleg Broytman
SR 204 Range Literals Thomas Wouters 2.0
IW 206 Python Advanced Library A.M. Kuchling
SW 209 Multi-dimensional Arrays Paul Barrett, Travis Oliphant 2.2
SR 210 Decoupling the Interpreter Loop David Ascher 2.1
SR 211 Adding A New Outer Product Operator Greg Wilson 2.1
SR 212 Loop Counter Iteration Peter Schneider-Kamp 2.1
SS 215 String Interpolation Ka-Ping Yee 2.1
IW 216 Docstring Format Moshe Zadka
IR 220 Coroutines, Generators, Continuations Gordon McMillan
SR 224 Attribute Docstrings Marc-André Lemburg 2.1
SR 225 Elementwise/Objectwise Operators Huaiyu Zhu, Gregory Lielens 2.1
SW 228 Reworking Python’s Numeric Model Moshe Zadka, Guido van Rossum
SR 231 __findattr__() Barry Warsaw 2.1
SR 239 Adding a Rational Type to Python Christopher A. Craig, Moshe Zadka 2.2
SR 240 Adding a Rational Literal to Python Christopher A. Craig, Moshe Zadka 2.2
SS 241 Metadata for Python Software Packages A.M. Kuchling
SW 242 Numeric Kinds Paul F. Dubois 2.2
SW 243 Module Repository Upload Mechanism Sean Reifschneider 2.1
SR 244 The directive statement Martin von Löwis 2.1
SR 245 Python Interface Syntax Michel Pelletier 2.2
SR 246 Object Adaptation Alex Martelli, Clark C. Evans 2.5
SR 254 Making Classes Look More Like Types Guido van Rossum 2.2
SR 256 Docstring Processing System Framework David Goodger
SR 258 Docutils Design Specification David Goodger
SR 259 Omit printing newline after newline Guido van Rossum 2.2
SR 262 A Database of Installed Python Packages A.M. Kuchling
SR 265 Sorting Dictionaries by Value Grant Griffin 2.2
SW 266 Optimizing Global Variable/Attribute Access Skip Montanaro 2.3
SR 268 Extended HTTP functionality and WebDAV Greg Stein 2.x
SR 270 uniq method for list objects Jason Petrone 2.2
SR 271 Prefixing sys.path by command line option Frédéric B. Giacometti 2.2
SR 275 Switching on Multiple Values Marc-André Lemburg 2.6
SR 276 Simple Iterator for ints Jim Althoff 2.3
SR 281 Loop Counter Iteration with range and xrange Magnus Lie Hetland 2.3
SR 284 Integer for-loops David Eppstein, Gregory Ewing 2.3
SW 288 Generators Attributes and Exceptions Raymond Hettinger 2.5
IS 291 Backward Compatibility for the Python 2 Standard Library Neal Norwitz 2.3
SR 294 Type Names in the types Module Oren Tirosh 2.5
SR 295 Interpretation of multiline string constants Stepan Koltsov 3.0
SW 296 Adding a bytes Object Type Scott Gilbert 2.3
SR 297 Support for System Upgrades Marc-André Lemburg 2.6
SW 298 The Locked Buffer Interface Thomas Heller 2.3
SR 299 Special __main__() function in modules Jeff Epler 2.3
SR 303 Extend divmod() for Multiple Divisors Thomas Bellman 2.3
SW 304 Controlling Generation of Bytecode Files Skip Montanaro
IW 306 How to Change Python’s Grammar Michael Hudson, Jack Diederich, Alyssa Coghlan, Benjamin Peterson
SR 310 Reliable Acquisition/Release Pairs Michael Hudson, Paul Moore 2.4
SR 313 Adding Roman Numeral Literals to Python Mike Meyer 2.4
SS 314 Metadata for Python Software Packages 1.1 A.M. Kuchling, Richard Jones 2.5
SR 315 Enhanced While Loop Raymond Hettinger, W Isaac Carroll 2.5
SR 317 Eliminate Implicit Exception Instantiation Steven Taschuk 2.4
SR 319 Python Synchronize/Asynchronize Block Michel Pelletier 2.4
SW 321 Date/Time Parsing and Formatting A.M. Kuchling 2.4
SR 325 Resource-Release Support for Generators Samuele Pedroni 2.4
SR 326 A Case for Top and Bottom Values Josiah Carlson, Terry Reedy 2.4
SR 329 Treating Builtins as Constants in the Standard Library Raymond Hettinger 2.4
SR 330 Python Bytecode Verification Michel Pelletier 2.6
SR 332 Byte vectors and String/Unicode Unification Skip Montanaro 2.5
SW 334 Simple Coroutines via SuspendIteration Clark C. Evans 3.0
SR 335 Overloadable Boolean Operators Gregory Ewing 3.3
SR 336 Make None Callable Andrew McClelland
IW 339 Design of the CPython Compiler Brett Cannon
SR 340 Anonymous Block Statements Guido van Rossum
SS 344 Exception Chaining and Embedded Tracebacks Ka-Ping Yee 2.5
SS 345 Metadata for Python Software Packages 1.2 Richard Jones 2.7
SW 346 User Defined (“with”) Statements Alyssa Coghlan 2.5
SR 348 Exception Reorganization for Python 3.0 Brett Cannon
SR 349 Allow str() to return unicode strings Neil Schemenauer 2.5
IR 350 Codetags Micah Elliott
SR 351 The freeze protocol Barry Warsaw
SS 354 Enumerations in Python Ben Finney 2.6
SR 355 Path - Object oriented filesystem paths Björn Lindqvist 2.5
SW 359 The “make” Statement Steven Bethard 2.6
SR 363 Syntax For Dynamic Attribute Access Ben North
SW 364 Transitioning to the Py3K Standard Library Barry Warsaw 2.6
SR 365 Adding the pkg_resources module Phillip J. Eby
SS 367 New Super Calvin Spealman, Tim Delaney 2.6
SW 369 Post import hooks Christian Heimes 2.6, 3.0
SR 377 Allow __enter__() methods to skip the statement body Alyssa Coghlan 2.7, 3.1
SW 379 Adding an Assignment Expression Jervis Whitley 2.7, 3.2
SW 381 Mirroring infrastructure for PyPI Tarek Ziadé, Martin von Löwis
SR 382 Namespace Packages Martin von Löwis 3.2
SS 386 Changing the version comparison module in Distutils Tarek Ziadé
SR 390 Static metadata for Distutils Tarek Ziadé 2.7, 3.2
SW 395 Qualified Names for Modules Alyssa Coghlan 3.4
IW 396 Module Version Numbers Barry Warsaw
PR 401 BDFL Retirement Barry Warsaw, Brett Cannon
SR 402 Simplified Package Layout and Partitioning Phillip J. Eby 3.3
SW 406 Improved Encapsulation of Import State Alyssa Coghlan, Greg Slodkowicz 3.4
SR 408 Standard library __preview__ package Alyssa Coghlan, Eli Bendersky 3.3
SR 410 Use decimal.Decimal type for timestamps Victor Stinner 3.3
IS 411 Provisional packages in the Python standard library Alyssa Coghlan, Eli Bendersky 3.3
PW 413 Faster evolution of the Python Standard Library Alyssa Coghlan
SR 416 Add a frozendict builtin type Victor Stinner 3.3
SW 422 Simpler customisation of class creation Alyssa Coghlan, Daniel Urban 3.5
IW 426 Metadata for Python Software Packages 2.0 Alyssa Coghlan, Daniel Holth, Donald Stufft
SS 431 Time zone support improvements Lennart Regebro
SW 432 Restructuring the CPython startup sequence Alyssa Coghlan, Victor Stinner, Eric Snow
SS 433 Easier suppression of file descriptor inheritance Victor Stinner 3.4
SR 437 A DSL for specifying signatures, annotations and argument converters Stefan Krah 3.4
SR 439 Inclusion of implicit pip bootstrap in Python installation Richard Jones 3.4
SR 455 Adding a key-transforming dictionary to collections Antoine Pitrou 3.5
SW 459 Standard Metadata Extensions for Python Software Packages Alyssa Coghlan
SW 460 Add binary interpolation and formatting Antoine Pitrou 3.5
PW 462 Core development workflow automation for CPython Alyssa Coghlan
SR 463 Exception-catching expressions Chris Angelico 3.5
SW 469 Migration of dict iteration code to Python 3 Alyssa Coghlan 3.5
SR 472 Support for indexing with keyword arguments Stefano Borini, Joseph Martinot-Lagarde 3.6
SR 473 Adding structured data to built-in exceptions Sebastian Kreft
PW 474 Creating forge.python.org Alyssa Coghlan
PW 481 Migrate CPython to Git, Github, and Phabricator Donald Stufft
SR 490 Chain exceptions at C level Victor Stinner 3.6
IR 496 Environment Markers James Polley
PR 497 A standard mechanism for backward compatibility Ed Schofield
SR 500 A protocol for delegating datetime methods to their tzinfo implementations Alexander Belopolsky, Tim Peters
SW 501 General purpose template literal strings Alyssa Coghlan, Nick Humrich 3.12
IR 502 String Interpolation - Extended Discussion Mike G. Miller 3.6
SW 504 Using the System RNG by default Alyssa Coghlan 3.6
PR 507 Migrate CPython to Git and GitLab Barry Warsaw
SS 509 Add a private version to dict Victor Stinner 3.6
SR 510 Specialize functions with guards Victor Stinner 3.6
SR 511 API for code transformers Victor Stinner 3.6
IS 513 A Platform Tag for Portable Linux Built Distributions Robert T. McGibbon, Nathaniel J. Smith
SR 516 Build system abstraction for pip/conda etc Robert Collins, Nathaniel J. Smith
SW 521 Managing global context via ‘with’ blocks in generators and coroutines Nathaniel J. Smith 3.6
SR 522 Allow BlockingIOError in security sensitive APIs Alyssa Coghlan, Nathaniel J. Smith 3.6
SW 531 Existence checking operators Alyssa Coghlan 3.7
SW 536 Final Grammar for Literal String Interpolation Philipp Angerer 3.7
SR 542 Dot Notation Assignment In Function Header Markus Meskanen
SW 543 A Unified TLS API for Python Cory Benfield, Christian Heimes 3.7
SR 546 Backport ssl.MemoryBIO and ssl.SSLObject to Python 2.7 Victor Stinner, Cory Benfield 2.7
SR 548 More Flexible Loop Control R David Murray 3.7
SR 549 Instance Descriptors Larry Hastings 3.7
SW 550 Execution Context Yury Selivanov, Elvis Pranskevichus 3.7
IW 551 Security transparency in the Python runtime Steve Dower 3.7
SS 554 Multiple Interpreters in the Stdlib Eric Snow 3.13
SW 555 Context-local variables (contextvars) Koos Zevenhoven 3.7
SW 558 Defined semantics for locals() Alyssa Coghlan 3.13
SR 559 Built-in noop() Barry Warsaw 3.7
IS 571 The manylinux2010 Platform Tag Mark Williams, Geoffrey Thomas, Thomas Kluyver
SW 575 Unifying function/method classes Jeroen Demeyer 3.8
SW 576 Rationalize Built-in function classes Mark Shannon 3.8
SW 577 Augmented Assignment Expressions Alyssa Coghlan 3.8
SR 580 The C call protocol Jeroen Demeyer 3.8
SR 582 Python local packages directory Kushal Das, Steve Dower, Donald Stufft, Alyssa Coghlan 3.12
IW 583 A Concurrency Memory Model for Python Jeffrey Yasskin
IW 595 Improving bugs.python.org Ezio Melotti, Berker Peksag
IW 598 Introducing incremental feature releases Alyssa Coghlan 3.9
IS 599 The manylinux2014 Platform Tag Dustin Ingram
SR 601 Forbid return/break/continue breaking out of finally Damien George, Batuhan Taskaya 3.8
IR 605 A rolling feature release stream for CPython Steve Dower, Alyssa Coghlan 3.9
SR 606 Python Compatibility Version Victor Stinner 3.9
SR 608 Coordinated Python release Miro Hrončok, Victor Stinner 3.9
SW 611 The one million limit Mark Shannon
SW 620 Hide implementation details from the C API Victor Stinner 3.12
SS 622 Structural Pattern Matching Brandt Bucher, Daniel F Moisset, Tobias Kohn, Ivan Levkivskyi, Guido van Rossum, Talin 3.10
SS 631 Dependency specification in pyproject.toml based on PEP 508 Ofek Lev
SR 633 Dependency specification in pyproject.toml using an exploded TOML table Laurie Opperman, Arun Babu Neelicattu
SR 637 Support for indexing with keyword arguments Stefano Borini 3.10
SR 640 Unused variable syntax Thomas Wouters 3.10
SR 641 Using an underscore in the version portion of Python 3.10 compatibility tags Brett Cannon, Steve Dower, Barry Warsaw 3.10
SR 642 Explicit Pattern Syntax for Structural Pattern Matching Alyssa Coghlan 3.10
SW 645 Allow writing optional types as x? Maggie Moss
SR 648 Extensible customizations of the interpreter at startup Mario Corchero 3.11
SW 650 Specifying Installer Requirements for Python Projects Vikram Jayanthi, Dustin Ingram, Brett Cannon
SR 651 Robust Stack Overflow Handling Mark Shannon
SR 662 Editable installs via virtual wheels Bernát Gábor
IR 663 Standardizing Enum str(), repr(), and format() behaviors Ethan Furman 3.11
SR 665 A file format to list Python dependencies for reproducibility of an application Brett Cannon, Pradyun Gedam, Tzu-ping Chung
SR 666 Reject Foolish Indentation Laura Creighton 2.2
SR 677 Callable Type Syntax Steven Troxler, Pradeep Kumar Srinivasan 3.11
SR 690 Lazy Imports Germán Méndez Bravo, Carl Meyer 3.12
SW 704 Require virtual environments by default for package installers Pradyun Gedam
SR 707 A simplified signature for __exit__ and __aexit__ Irit Katriel 3.12
SR 712 Adding a “converter” parameter to dataclasses.field Joshua Cannon 3.13
SR 713 Callable Modules Amethyst Reese 3.12
SR 722 Dependency specification for single-file scripts Paul Moore
SW 724 Stricter Type Guards Rich Chiodo, Eric Traut, Erik De Bonte 3.13
SR 726 Module __setattr__ and __delattr__ Sergey B Kirpichev 3.13
SR 754 IEEE 754 Floating Point Special Values Gregory R. Warnes 2.3
SW 756 Add PyUnicode_Export() and PyUnicode_Import() C functions Victor Stinner 3.14
SW 760 No More Bare Excepts Pablo Galindo, Brett Cannon 3.14
PW 3001 Procedure for reviewing and improving standard library modules Georg Brandl
SR 3103 A Switch/Case Statement Guido van Rossum 3.0
SR 3117 Postfix type declarations Georg Brandl 3.0
SR 3122 Delineation of the main module Brett Cannon
SR 3125 Remove Backslash Continuation Jim J. Jewett
SR 3126 Remove Implicit String Concatenation Jim J. Jewett, Raymond Hettinger
SR 3128 BList: A Faster List-like Type Daniel Stutzbach 2.6, 3.0
SR 3130 Access to Current Module/Class/Function Jim J. Jewett 3.0
SR 3133 Introducing Roles Collin Winter 3.0
SR 3136 Labeled break and continue Matt Chisholm 3.1
SR 3139 Cleaning out sys and the “interpreter” module Benjamin Peterson 3.0
SR 3140 str(container) should call str(item), not repr(item) Oleg Broytman, Jim J. Jewett
SR 3142 Add a “while” clause to generator expressions Gerald Britton 3.0
SW 3145 Asynchronous I/O For subprocess.Popen Eric Pruitt, Charles R. McCreary, Josiah Carlson 3.2
SW 3146 Merging Unladen Swallow into CPython Collin Winter, Jeffrey Yasskin, Reid Kleckner 3.3
SR 3152 Cofunctions Gregory Ewing 3.3
SS 3153 Asynchronous IO support Laurens Van Houtven
IR 8010 The Technical Leader Governance Model Barry Warsaw
IR 8011 Python Governance Model Lead by Trio of Pythonistas Mariatta, Barry Warsaw
IR 8012 The Community Governance Model Łukasz Langa
IR 8013 The External Council Governance Model Steve Dower
IR 8014 The Commons Governance Model Jack Jansen
IR 8015 Organization of the Python community Victor Stinner

Reserved PEP Numbers

PEP Title Authors
801 RESERVED Warsaw

PEP Types Key

  • IInformational: Non-normative PEP containing background, guidelines or other information relevant to the Python ecosystem
  • PProcess: Normative PEP describing or proposing a change to a Python community process, workflow or governance
  • SStandards Track: Normative PEP with a new feature for Python, implementation change for CPython or interoperability standard for the ecosystem

More info in PEP 1.

PEP Status Key

  • AAccepted: Normative proposal accepted for implementation
  • AActive: Currently valid informational guidance, or an in-use process
  • DDeferred: Inactive draft that may be taken up again at a later time
  • <No letter>Draft: Proposal under active discussion and revision
  • FFinal: Accepted and implementation complete, or no longer active
  • PProvisional: Provisionally accepted but additional feedback needed
  • RRejected: Formally declined and will not be accepted
  • SSuperseded: Replaced by another succeeding PEP
  • WWithdrawn: Removed from consideration by sponsor or authors

More info in PEP 1.

Authors/Owners

Name Email Address
A.M. Kuchling amk at amk.ca
Aahz aahz at pythoncraft.com
Adam Turner python at quite.org.uk
Adrian Garcia Badaracco adrian at adriangb.com
Alex Gaynor alex.gaynor at gmail.com
Alex Martelli aleaxit at gmail.com
Alexander Belopolsky alexander.belopolsky at gmail.com
Alexandre Vassalotti alexandre at peadrop.com
Alexis Challande alexis.challande at trailofbits.com
Alice Purcell alicederyn at gmail.com
Alyssa Coghlan ncoghlan at gmail.com
Amethyst Reese amethyst at n7.gg
Ammar Askar ammar at ammaraskar.com
Andre Roberge andre.roberge at gmail.com
Andrew McClelland eternalsquire at comcast.net
Andrew McNamara andrewm at object-craft.com.au
Anthony Baxter anthony at interlink.com.au
Antoine Pitrou solipsis at pitrou.net
Armin Ronacher armin.ronacher at active-4.com
Arun Babu Neelicattu arun.neelicattu at gmail.com
Atsuo Ishimoto ishimoto at gembook.org
Barry Warsaw barry at python.org
Batuhan Taskaya batuhan at python.org
Ben Finney ben+python at benfinney.id.au
Ben Hoyt benhoyt at gmail.com
Ben North ben at redfrontdoor.org
Benjamin Peterson benjamin at python.org
Benoit Bryon benoit at marmelune.net
Berker Peksag berker.peksag at gmail.com
Bernát Gábor gaborjbernat at gmail.com
Björn Lindqvist bjourne at gmail.com
Brandt Bucher brandt at python.org
Brett Cannon brett at python.org
Brian Quinlan brian at sweetapp.com
C.A.M. Gerlach cam.gerlach at gerlach.cam
Calvin Spealman ironfroggy at gmail.com
Cameron Simpson cs at cskk.id.au
Carl Banks pythondev at aerojockey.com
Carl Friedrich Bolz-Tereick cfbolz at gmx.de
Carl Meyer carl at oddbird.net
Carol Willing willingc at gmail.com
Charles R. McCreary
Charles-François Natali cf.natali at gmail.com
Chris Angelico rosuav at gmail.com
Chris Jerdonek chris.jerdonek at gmail.com
Chris McDonough chrism at plope.com
Christian Heimes christian at python.org
Christian R. Reis kiko at async.com.br
Christopher A. Craig python-pep at ccraig.org
Christopher Barker pythonchb at gmail.com
Clark C. Evans cce at clarkevans.com
Cliff Wells logiplexsoftware at earthlink.net
Collin Winter collinwinter at google.com
Cooper Lees me at cooperlees.com
Cory Benfield cory at lukasa.co.uk
Damien George
Daniel F Moisset dfmoisset at gmail.com
Daniel Holth dholth at gmail.com
Daniel Stutzbach daniel at stutzbachenterprises.com
Daniel Urban urban.dani+py at gmail.com
Dave Cole djc at object-craft.com.au
Dave Peck davepeck at davepeck.org
David Ascher davida at activestate.com
David Eppstein eppstein at ics.uci.edu
David Foster david at dafoster.net
David Goodger goodger at python.org
David Hewitt 1939362+davidhewitt at users.noreply.github.com
David Woods dw-git at d-woods.co.uk
Dennis Sweeney sweeney.dennis650 at gmail.com
Dino Viehland dinov at microsoft.com
Dirkjan Ochtman dirkjan at ochtman.nl
Domenico Andreoli domenico.andreoli at linux.com
Donald Stufft donald at stufft.io
Donghee Na donghee.na at python.org
Doug Hellmann doug at doughellmann.com
Dustin Ingram di at python.org
Ed Schofield ed at pythoncharmers.com
Eddie Elizondo eduardo.elizondorueda at gmail.com
Ee Durbin ee at python.org
Elana Hashman ehashman at debian.org
Eli Bendersky eliben at gmail.com
Elvis Pranskevichus elvis at edgedb.com
Emily Morehouse-Valcarcel emily at python.org
Eric N. Vander Weele ericvw at gmail.com
Eric Pruitt
Eric Snow ericsnowcurrently at gmail.com
Eric Traut erictr at microsoft.com
Eric V. Smith eric at trueblade.com
Erik De Bonte erikd at microsoft.com
Erik M. Bray
Erlend Egeberg Aasland erlend at python.org
Ethan Furman ethan at stoneleaf.us
Ethan Smith ethan at ethanhs.me
Ewa Jodlowska ewa at python.org
Ezio Melotti ezio.melotti at gmail.com
Facundo Batista facundo at taniquetil.com.ar
Facundo Tuesca facundo.tuesca at trailofbits.com
Filipe Laíns lains at riseup.net
Franek Magiera framagie at gmail.com
Fred L. Drake, Jr. fred at fdrake.net
Frédéric B. Giacometti fred at arakne.com
Fridolín Pokorný fridolin.pokorny at gmail.com
Geoffrey Thomas geofft at ldpreload.com
Georg Brandl georg at python.org
Gerald Britton gerald.britton at gmail.com
Germán Méndez Bravo german.mb at gmail.com
Gordon McMillan gmcm at hypernet.com
Graham Bleaney gbleaney at gmail.com
Grant Griffin g2 at iowegian.com
Greg Slodkowicz jergosh at gmail.com
Greg Stein gstein at lyra.org
Greg Wilson gvwilson at ddj.com
Gregory Ewing greg.ewing at canterbury.ac.nz
Gregory Lielens gregory.lielens at fft.be
Gregory P. Smith greg at krypto.org
Gregory R. Warnes gregory_r_warnes at groton.pfizer.com
Guido van Rossum guido at python.org
Holger Krekel holger at merlinux.eu
Huaiyu Zhu hzhu at users.sourceforge.net
Hugo van Kemenade
Inada Naoki songofacandy at gmail.com
Irit Katriel irit at python.org
Ivan Levkivskyi levkivskyi at gmail.com
Jack Diederich jackdied at gmail.com
Jack Jansen jack at cwi.nl
James C. Ahlstrom jim at interet.com
James Hilton-Balfe gobot1234yt at gmail.com
James Polley jp at jamezpolley.com
Jason Orendorff jason.orendorff at gmail.com
Jason Petrone jp at demonseed.net
Jeff Epler jepler at unpythonic.net
Jeffrey Yasskin jyasskin at google.com
Jelle Zijlstra jelle.zijlstra at gmail.com
Jeremy Hylton jeremy at alum.mit.edu
Jeroen Demeyer j.demeyer at ugent.be
Jervis Whitley jervisau at gmail.com
Jesse Noller jnoller at gmail.com
Jim Althoff james_althoff at i2.com
Jim Baker jim.baker at python.org
Jim J. Jewett jimjjewett at gmail.com
Jiwon Seo seojiwon at gmail.com
Joanna Jablonski
Joe Carey joe at python.org
John Belmonte john at neggie.net
Jonathan Riehl jriehl at spaceship.com
Joseph Jevnik joejev at gmail.com
Joseph Martinot-Lagarde
Joshua Bambrick jbambrick at google.com
Joshua Cannon joshdcannon at gmail.com
Joshua Landau joshua at landau.ws
Joshua Lock jlock at vmware.com
Joshua Xu jxu425 at fb.com
Josiah Carlson jcarlson at uci.edu
Jukka Lehtosalo jukka.lehtosalo at iki.fi
Julien Palard julien at palard.fr
Just van Rossum just at letterror.com
Justin Cappos jcappos at nyu.edu
Ka-Ping Yee ping at zesty.ca
Karl Nelson nelson85 at llnl.gov
Karolina Surma karolina.surma at gazeta.pl
Ken Jin kenjin at python.org
Kerrick Staley mail at kerrickstaley.com
Kevin Altis altis at semi-retired.com
Kevin D. Smith kevin.smith at themorgue.org
Konstantin Kashin kkashin at fb.com
Koos Zevenhoven k7hoven at gmail.com
Koudai Aono koxudaxi at gmail.com
Kushal Das mail at kushaldas.in
Larry Hastings larry at hastings.org
Laura Creighton lac at strakt.com
Laurens Van Houtven _ at lvh.cc
Laurie Opperman laurie_opperman at hotmail.com
Lennart Regebro regebro at gmail.com
Lie Ryan lie.1296 at gmail.com
Lino Mastrodomenico l.mastrodomenico at gmail.com
Lisa Roach lisaroach14 at gmail.com
Lois Anne DeLong lad278 at nyu.edu
Lukas Puehringer lukas.puehringer at nyu.edu
Lysandros Nikolaou lisandrosnik at gmail.com
Maggie Moss maggiebmoss at gmail.com
Magnus Lie Hetland magnus at hetland.org
Malcolm Smith smith at chaquo.com
Marc-Andre Lemburg mal at lemburg.com
Marc-André Lemburg mal at lemburg.com
Marcel Plch gmarcel.plch at gmail.com
Mariatta mariatta at python.org
Marina Moore mm9693 at nyu.edu
Mario Corchero mariocj89 at gmail.com
Mark E. Haase mehaase at gmail.com
Mark Hammond mhammond at skippinet.com.au
Mark Mendoza mendoza.mark.a at gmail.com
Mark Shannon mark at hotpy.org
Mark Williams mrw at enotuniq.org
Markus Meskanen markusmeskanen at gmail.com
Marta Gómez Macías cyberwitch at google.com
Martijn Faassen faassen at infrae.com
Martin Teichmann lkb.teichmann at gmail.com
Martin von Löwis martin at v.loewis.de
Masayuki Yamamoto
Matt Chisholm matt-python at theory.org
Matthew Rahtz mrahtz at google.com
Matthias Klose doko at ubuntu.com
Micah Elliott mde at tracos.org
Michael Foord michael at python.org
Michael Hudson mwh at python.net
Michael J. Sullivan sully at msully.net
Michael Lee michael.lee.0x2a at gmail.com
Michael P. Dubner dubnerm at mindless.com
Michael Sarahan msarahan at gmail.com
Michel Pelletier michel at users.sourceforge.net
Mike G. Miller
Mike Meyer mwm at mired.org
Mike Verdone mike.verdone at gmail.com
Miro Hrončok miro at hroncok.cz
Moshe Zadka moshez at zadka.site.co.il
Nathaniel J. Smith njs at pobox.com
Neal Norwitz nnorwitz at gmail.com
Ned Deily nad at python.org
Neil Hodgson neilh at scintilla.org
Neil Schemenauer nas at arctrix.com
Nick Humrich nick at humrich.us
Ofek Lev ofekmeister at gmail.com
Oleg Broytman phd at phdru.name
Oren Tirosh oren at hishome.net
Pablo Galindo pablogsal at python.org
Pablo Galindo Salgado pablogsal at python.org
Patrick Maupin pmaupin at gmail.com
Paul Barrett barrett at stsci.edu
Paul Colomiets paul at colomiets.name
Paul Everitt pauleveritt at me.com
Paul F. Dubois paul at pfdubois.com
Paul Ganssle paul at ganssle.io
Paul Moore p.f.moore at gmail.com
Paul Prescod paul at prescod.net
Peter Astrand astrand at lysator.liu.se
Peter Harris scav at blueyonder.co.uk
Peter Moody pmoody at google.com
Peter Schneider-Kamp nowonder at nowonder.de
Petr Viktorin encukou at gmail.com
Philip House phouse512 at gmail.com
Philipp Angerer phil.angerer at gmail.com
Philippe Ombredanne pombredanne at nexb.com
Philippe PRADOS python at prados.fr
Phillip J. Eby pje at telecommunity.com
Pradeep Kumar Srinivasan gohanpra at gmail.com
Pradyun Gedam pradyunsg at gmail.com
R David Murray
Ralf Gommers ralf.gommers at gmail.com
Raymond Hettinger python at rcn.com
Reid Kleckner rnk at mit.edu
Rich Chiodo rchiodo at microsoft.com
Richard Jones richard at python.org
Richard Oudkerk r.m.oudkerk at googlemail.com
Robert Collins rbtcollins at hp.com
Robert Kuska rkuska at redhat.com
Robert T. McGibbon rmcgibbo at gmail.com
Roman Suzi rnd at onego.ru
Ronald Oussoren ronaldoussoren at mac.com
Russell Keith-Magee russell at keith-magee.com
Ryan Gonzalez rymg19 at gmail.com
Sam Gross colesbury at gmail.com
Samuele Pedroni pedronis at python.org
Savannah Ostrowski savannahostrowski at gmail.com
Scott Gilbert xscottg at yahoo.com
Sean Reifschneider jafo-pep at tummy.com
Sebastian Kreft skreft at deezer.com
Sebastián Ramírez tiangolo at gmail.com
Sergey B Kirpichev skirpichev at gmail.com
Serhiy Storchaka
Seth Michael Larson seth at python.org
Sébastien Eustace sebastien at eustace.io
Shannon Zhu szhu at fb.com
Shantanu Jain hauntsaninja at gmail.com
Simon Cross hodgestar at gmail.com
Skip Montanaro skip at pobox.com
Stefan Behnel stefan_ml at behnel.de
Stefan Krah skrah at bytereef.org
Stefano Borini
Stefano Rivera stefanor at debian.org
Stepan Koltsov yozh at mx1.ru
Stepan Sindelar stepan.sindelar at oracle.com
Stephen J. Turnbull stephen at xemacs.org
Stephen Rosen sirosen0 at gmail.com
Steve Dower steve.dower at python.org
Steven Bethard steven.bethard at gmail.com
Steven D’Aprano steve at pearwood.info
Steven Taschuk staschuk at telusplanet.net
Steven Troxler steven.troxler at gmail.com
Stéphane Bidoul stephane.bidoul at gmail.com
Sumana Harihareswara sh at changeset.nyc
Tal Einat tal at python.org
Talin viridia at gmail.com
Taneli Hukkinen
Tarek Ziadé tarek at ziade.org
Terence Way terry at wayforward.net
Terry Reedy tjreedy at udel.edu
The Python core team and community
Thomas Bellman bellman+pep-divmod at lysator.liu.se
Thomas Heller theller at python.net
Thomas Kluyver thomas at kluyver.me.uk
Thomas Wouters thomas at python.org
Tian Gao gaogaotiantian at hotmail.com
Till Varoquaux till at fb.com
Tim Delaney timothy.c.delaney at gmail.com
Tim Felgentreff tim.felgentreff at oracle.com
Tim Peters tim.peters at gmail.com
Tobias Kohn kohnt at tobiaskohn.ch
Todd Rovito rovitotv at gmail.com
Tomáš Orsava tomas.n at orsava.cz
Tony Lownds tony at lownds.com
Travis Oliphant oliphant at ee.byu.edu
Trent Mick trentm at activestate.com
Trishank Karthik Kuppusamy karthik at trishank.com
Tzu-ping Chung uranusjr at gmail.com
Victor Stinner vstinner at python.org
Vikram Jayanthi vikramjayanthi at google.com
Vinay Sajip vinay_sajip at red-dove.com
Vincent Siles vsiles at fb.com
Vladimir Diaz vladimir.diaz at nyu.edu
W Isaac Carroll icarroll at pobox.com
Walter Dörwald walter at livinglogic.de
Wenzel Jakob wenzel.jakob at epfl.ch
William Woodruff william at yossarian.net
Yury Selivanov yury at edgedb.com
Zac Hatfield-Dodds zac at zhd.dev
Zachary Ware zach at python.org
Zixuan James Li p359101898 at gmail.com
Łukasz Langa lukasz at python.org