peps.python.org
Open in
urlscan Pro
2a04:4e42:400::223
Public Scan
Submitted URL: http://peps.python.org/
Effective URL: https://peps.python.org/
Submission: On December 04 via api from US — Scanned from DE
Effective URL: https://peps.python.org/
Submission: On December 04 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Following system colour scheme Selected dark colour scheme Selected light colour scheme PYTHON ENHANCEMENT PROPOSALS * Python » * PEP Index » * PEP 0 Toggle light / dark / auto colour theme PEP 0 – INDEX OF PYTHON ENHANCEMENT PROPOSALS (PEPS) Author: The PEP Editors Status: Active Type: Informational Created: 13-Jul-2000 -------------------------------------------------------------------------------- Table of Contents * Introduction * Topics * Index by Category * Meta-PEPs (PEPs about PEPs or Processes) * Other Informational PEPs * Provisional PEPs (provisionally accepted; interface may still change) * Accepted PEPs (accepted; may not be implemented yet) * Open PEPs (under consideration) * Finished PEPs (done, with a stable interface) * Historical Meta-PEPs and Informational PEPs * Deferred PEPs (postponed pending further research or updates) * Abandoned, Withdrawn, and Rejected PEPs * Numerical Index * Reserved PEP Numbers * PEP Types Key * PEP Status Key * Authors/Owners 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. * Governance PEPs * Packaging PEPs * Release PEPs * Typing PEPs 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 634 Structural Pattern Matching: Specification Brandt Bucher, Guido van Rossum 3.10 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 709 Inlined comprehensions Carl Meyer 3.12 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 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 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 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 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 587 Python Initialization Configuration Victor Stinner, Alyssa Coghlan 3.8 SF 592 Adding “Yank” Support to the Simple API Donald Stufft 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 610 Recording the Direct URL Origin of installed distributions Stéphane Bidoul, Chris Jerdonek SF 614 Relaxing Grammar Restrictions On Decorators Brandt Bucher 3.9 SF 616 String methods to remove prefixes and suffixes Dennis Sweeney 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 643 Metadata for Package Source Distributions Paul Moore SF 644 Require OpenSSL 1.1.1 or newer Christian Heimes 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 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 670 Convert macros to functions in the Python C API Erlend Egeberg Aasland, Victor Stinner 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 682 Format Specifier for Signed Zero John Belmonte 3.11 SF 689 Unstable C API tier Petr Viktorin 3.12 SF 697 Limited C API for Extending Opaque Types Petr Viktorin 3.12 SF 706 Filter for tarfile.extractall Petr Viktorin 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 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 PF 545 Python Documentation Translations Julien Palard, Inada Naoki, Victor Stinner 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 501 General purpose string interpolation Alyssa Coghlan 3.6 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 558 Defined semantics for locals() Alyssa Coghlan 3.13 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 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 ABANDONED, WITHDRAWN, AND REJECTED 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 IR 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 SR 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 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 IR 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 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 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 713 Callable Modules Amethyst Reese 3.12 SR 722 Dependency specification for single-file scripts Paul Moore SR 754 IEEE 754 Floating Point Special Values Gregory R. Warnes 2.3 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 NUMERICAL INDEX 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 PW 3 Guidelines for Handling Bug Reports Jeremy Hylton PA 4 Deprecation of Standard Modules Brett Cannon, Martin von Löwis PS 5 Guidelines for Language Evolution Paul Prescod PS 6 Bug Fix Releases Aahz, Anthony Baxter 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 PW 9 Sample Plaintext PEP Template Barry Warsaw 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 IA 20 The Zen of Python Tim Peters PW 42 Feature Requests Jeremy Hylton SF 100 Python Unicode Integration Marc-André Lemburg 2.0 IA 101 Doing Python Releases 101 Barry Warsaw, Guido van Rossum IS 102 Doing Python Micro Releases Anthony Baxter, Barry Warsaw, Guido van Rossum IW 103 Collecting information about git Oleg Broytman IF 160 Python 1.6 Release Schedule Fred L. Drake, Jr. 1.6 IF 200 Python 2.0 Release Schedule Jeremy Hylton 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 SR 204 Range Literals Thomas Wouters 2.0 SF 205 Weak References Fred L. Drake, Jr. 2.1 IW 206 Python Advanced Library A.M. Kuchling SF 207 Rich Comparisons Guido van Rossum, David Ascher 2.1 SF 208 Reworking the Coercion Model Neil Schemenauer, Marc-André Lemburg 2.1 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 SD 213 Attribute Access Handlers Paul Prescod 2.1 SF 214 Extended Print Statement Barry Warsaw 2.0 SS 215 String Interpolation Ka-Ping Yee 2.1 IR 216 Docstring Format Moshe Zadka 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 SD 219 Stackless Python Gordon McMillan 2.1 IR 220 Coroutines, Generators, Continuations Gordon McMillan SF 221 Import As Thomas Wouters 2.0 SD 222 Web Library Enhancements A.M. Kuchling 2.1 SF 223 Change the Meaning of x Escapes Tim Peters 2.0 SR 224 Attribute Docstrings Marc-André Lemburg 2.1 SR 225 Elementwise/Objectwise Operators Huaiyu Zhu, Gregory Lielens 2.1 IF 226 Python 2.1 Release Schedule Jeremy Hylton 2.1 SF 227 Statically Nested Scopes Jeremy Hylton 2.1 SW 228 Reworking Python’s Numeric Model Moshe Zadka, Guido van Rossum SF 229 Using Distutils to Build Python A.M. Kuchling 2.1 SF 230 Warning Framework Guido van Rossum 2.1 SR 231 __findattr__() Barry Warsaw 2.1 SF 232 Function Attributes Barry Warsaw 2.1 SD 233 Python Online Help Paul Prescod 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 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 SR 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 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 SF 250 Using site-packages on Windows Paul Moore 2.2 IF 251 Python 2.2 Release Schedule Barry Warsaw, Guido van Rossum 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 SR 254 Making Classes Look More Like Types Guido van Rossum 2.2 SF 255 Simple Generators Neil Schemenauer, Tim Peters, Magnus Lie Hetland 2.2 SR 256 Docstring Processing System Framework David Goodger IA 257 Docstring Conventions David Goodger, Guido van Rossum SR 258 Docutils Design Specification David Goodger SR 259 Omit printing newline after newline Guido van Rossum 2.2 SF 260 Simplify xrange() Guido van Rossum 2.2 SF 261 Support for “wide” Unicode characters Paul Prescod 2.2 SR 262 A Database of Installed Python Packages A.M. Kuchling 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 SR 265 Sorting Dictionaries by Value Grant Griffin 2.2 SW 266 Optimizing Global Variable/Attribute Access Skip Montanaro 2.3 SD 267 Optimized Access to Module Namespaces Jeremy Hylton 2.2 SR 268 Extended HTTP functionality and WebDAV Greg Stein 2.x SD 269 Pgen Module for Python Jonathan Riehl 2.2 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 IF 272 API for Block Encryption Algorithms v1.0 A.M. Kuchling SF 273 Import Modules from Zip Archives James C. Ahlstrom 2.3 SF 274 Dict Comprehensions Barry Warsaw 2.7, 3.0 SR 275 Switching on Multiple Values Marc-André Lemburg 2.6 SR 276 Simple Iterator for ints Jim Althoff 2.3 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 SD 280 Optimizing access to globals Guido van Rossum 2.3 SR 281 Loop Counter Iteration with range and xrange Magnus Lie Hetland 2.3 SF 282 A Logging System Vinay Sajip, Trent Mick 2.3 IF 283 Python 2.3 Release Schedule Guido van Rossum 2.3 SR 284 Integer for-loops David Eppstein, Gregory Ewing 2.3 SF 285 Adding a bool type Guido van Rossum 2.3 SD 286 Enhanced Argument Tuples Martin von Löwis 2.3 IA 287 reStructuredText Docstring Format David Goodger SW 288 Generators Attributes and Exceptions Raymond Hettinger 2.5 SF 289 Generator Expressions Raymond Hettinger 2.4 IA 290 Code Migration and Modernization Raymond Hettinger IF 291 Backward Compatibility for the Python 2 Standard Library Neal Norwitz 2.3 SF 292 Simpler String Substitutions Barry Warsaw 2.4 SF 293 Codec Error Handling Callbacks Walter Dörwald 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 SF 301 Package Index and Metadata for Distutils Richard Jones 2.3 SF 302 New Import Hooks Just van Rossum, Paul Moore 2.3 SR 303 Extend divmod() for Multiple Divisors Thomas Bellman 2.3 SW 304 Controlling Generation of Bytecode Files Skip Montanaro SF 305 CSV File API Kevin Altis, Dave Cole, Andrew McNamara, Skip Montanaro, Cliff Wells 2.3 IW 306 How to Change Python’s Grammar Michael Hudson, Jack Diederich, Alyssa Coghlan, Benjamin Peterson 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 SR 310 Reliable Acquisition/Release Pairs Michael Hudson, Paul Moore 2.4 SF 311 Simplified Global Interpreter Lock Acquisition for Extensions Mark Hammond 2.3 SD 312 Simple Implicit Lambda Roman Suzi, Alex Martelli 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 SD 316 Programming by Contract for Python Terence Way SR 317 Eliminate Implicit Exception Instantiation Steven Taschuk 2.4 SF 318 Decorators for Functions and Methods Kevin D. Smith, Jim J. Jewett, Skip Montanaro, Anthony Baxter 2.4 SR 319 Python Synchronize/Asynchronize Block Michel Pelletier 2.4 IF 320 Python 2.4 Release Schedule Barry Warsaw, Raymond Hettinger, Anthony Baxter 2.4 SW 321 Date/Time Parsing and Formatting A.M. Kuchling 2.4 SF 322 Reverse Iteration Raymond Hettinger 2.4 SD 323 Copyable Iterators Alex Martelli 2.5 SF 324 subprocess - New process module Peter Astrand 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 SF 327 Decimal Data Type Facundo Batista 2.4 SF 328 Imports: Multi-Line and Absolute/Relative Aahz 2.4, 2.5, 2.6 SR 329 Treating Builtins as Constants in the Standard Library Raymond Hettinger 2.4 SR 330 Python Bytecode Verification Michel Pelletier 2.6 SF 331 Locale-Independent Float/String Conversions Christian R. Reis 2.4 SR 332 Byte vectors and String/Unicode Unification Skip Montanaro 2.5 IF 333 Python Web Server Gateway Interface v1.0 Phillip J. Eby 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 SD 337 Logging Usage in the Standard Library Michael P. Dubner 2.5 SF 338 Executing modules as scripts Alyssa Coghlan 2.5 IW 339 Design of the CPython Compiler Brett Cannon SR 340 Anonymous Block Statements Guido van Rossum 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 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 PF 347 Migrating the Python CVS to Subversion Martin von Löwis 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 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 SS 354 Enumerations in Python Ben Finney 2.6 SR 355 Path - Object oriented filesystem paths Björn Lindqvist 2.5 IF 356 Python 2.5 Release Schedule Neal Norwitz, Guido van Rossum, Anthony Baxter 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 SW 359 The “make” Statement Steven Bethard 2.6 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 SF 362 Function Signature Object Brett Cannon, Jiwon Seo, Yury Selivanov, Larry Hastings 3.3 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 SF 366 Main module explicit relative imports Alyssa Coghlan 2.6, 3.0 SS 367 New Super Calvin Spealman, Tim Delaney 2.6 SD 368 Standard image protocol and class Lino Mastrodomenico 2.6, 3.0 SW 369 Post import hooks Christian Heimes 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 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 SF 376 Database of Installed Python Distributions Tarek Ziadé 2.7, 3.2 SR 377 Allow __enter__() methods to skip the statement body Alyssa Coghlan 2.7, 3.1 SF 378 Format Specifier for Thousands Separator Raymond Hettinger 2.7, 3.1 SW 379 Adding an Assignment Expression Jervis Whitley 2.7, 3.2 SF 380 Syntax for Delegating to a Subgenerator Gregory Ewing 3.3 SW 381 Mirroring infrastructure for PyPI Tarek Ziadé, Martin von Löwis SR 382 Namespace Packages Martin von Löwis 3.2 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 PF 385 Migrating from Subversion to Mercurial Dirkjan Ochtman, Antoine Pitrou, Georg Brandl SS 386 Changing the version comparison module in Distutils Tarek Ziadé PA 387 Backwards Compatibility Policy Benjamin Peterson SF 389 argparse - New Command Line Parsing Module Steven Bethard 2.7, 3.2 SR 390 Static metadata for Distutils Tarek Ziadé 2.7, 3.2 SF 391 Dictionary-Based Configuration For Logging Vinay Sajip 2.7, 3.2 IF 392 Python 3.2 Release Schedule Georg Brandl 3.2 SF 393 Flexible String Representation Martin von Löwis 3.3 IA 394 The “python” Command on Unix-Like Systems Kerrick Staley, Alyssa Coghlan, Barry Warsaw, Petr Viktorin, Miro Hrončok, Carol Willing SW 395 Qualified Names for Modules Alyssa Coghlan 3.4 IR 396 Module Version Numbers Barry Warsaw SF 397 Python launcher for Windows Mark Hammond, Martin von Löwis 3.3 IF 398 Python 3.3 Release Schedule Georg Brandl 3.3 IF 399 Pure Python/C Accelerator Module Compatibility Requirements Brett Cannon 3.3 SD 400 Deprecate codecs.StreamReader and codecs.StreamWriter Victor Stinner 3.3 PR 401 BDFL Retirement Barry Warsaw, Brett Cannon SR 402 Simplified Package Layout and Partitioning Phillip J. Eby 3.3 SD 403 General purpose decorator clause (aka “@in” clause) Alyssa Coghlan 3.4 IF 404 Python 2.8 Un-release Schedule Barry Warsaw 2.8 SF 405 Python Virtual Environments Carl Meyer 3.3 SW 406 Improved Encapsulation of Import State Alyssa Coghlan, Greg Slodkowicz 3.4 PD 407 New release cycle and introducing long-term support versions Antoine Pitrou, Georg Brandl, Barry Warsaw SR 408 Standard library __preview__ package Alyssa Coghlan, Eli Bendersky 3.3 SF 409 Suppressing exception context Ethan Furman 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 SF 412 Key-Sharing Dictionary Mark Shannon 3.3 PW 413 Faster evolution of the Python Standard Library Alyssa Coghlan 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 SR 416 Add a frozendict builtin type Victor Stinner 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 SD 419 Protecting cleanup statements from interruptions Paul Colomiets 3.3 SF 420 Implicit Namespace Packages Eric V. Smith 3.3 SF 421 Adding sys.implementation Eric Snow 3.3 SW 422 Simpler customisation of class creation Alyssa Coghlan, Daniel Urban 3.5 ID 423 Naming conventions and recipes related to packaging Benoit Bryon SF 424 A method for exposing a length hint Alex Gaynor 3.4 SF 425 Compatibility Tags for Built Distributions Daniel Holth 3.4 IW 426 Metadata for Python Software Packages 2.0 Alyssa Coghlan, Daniel Holth, Donald Stufft SF 427 The Wheel Binary Package Format 1.0 Daniel Holth SF 428 The pathlib module – object-oriented filesystem paths Antoine Pitrou 3.4 IF 429 Python 3.4 Release Schedule Larry Hastings 3.4 IF 430 Migrating to Python 3 as the default online documentation Alyssa Coghlan 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 IA 434 IDLE Enhancement Exception for All Branches Todd Rovito, Terry Reedy 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 SR 437 A DSL for specifying signatures, annotations and argument converters Stefan Krah 3.4 PS 438 Transitioning to release-file hosting on PyPI Holger Krekel, Carl Meyer SR 439 Inclusion of implicit pip bootstrap in Python installation Richard Jones 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 ID 444 Python Web3 Interface Chris McDonough, Armin Ronacher 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 SD 447 Add __getdescriptor__ method to metaclass Ronald Oussoren SF 448 Additional Unpacking Generalizations Joshua Landau 3.5 PF 449 Removal of the PyPI Mirror Auto Discovery and Naming Scheme Donald Stufft 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 IF 452 API for Cryptographic Hash Functions v2.0 A.M. Kuchling, Christian Heimes 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 SR 455 Adding a key-transforming dictionary to collections Antoine Pitrou 3.5 SF 456 Secure and interchangeable hash algorithm Christian Heimes 3.4 IF 457 Notation For Positional-Only Parameters Larry Hastings 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 SW 459 Standard Metadata Extensions for Python Software Packages Alyssa Coghlan SW 460 Add binary interpolation and formatting Antoine Pitrou 3.5 SF 461 Adding % formatting to bytes and bytearray Ethan Furman 3.5 PW 462 Core development workflow automation for CPython Alyssa Coghlan SR 463 Exception-catching expressions Chris Angelico 3.5 PF 464 Removal of the PyPI Mirror Authenticity API Donald Stufft 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 S 467 Minor API improvements for binary sequences Alyssa Coghlan, Ethan Furman 3.12 SF 468 Preserving the order of **kwargs in a function. Eric Snow 3.6 SW 469 Migration of dict iteration code to Python 3 Alyssa Coghlan 3.5 PF 470 Removing External Hosting Support on PyPI Donald Stufft SF 471 os.scandir() function – a better and faster directory iterator Ben Hoyt 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 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 IF 478 Python 3.5 Release Schedule Larry Hastings 3.5 SF 479 Change StopIteration handling inside generators Chris Angelico, Guido van Rossum 3.5 S 480 Surviving a Compromise of PyPI: End-to-end signing of packages Trishank Karthik Kuppusamy, Vladimir Diaz, Justin Cappos, Marina Moore PW 481 Migrate CPython to Git, Github, and Phabricator Donald Stufft IF 482 Literature Overview for Type Hints Łukasz Langa IF 483 The Theory of Type Hints Guido van Rossum, Ivan Levkivskyi 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 SR 490 Chain exceptions at C level Victor Stinner 3.6 SD 491 The Wheel Binary Package Format 1.9 Daniel Holth 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 IF 494 Python 3.6 Release Schedule Ned Deily 3.6 SF 495 Local Time Disambiguation Alexander Belopolsky, Tim Peters 3.6 IR 496 Environment Markers James Polley PR 497 A standard mechanism for backward compatibility Ed Schofield SF 498 Literal String Interpolation Eric V. Smith 3.6 SD 499 python -m foo should also bind ‘foo’ in sys.modules Cameron Simpson, Chris Angelico, Joseph Jevnik 3.10 SR 500 A protocol for delegating datetime methods to their tzinfo implementations Alexander Belopolsky, Tim Peters SD 501 General purpose string interpolation Alyssa Coghlan 3.6 IR 502 String Interpolation - Extended Discussion Mike G. Miller 3.6 SF 503 Simple Repository API Donald Stufft SW 504 Using the System RNG by default Alyssa Coghlan 3.6 SD 505 None-aware operators Mark E. Haase, Steve Dower 3.8 SF 506 Adding A Secrets Module To The Standard Library Steven D’Aprano 3.6 PR 507 Migrate CPython to Git and GitLab Barry Warsaw SF 508 Dependency specification for Python Software Packages Robert Collins 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 PF 512 Migrating from hg.python.org to GitHub Brett Cannon IS 513 A Platform Tag for Portable Linux Built Distributions Robert T. McGibbon, Nathaniel J. Smith IA 514 Python registration in the Windows registry Steve Dower SF 515 Underscores in Numeric Literals Georg Brandl, Serhiy Storchaka 3.6 SR 516 Build system abstraction for pip/conda etc Robert Collins, Nathaniel J. Smith 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 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 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 SW 531 Existence checking operators Alyssa Coghlan 3.7 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 SW 536 Final Grammar for Literal String Interpolation Philipp Angerer 3.7 IF 537 Python 3.7 Release Schedule Ned Deily 3.7 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 PF 541 Package Index Name Retention Łukasz Langa SR 542 Dot Notation Assignment In Function Header Markus Meskanen SW 543 A Unified TLS API for Python Cory Benfield, Christian Heimes 3.7 SA 544 Protocols: Structural subtyping (static duck typing) Ivan Levkivskyi, Jukka Lehtosalo, Łukasz Langa 3.8 PF 545 Python Documentation Translations Julien Palard, Inada Naoki, Victor Stinner SR 546 Backport ssl.MemoryBIO and ssl.SSLObject to Python 2.7 Victor Stinner, Cory Benfield 2.7 SD 547 Running extension modules using the -m option Marcel Plch, Petr Viktorin 3.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 SF 552 Deterministic pycs Benjamin Peterson 3.7 SF 553 Built-in breakpoint() Barry Warsaw 3.7 SS 554 Multiple Interpreters in the Stdlib Eric Snow 3.13 SW 555 Context-local variables (contextvars) Koos Zevenhoven 3.7 SD 556 Threaded garbage collection Antoine Pitrou 3.7 SF 557 Data Classes Eric V. Smith 3.7 SD 558 Defined semantics for locals() Alyssa Coghlan 3.13 SR 559 Built-in noop() Barry Warsaw 3.7 SA 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 SA 563 Postponed Evaluation of Annotations Łukasz Langa 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 SD 568 Generator-sensitivity for Context Variables Nathaniel J. Smith 3.8 IA 569 Python 3.8 Release Schedule Łukasz Langa 3.8 SF 570 Python Positional-Only Parameters Larry Hastings, Pablo Galindo, Mario Corchero, Eric N. Vander Weele 3.8 IS 571 The manylinux2010 Platform Tag Mark Williams, Geoffrey Thomas, Thomas Kluyver 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 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 SA 578 Python Runtime Audit Hooks Steve Dower 3.8 IF 579 Refactoring C functions and methods Jeroen Demeyer SR 580 The C call protocol Jeroen Demeyer 3.8 PA 581 Using GitHub Issues for CPython Mariatta 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 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 SA 586 Literal Types Michael Lee, Ivan Levkivskyi, Jukka Lehtosalo 3.8 SF 587 Python Initialization Configuration Victor Stinner, Alyssa Coghlan 3.8 I 588 GitHub Issues Migration Plan Mariatta 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 SF 592 Adding “Yank” Support to the Simple API Donald Stufft SA 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 IW 595 Improving bugs.python.org Ezio Melotti, Berker Peksag IA 596 Python 3.9 Release Schedule Łukasz Langa 3.9 SF 597 Add optional EncodingWarning Inada Naoki 3.10 IW 598 Introducing incremental feature releases Alyssa Coghlan 3.9 IS 599 The manylinux2014 Platform Tag Dustin Ingram SF 600 Future ‘manylinux’ Platform Tags for Portable Linux Built Distributions Nathaniel J. Smith, Thomas Kluyver SR 601 Forbid return/break/continue breaking out of finally Damien George, Batuhan Taskaya 3.8 IA 602 Annual Release Cycle for Python Łukasz Langa 3.9 S 603 Adding a frozenmap type to collections Yury Selivanov SA 604 Allow writing union types as X | Y Philippe PRADOS, Maggie Moss 3.10 IR 605 A rolling feature release stream for CPython Steve Dower, Alyssa Coghlan 3.9 SR 606 Python Compatibility Version Victor Stinner 3.9 IF 607 Reducing CPython’s Feature Delivery Latency Łukasz Langa, Steve Dower, Alyssa Coghlan 3.9 SR 608 Coordinated Python release Miro Hrončok, Victor Stinner 3.9 PA 609 Python Packaging Authority (PyPA) Governance Dustin Ingram, Pradyun Gedam, Sumana Harihareswara SF 610 Recording the Direct URL Origin of installed distributions Stéphane Bidoul, Chris Jerdonek SW 611 The one million limit Mark Shannon SA 612 Parameter Specification Variables Mark Mendoza 3.10 SA 613 Explicit Type Aliases Shannon Zhu 3.10 SF 614 Relaxing Grammar Restrictions On Decorators Brandt Bucher 3.9 SA 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 SA 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 IA 619 Python 3.10 Release Schedule Pablo Galindo Salgado 3.10 SW 620 Hide implementation details from the C API Victor Stinner 3.12 SF 621 Storing project metadata in pyproject.toml Brett Cannon, Dustin Ingram, Paul Ganssle, Pradyun Gedam, Sébastien Eustace, Thomas Kluyver, Tzu-ping Chung SS 622 Structural Pattern Matching Brandt Bucher, Daniel F Moisset, Tobias Kohn, Ivan Levkivskyi, Guido van Rossum, Talin 3.10 SF 623 Remove wstr from Unicode Inada Naoki 3.10 SF 624 Remove Py_UNICODE encoder APIs Inada Naoki 3.11 SA 625 Filename of a Source Distribution Tzu-ping Chung, Paul Moore 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 IF 630 Isolating Extension Modules Petr Viktorin SS 631 Dependency specification in pyproject.toml based on PEP 508 Ofek Lev SF 632 Deprecate distutils module Steve Dower 3.10 SR 633 Dependency specification in pyproject.toml using an exploded TOML table Laurie Opperman, Arun Babu Neelicattu SA 634 Structural Pattern Matching: Specification Brandt Bucher, Guido van Rossum 3.10 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 SR 637 Support for indexing with keyword arguments Stefano Borini 3.10 S 638 Syntactic Macros Mark Shannon S 639 Improving License Clarity with Better Package Metadata Philippe Ombredanne, C.A.M. Gerlach 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 SF 643 Metadata for Package Source Distributions Paul Moore SF 644 Require OpenSSL 1.1.1 or newer Christian Heimes 3.10 SW 645 Allow writing optional types as x? Maggie Moss 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 SR 648 Extensible customizations of the interpreter at startup Mario Corchero 3.11 SA 649 Deferred Evaluation Of Annotations Using Descriptors Larry Hastings 3.13 SW 650 Specifying Installer Requirements for Python Projects Vikram Jayanthi, Dustin Ingram, Brett Cannon SR 651 Robust Stack Overflow Handling Mark Shannon SF 652 Maintaining the Stable ABI Petr Viktorin 3.10 S 653 Precise Semantics for Pattern Matching Mark Shannon SF 654 Exception Groups and except* Irit Katriel, Yury Selivanov, Guido van Rossum 3.11 SA 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 SA 658 Serve Distribution Metadata in the Simple Repository API Tzu-ping Chung I 659 Specializing Adaptive Interpreter Mark Shannon SF 660 Editable installs for pyproject.toml based builds (wheel based) Daniel Holth, Stéphane Bidoul S 661 Sentinel Values Tal Einat SR 662 Editable installs via virtual wheels Bernát Gábor IR 663 Standardizing Enum str(), repr(), and format() behaviors Ethan Furman 3.11 IA 664 Python 3.11 Release Schedule Pablo Galindo Salgado 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 S 667 Consistent views of namespaces Mark Shannon 3.13 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 SF 670 Convert macros to functions in the Python C API Erlend Egeberg Aasland, Victor Stinner 3.11 S 671 Syntax for late-bound function argument defaults Chris Angelico 3.12 IA 672 Unicode-related Security Considerations for Python Petr Viktorin SA 673 Self Type Pradeep Kumar Srinivasan, James Hilton-Balfe 3.11 SD 674 Disallow using macros as l-values Victor Stinner 3.12 SA 675 Arbitrary Literal String Type Pradeep Kumar Srinivasan, Graham Bleaney 3.11 PA 676 PEP Infrastructure Process Adam Turner SR 677 Callable Type Syntax Steven Troxler, Pradeep Kumar Srinivasan 3.11 SF 678 Enriching Exceptions with Notes Zac Hatfield-Dodds 3.11 S 679 Allow parentheses in assert statements Pablo Galindo Salgado 3.12 SF 680 tomllib: Support for Parsing TOML in the Standard Library Taneli Hukkinen, Shantanu Jain 3.11 SA 681 Data Class Transforms Erik De Bonte, Eric Traut 3.11 SF 682 Format Specifier for Signed Zero John Belmonte 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 SF 689 Unstable C API tier Petr Viktorin 3.12 SR 690 Lazy Imports Germán Méndez Bravo, Carl Meyer 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 IA 693 Python 3.12 Release Schedule Thomas Wouters 3.12 S 694 Upload 2.0 API for Python Package Repositories Donald Stufft SA 695 Type Parameter Syntax Eric Traut 3.12 S 696 Type defaults for TypeVarLikes James Hilton-Balfe 3.12 SF 697 Limited C API for Extending Opaque Types Petr Viktorin 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 SW 704 Require virtual environments by default for package installers Pradyun Gedam S 705 TypedDict: Read-only items Alice Purcell 3.13 SF 706 Filter for tarfile.extractall Petr Viktorin 3.12 SR 707 A simplified signature for __exit__ and __aexit__ Irit Katriel 3.12 SP 708 Extending the Repository API to Mitigate Dependency Confusion Attacks Donald Stufft SA 709 Inlined comprehensions Carl Meyer 3.12 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 SR 713 Callable Modules Amethyst Reese 3.12 SA 714 Rename dist-info-metadata in the Simple API Donald Stufft SF 715 Disabling bdist_egg distribution uploads on PyPI William Woodruff S 718 Subscriptable functions James Hilton-Balfe 3.13 IA 719 Python 3.13 Release Schedule Thomas Wouters 3.13 I 720 Cross-compiling Python packages Filipe Laíns 3.12 SF 721 Using tarfile.data_filter for source distribution extraction Petr Viktorin 3.12 SR 722 Dependency specification for single-file scripts Paul Moore SP 723 Inline script metadata Ofek Lev 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 PA 729 Typing governance process Jelle Zijlstra, Shantanu Jain S 730 Adding iOS as a supported platform Russell Keith-Magee 3.13 PA 731 C API Working Group Charter Guido van Rossum, Petr Viktorin, Victor Stinner, Steve Dower, Irit Katriel 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 SR 754 IEEE 754 Floating Point Special Values Gregory R. Warnes 2.3 IA 801 Reserved Barry Warsaw PF 3000 Python 3000 Guido van Rossum PW 3001 Procedure for reviewing and improving standard library modules Georg Brandl 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 SF 3101 Advanced String Formatting Talin 3.0 SF 3102 Keyword-Only Arguments Talin 3.0 SR 3103 A Switch/Case Statement Guido van Rossum 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 SR 3117 Postfix type declarations Georg Brandl 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 SR 3122 Delineation of the main module Brett Cannon SF 3123 Making PyObject_HEAD conform to standard C Martin von Löwis 3.0 SD 3124 Overloading, Generic Functions, Interfaces, and Adaptation Phillip J. Eby SR 3125 Remove Backslash Continuation Jim J. Jewett SR 3126 Remove Implicit String Concatenation Jim J. Jewett, Raymond Hettinger SF 3127 Integer Literal Support and Syntax Patrick Maupin 3.0 SR 3128 BList: A Faster List-like Type Daniel Stutzbach 2.6, 3.0 SF 3129 Class Decorators Collin Winter 3.0 SR 3130 Access to Current Module/Class/Function Jim J. Jewett 3.0 SF 3131 Supporting Non-ASCII Identifiers Martin von Löwis 3.0 SF 3132 Extended Iterable Unpacking Georg Brandl 3.0 SR 3133 Introducing Roles Collin Winter 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 SR 3136 Labeled break and continue Matt Chisholm 3.1 SF 3137 Immutable Bytes and Mutable Buffer Guido van Rossum 3.0 SF 3138 String representation in Python 3000 Atsuo Ishimoto 3.0 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 SF 3141 A Type Hierarchy for Numbers Jeffrey Yasskin 3.0 SR 3142 Add a “while” clause to generator expressions Gerald Britton 3.0 SD 3143 Standard daemon process library Ben Finney 3.x SF 3144 IP Address Manipulation Library for the Python Standard Library Peter Moody 3.3 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 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 SD 3150 Statement local namespaces (aka “given” clause) Alyssa Coghlan 3.4 SF 3151 Reworking the OS and IO exception hierarchy Antoine Pitrou 3.3 SR 3152 Cofunctions Gregory Ewing 3.3 SS 3153 Asynchronous IO support Laurens Van Houtven 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 IF 3333 Python Web Server Gateway Interface v1.0.1 Phillip J. Eby IF 8000 Python Language Governance Proposal Overview Barry Warsaw 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 IF 8002 Open Source Governance Survey Barry Warsaw, Łukasz Langa, Antoine Pitrou, Doug Hellmann, Carol Willing 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 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 RESERVED PEP NUMBERS PEP Title Authors 801 RESERVED Warsaw PEP TYPES KEY * I — Informational: Non-normative PEP containing background, guidelines or other information relevant to the Python ecosystem * P — Process: Normative PEP describing or proposing a change to a Python community process, workflow or governance * S — Standards 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 * A — Accepted: Normative proposal accepted for implementation * A — Active: Currently valid informational guidance, or an in-use process * D — Deferred: Inactive draft that may be taken up again at a later time * <No letter> — Draft: Proposal under active discussion and revision * F — Final: Accepted and implementation complete, or no longer active * P — Provisional: Provisionally accepted but additional feedback needed * R — Rejected: Formally declined and will not be accepted * S — Superseded: Replaced by another succeeding PEP * W — Withdrawn: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Łukasz Langa lukasz at python.org CONTENTS * Introduction * Topics * Index by Category * Meta-PEPs (PEPs about PEPs or Processes) * Other Informational PEPs * Provisional PEPs (provisionally accepted; interface may still change) * Accepted PEPs (accepted; may not be implemented yet) * Open PEPs (under consideration) * Finished PEPs (done, with a stable interface) * Historical Meta-PEPs and Informational PEPs * Deferred PEPs (postponed pending further research or updates) * Abandoned, Withdrawn, and Rejected PEPs * Numerical Index * Reserved PEP Numbers * PEP Types Key * PEP Status Key * Authors/Owners