Introduction
The PEP contains the index of all Python Enhancement Proposals,
known as PEPs. PEP numbers are assigned by the PEP Editor, and
once assigned are never changed. The CVS history[1] of the PEP
texts represent their historical record.
The BDFL maintains his own Pronouncements page[2] at
http://www.python.org/doc/essays/pepparade.html which contains his
musings on the various outstanding PEPs.
Index by Category
num title owner
--- ----- -----
Meta-PEPs (PEPs about PEPs or Process)
I 0 Index of Python Enhancement Proposals Goodger, Warsaw
P 1 PEP Guidelines Warsaw, Hylton, Goodger
I 2 Procedure for Adding New Modules Faassen
I 3 Guidelines for Handling Bug Reports Hylton
I 4 Deprecation of Standard Modules von Loewis
I 5 Guidelines for Language Evolution Prescod
P 6 Bug Fix Releases Aahz
I 7 Style Guide for C Code GvR
I 8 Style Guide for Python Code GvR, Warsaw
I 9 Sample Plaintext PEP Template Warsaw
I 10 Voting Guidelines Warsaw
I 11 Removing support for little used platforms von Loewis
I 12 Sample reStructuredText PEP Template Goodger, Warsaw
P 347 Migrating the Python CVS to Subversion von Löwis
Other Informational PEPs
I 20 The Zen of Python Peters
I 42 Feature Requests Hylton
I 101 Doing Python Releases 101 Warsaw, GvR
I 102 Doing Python Micro Releases Baxter, Warsaw, GvR
IF 247 API for Cryptographic Hash Functions Kuchling
IF 248 Python Database API Specification v1.0 Lemburg
IF 249 Python Database API Specification v2.0 Lemburg
I 257 Docstring Conventions Goodger, GvR
IF 272 API for Block Encryption Algorithms v1.0 Kuchling
I 290 Code Migration and Modernization Hettinger
I 291 Backward Compatibility for Standard Library Norwitz
I 306 How to Change Python's Grammar Hudson
I 333 Python Web Server Gateway Interface v1.0 Eby
I 339 How to Change CPython's Bytecode Cannon
I 3000 Python 3.0 Plans Kuchling, Cannon
Accepted PEPs (accepted; may not be implemented yet)
SA 308 Conditional Expressions GvR, Hettinger
SA 328 Imports: Multi-Line and Absolute/Relative Aahz
SA 341 Unifying try-except and try-finally Birkenfeld
SA 342 Coroutines via Enhanced Generators GvR, Eby
Open PEPs (under consideration)
S 209 Adding Multidimensional Arrays Barrett, Oliphant
S 228 Reworking Python's Numeric Model Zadka, GvR
S 237 Unifying Long Integers and Integers Zadka, GvR
S 243 Module Repository Upload Mechanism Reifschneider
S 245 Python Interface Syntax Pelletier
S 246 Object Adaptation Evans
S 256 Docstring Processing System Framework Goodger
S 258 Docutils Design Specification Goodger
S 266 Optimizing Global Variable/Attribute Access Montanaro
S 267 Optimized Access to Module Namespaces Hylton
S 268 Extended HTTP functionality and WebDAV Stein
S 275 Switching on Multiple Values Lemburg
S 280 Optimizing access to globals GvR
S 286 Enhanced Argument Tuples von Loewis
I 287 reStructuredText Docstring Format Goodger
S 297 Support for System Upgrades Lemburg
S 298 The Locked Buffer Interface Heller
S 299 Special __main__() function in modules Epler
S 302 New Import Hooks JvR, Moore
S 304 Controlling Generation of Bytecode Files Montanaro
S 314 Metadata for Python Software Packages v1.1 Kuchling, Jones
S 315 Enhanced While Loop Carroll, Hettinger
S 321 Date/Time Parsing and Formatting Kuchling
S 323 Copyable Iterators Martelli
S 331 Locale-Independent Float/String conversions Reis
S 332 Byte vectors and String/Unicode Unification Montanaro
S 334 Simple Coroutines via SuspendIteration Evans
S 335 Overloadable Boolean Operators Ewing
S 337 Logging Usage in the Standard Library Dubner
S 338 Executing modules inside packages with '-m' Coghlan
S 343 The "with" Statement GvR, Coghlan
S 344 Exception Chaining and Embedded Tracebacks Yee
S 345 Metadata for Python Software Packages 1.2 Jones
I 350 Codetags Elliott
S 351 The freeze protocol Warsaw
S 352 Required Superclass for Exceptions GvR, Cannon
S 754 IEEE 754 Floating Point Special Values Warnes
Finished PEPs (done, implemented in Subversion)
SF 100 Python Unicode Integration Lemburg
IF 160 Python 1.6 Release Schedule Drake
IF 200 Python 2.0 Release Schedule Hylton
SF 201 Lockstep Iteration Warsaw
SF 202 List Comprehensions Warsaw
SF 203 Augmented Assignments Wouters
S 205 Weak References Drake
SF 207 Rich Comparisons GvR, Ascher
SF 208 Reworking the Coercion Model Schemenauer, Lemburg
SF 214 Extended Print Statement Warsaw
SF 217 Display Hook for Interactive Use Zadka
SF 218 Adding a Built-In Set Object Type Wilson, Hettinger
SF 221 Import As Wouters
SF 223 Change the Meaning of \x Escapes Peters
I 226 Python 2.1 Release Schedule Hylton
S 227 Statically Nested Scopes Hylton
SF 229 Using Distutils to Build Python Kuchling
SF 230 Warning Framework GvR
SF 232 Function Attributes Warsaw
SF 234 Iterators Yee, GvR
SF 235 Import on Case-Insensitive Platforms Peters
SF 236 Back to the __future__ Peters
SF 238 Changing the Division Operator Zadka, GvR
SF 241 Metadata for Python Software Packages Kuchling
SF 250 Using site-packages on Windows Moore
IF 251 Python 2.2 Release Schedule Warsaw, GvR
SF 252 Making Types Look More Like Classes GvR
SF 253 Subtyping Built-in Types GvR
SF 255 Simple Generators Schemenauer, et al
SF 260 Simplify xrange() GvR
SF 261 Support for "wide" Unicode characters Prescod
SF 263 Defining Python Source Code Encodings Lemburg
SF 264 Future statements in simulated shells Hudson
SF 273 Import Modules from Zip Archives Ahlstrom
SF 277 Unicode file name support for Windows NT Hodgson
SF 278 Universal Newline Support Jansen
SF 279 The enumerate() built-in function Hettinger
SF 282 A Logging System Sajip, Mick
IF 283 Python 2.3 Release Schedule GvR
SF 285 Adding a bool type GvR
SF 289 Generator Expressions Hettinger
SF 292 Simpler String Substitutions Warsaw
SF 293 Codec Error Handling Callbacks Dörwald
SF 301 Package Index and Metadata for Distutils Jones
SF 305 CSV File API Montanaro, et al
SF 307 Extensions to the pickle protocol GvR, Peters
SF 309 Partial Function Application Harris
SF 311 Simplified GIL Acquisition for Extensions Hammond
SF 318 Decorators for Functions and Methods Smith, et al
IF 320 Python 2.4 Release Schedule Warsaw, et al
SF 322 Reverse Iteration Hettinger
SF 324 subprocess - New process module Astrand
SF 327 Decimal Data Type Batista
Empty PEPs (or containing only an abstract)
SD 210 Decoupling the Interpreter Loop Ascher
ID 220 Coroutines, Generators, Continuations McMillan
Deferred, Abandoned, Withdrawn, and Rejected PEPs
SR 204 Range Literals Wouters
IR 206 Python Advanced Library Kuchling
SD 211 Adding A New Outer Product Operator Wilson
SD 212 Loop Counter Iteration Schneider-Kamp
SD 213 Attribute Access Handlers Prescod
SR 215 String Interpolation Yee
IR 216 Docstring Format Zadka
SD 219 Stackless Python McMillan
SD 222 Web Library Enhancements Kuchling
SR 224 Attribute Docstrings Lemburg
SD 225 Elementwise/Objectwise Operators Zhu, Lielens
SR 231 __findattr__() Warsaw
SD 233 Python Online Help Prescod
SR 239 Adding a Rational Type to Python Craig, Zadka
SR 240 Adding a Rational Literal to Python Craig, Zadka
SR 242 Numeric Kinds Dubois
SR 244 The `directive' Statement von Loewis
SR 254 Making Classes Look More Like Types GvR
SR 259 Omit printing newline after newline GvR
SD 262 Database of Installed Python Packages Kuchling
SR 265 Sorting Dictionaries by Value Griffin
SD 269 Pgen Module for Python Riehl
SR 270 uniq method for list objects Petrone
SR 271 Prefixing sys.path by command line option Giacometti
SR 274 Dict Comprehensions Warsaw
SR 276 Simple Iterator for ints Althoff
SR 281 Loop Counter Iteration with range and xrange Hetland
SR 284 Integer for-loops Eppstein, Ewing
SR 288 Generators Attributes and Exceptions Hettinger
SR 294 Type Names in the types Module Tirosh
SR 295 Interpretation of multiline string constants Koltsov
SR 296 Adding a bytes Object Type Gilbert
SR 303 Extend divmod() for Multiple Divisors Bellman
SR 310 Reliable Acquisition/Release Pairs Hudson, Moore
SD 312 Simple Implicit Lambda Suzi, Martelli
SR 313 Adding Roman Numeral Literals to Python Meyer
SD 316 Programming by Contract for Python Way
SR 317 Eliminate Implicit Exception Instantiation Taschuk
SR 319 Python Synchronize/Asynchronize Block Pelletier
SR 325 Resource-Release Support for Generators Pedroni
SR 326 A Case for Top and Bottom Values Carlson, Reedy
SR 329 Treating Builtins as Constants in the Standard Library Hettinger
SR 330 Python Bytecode Verification Pelletier
SR 336 Make None Callable McClelland
SR 340 Anonymous Block Statements GvR
SR 346 User Defined ("with") Statements Coghlan
SR 348 Exception Reorganization for Python 3.0 Cannon
SD 349 Allow str() to return unicode strings Schemenauer
SR 666 Reject Foolish Indentation Creighton
Numerical Index
num title owner
--- ----- -----
I 0 Index of Python Enhancement Proposals Goodger, Warsaw
P 1 PEP Guidelines Warsaw, Hylton, Goodger
I 2 Procedure for Adding New Modules Faassen
I 3 Guidelines for Handling Bug Reports Hylton
I 4 Deprecation of Standard Modules von Loewis
I 5 Guidelines for Language Evolution Prescod
P 6 Bug Fix Releases Aahz
I 7 Style Guide for C Code GvR
I 8 Style Guide for Python Code GvR, Warsaw
I 9 Sample Plaintext PEP Template Warsaw
I 10 Voting Guidelines Warsaw
I 11 Removing support for little used platforms von Loewis
I 12 Sample reStructuredText PEP Template Goodger, Warsaw
I 20 The Zen of Python Peters
I 42 Feature Requests Hylton
SF 100 Python Unicode Integration Lemburg
I 101 Doing Python Releases 101 Warsaw, GvR
I 102 Doing Python Micro Releases Baxter, Warsaw, GvR
IF 160 Python 1.6 Release Schedule Drake
IF 200 Python 2.0 Release Schedule Hylton
SF 201 Lockstep Iteration Warsaw
SF 202 List Comprehensions Warsaw
SF 203 Augmented Assignments Wouters
SR 204 Range Literals Wouters
S 205 Weak References Drake
IR 206 Python Advanced Library Kuchling
SF 207 Rich Comparisons GvR, Ascher
SF 208 Reworking the Coercion Model Schemenauer, Lemburg
S 209 Adding Multidimensional Arrays Barrett, Oliphant
SD 210 Decoupling the Interpreter Loop Ascher
SD 211 Adding A New Outer Product Operator Wilson
SD 212 Loop Counter Iteration Schneider-Kamp
SD 213 Attribute Access Handlers Prescod
SF 214 Extended Print Statement Warsaw
SR 215 String Interpolation Yee
IR 216 Docstring Format Zadka
SF 217 Display Hook for Interactive Use Zadka
SF 218 Adding a Built-In Set Object Type Wilson, Hettinger
SD 219 Stackless Python McMillan
ID 220 Coroutines, Generators, Continuations McMillan
SF 221 Import As Wouters
SD 222 Web Library Enhancements Kuchling
SF 223 Change the Meaning of \x Escapes Peters
SR 224 Attribute Docstrings Lemburg
SD 225 Elementwise/Objectwise Operators Zhu, Lielens
I 226 Python 2.1 Release Schedule Hylton
S 227 Statically Nested Scopes Hylton
S 228 Reworking Python's Numeric Model Zadka, GvR
SF 229 Using Distutils to Build Python Kuchling
SF 230 Warning Framework GvR
SR 231 __findattr__() Warsaw
SF 232 Function Attributes Warsaw
SD 233 Python Online Help Prescod
SF 234 Iterators Yee, GvR
SF 235 Import on Case-Insensitive Platforms Peters
SF 236 Back to the __future__ Peters
S 237 Unifying Long Integers and Integers Zadka, GvR
SF 238 Changing the Division Operator Zadka, GvR
SR 239 Adding a Rational Type to Python Craig, Zadka
SR 240 Adding a Rational Literal to Python Craig, Zadka
SF 241 Metadata for Python Software Packages Kuchling
SR 242 Numeric Kinds Dubois
S 243 Module Repository Upload Mechanism Reifschneider
SR 244 The `directive' Statement von Loewis
S 245 Python Interface Syntax Pelletier
S 246 Object Adaptation Evans
IF 247 API for Cryptographic Hash Functions Kuchling
IF 248 Python Database API Specification v1.0 Lemburg
IF 249 Python Database API Specification v2.0 Lemburg
SF 250 Using site-packages on Windows Moore
IF 251 Python 2.2 Release Schedule Warsaw, GvR
SF 252 Making Types Look More Like Classes GvR
SF 253 Subtyping Built-in Types GvR
SR 254 Making Classes Look More Like Types GvR
SF 255 Simple Generators Schemenauer, et al
S 256 Docstring Processing System Framework Goodger
I 257 Docstring Conventions Goodger, GvR
S 258 Docutils Design Specification Goodger
SR 259 Omit printing newline after newline GvR
SF 260 Simplify xrange() GvR
SF 261 Support for "wide" Unicode characters Prescod
SD 262 Database of Installed Python Packages Kuchling
SF 263 Defining Python Source Code Encodings Lemburg
SF 264 Future statements in simulated shells Hudson
SR 265 Sorting Dictionaries by Value Griffin
S 266 Optimizing Global Variable/Attribute Access Montanaro
S 267 Optimized Access to Module Namespaces Hylton
S 268 Extended HTTP functionality and WebDAV Stein
S 269 Pgen Module for Python Riehl
SR 270 uniq method for list objects Petrone
SR 271 Prefixing sys.path by command line option Giacometti
IF 272 API for Block Encryption Algorithms v1.0 Kuchling
SF 273 Import Modules from Zip Archives Ahlstrom
SR 274 Dict Comprehensions Warsaw
S 275 Switching on Multiple Values Lemburg
SR 276 Simple Iterator for ints Althoff
SF 277 Unicode file name support for Windows NT Hodgson
SF 278 Universal Newline Support Jansen
SF 279 The enumerate() built-in function Hettinger
S 280 Optimizing access to globals GvR
SR 281 Loop Counter Iteration with range and xrange Hetland
SF 282 A Logging System Sajip, Mick
IF 283 Python 2.3 Release Schedule GvR
SR 284 Integer for-loops Eppstein, Ewing
SF 285 Adding a bool type GvR
S 286 Enhanced Argument Tuples von Loewis
I 287 reStructuredText Docstring Format Goodger
SR 288 Generators Attributes and Exceptions Hettinger
SF 289 Generator Expressions Hettinger
I 290 Code Migration and Modernization Hettinger
I 291 Backward Compatibility for Standard Library Norwitz
SF 292 Simpler String Substitutions Warsaw
SF 293 Codec Error Handling Callbacks Dörwald
SR 294 Type Names in the types Module Tirosh
SR 295 Interpretation of multiline string constants Koltsov
SR 296 Adding a bytes Object Type Gilbert
S 297 Support for System Upgrades Lemburg
S 298 The Locked Buffer Interface Heller
S 299 Special __main__() function in modules Epler
SF 301 Package Index and Metadata for Distutils Jones
S 302 New Import Hooks JvR, Moore
SR 303 Extend divmod() for Multiple Divisors Bellman
S 304 Controlling Generation of Bytecode Files Montanaro
SF 305 CSV File API Montanaro, et al
I 306 How to Change Python's Grammar Hudson
SF 307 Extensions to the pickle protocol GvR, Peters
SA 308 Conditional Expressions GvR, Hettinger
SF 309 Partial Function Application Harris
S 310 Reliable Acquisition/Release Pairs Hudson, Moore
SF 311 Simplified GIL Acquisition for Extensions Hammond
SD 312 Simple Implicit Lambda Suzi, Martelli
SR 313 Adding Roman Numeral Literals to Python Meyer
S 314 Metadata for Python Software Packages v1.1 Kuchling, Jones
S 315 Enhanced While Loop Carroll, Hettinger
SD 316 Programming by Contract for Python Way
SR 317 Eliminate Implicit Exception Instantiation Taschuk
SF 318 Decorators for Functions and Methods Smith, et al
SR 319 Python Synchronize/Asynchronize Block Pelletier
IF 320 Python 2.4 Release Schedule Warsaw, et al
S 321 Date/Time Parsing and Formatting Kuchling
SF 322 Reverse Iteration Hettinger
S 323 Copyable Iterators Martelli
SF 324 subprocess - New POSIX process module Astrand
S 325 Resource-Release Support for Generators Pedroni
SR 326 A Case for Top and Bottom Values Carlson, Reedy
SF 327 Decimal Data Type Batista
SA 328 Imports: Multi-Line and Absolute/Relative Aahz
SR 329 Treating Builtins as Constants in the Standard Library Hettinger
SR 330 Python Bytecode Verification Pelletier
S 331 Locale-Independent Float/String conversions Reis
S 332 Byte vectors and String/Unicode Unification Montanaro
I 333 Python Web Server Gateway Interface v1.0 Eby
S 334 Simple Coroutines via SuspendIteration Evans
S 335 Overloadable Boolean Operators Ewing
SR 336 Make None Callable McClelland
S 337 Logging Usage in the Standard Library Dubner
S 338 Executing modules inside packages with '-m' Coghlan
I 339 How to Change CPython's Bytecode Cannon
SR 340 Anonymous Block Statements GvR
SA 341 Unifying try-except and try-finally Birkenfeld
SA 342 Coroutines via Enhanced Generators GvR, Eby
S 343 Anonymous Block Redux and Generator Enhancements GvR
S 344 Exception Chaining and Embedded Tracebacks Yee
S 345 Metadata for Python Software Packages 1.2 Jones
SR 346 User Defined ("with") Statements Coghlan
P 347 Migrating the Python CVS to Subversion von Löwis
SR 348 Exception Reorganization for Python 3.0 Cannon
SD 349 Allow str() to return unicode strings Schemenauer
I 350 Codetags Elliott
S 351 The freeze protocol Warsaw
S 352 Required Superclass for Exceptions GvR, Cannon
SR 666 Reject Foolish Indentation Creighton
S 754 IEEE 754 Floating Point Special Values Warnes
I 3000 Python 3.0 Plans Kuchling, Cannon
Key
S - Standards Track PEP
I - Informational PEP
P - Process PEP
A - Accepted proposal
R - Rejected proposal
D - Deferred proposal
F - Final proposal
Owners
name email address
---------------- -------------
Aahz aahz at pobox.com
Ahlstrom, James C. jim at interet.com
Althoff, Jim james_althoff at i2.com
Altis, Kevin altis at semi-retired.com
Ascher, David davida at activestate.com
Astrand, Peter astrand at lysator.liu.se
Barrett, Paul barrett at stsci.edu
Batista, Facundo facundo at taniquetil.com.ar
Baxter, Anthony anthony at interlink.com.au
Bellman, Thomas bellman+pep-divmod@lysator.liu.se
Birkenfeld, Reinhold reinhold-birkenfeld-nospam at wolke7.net
Cannon, Brett brett at python.org
Carlson, Josiah jcarlson at uci.edu
Carroll, W Isaac icarroll at pobox.com
Coghlan, Nick ncoghlan at gmail.com
Cole, Dave djc at object-craft.com.au
Craig, Christopher python-pep at ccraig.org
Creighton, Laura lac at strakt.com
Dörwald, Walter
Drake, Fred fdrake at acm.org
Dubner, Michael P. dubnerm at mindless.com
Dubois, Paul F. paul at pfdubois.com
Eby, Phillip J. pje at telecommunity.com
Elliott, Micah mde at tracos.org
Epler, Jeff jepler at unpythonic.net
Eppstein, David eppstein at ics.uci.edu
Evans, Clark C. cce at clarkevans.com
Ewing, Greg greg at cosc.canterbury.ac.nz
Faassen, Martijn faassen at infrae.com
Giacometti, Frédéric B. fred at arakne.com
Gilbert, Scott xscottg at yahoo.com
Goodger, David goodger at python.org
Griffin, Grant g2 at iowegian.com
Hammond, Mark mhammond at skippinet.com.au
Harris, Peter scav at blueyonder.co.uk
Heller, Thomas theller at python.net
Hetland, Magnus Lie magnus at hetland.org
Hettinger, Raymond D. python at rcn.com
Hodgson, Neil neilh at scintilla.org
Hudson, Michael mwh at python.net
Hylton, Jeremy jeremy at zope.com
Jansen, Jack jack at cwi.nl
Jewett, Jim jimjjewett at users.sourceforge.net
Jones, Richard richard at mechanicalcat.net
Koltsov, Stepan yozh at mx1.ru
Kuchling, A.M. amk at amk.ca
Lemburg, Marc-Andre mal at lemburg.com
Lielens, Gregory gregory.lielens at fft.be
von Loewis, Martin loewis at informatik.hu-berlin.de
Martelli, Alex aleax at aleax.it
McClelland, Andrew eternalsquire at comcast.net
McMillan, Gordon gmcm at hypernet.com
McNamara, Andrew andrewm at object-craft.com.au
Mick, Trent trentm at activestate.com
Meyer, Mike mwm at mired.org
Montanaro, Skip skip at pobox.com
Moore, Paul gustav at morpheus.demon.co.uk
Norwitz, Neal neal at metaslash.com
Oliphant, Travis oliphant at ee.byu.edu
Pedroni, Samuele pedronis at python.org
Pelletier, Michel michel at users.sourceforge.net
Peters, Tim tim at zope.com
Petrone, Jason jp at demonseed.net
Prescod, Paul paul at prescod.net
Reedy, Terry tjreedy at udel.edu
Reifschneider, Sean jafo-pep at tummy.com
Reis, Christian R. kiko at async.com.br
Riehl, Jonathan jriehl at spaceship.com
van Rossum, Guido (GvR) guido at python.org
van Rossum, Just (JvR) just at letterror.com
Sajip, Vinay vinay_sajip at red-dove.com
Schemenauer, Neil nas at arctrix.com
Schneider-Kamp, Peter nowonder at nowonder.de
Smith, Kevin D. Kevin.Smith at theMorgue.org
Stein, Greg gstein at lyra.org
Suzi, Roman rnd at onego.ru
Taschuk, Steven staschuk at telusplanet.net
Tirosh, Oren oren at hishome.net
Warnes, Gregory R. warnes at users.sourceforge.net
Warsaw, Barry barry at python.org
Way, Terence terry at wayforward.net
Wells, Cliff LogiplexSoftware at earthlink.net
Wilson, Greg gvwilson at ddj.com
Wouters, Thomas thomas at xs4all.net
Yee, Ka-Ping ping at lfw.org
Zadka, Moshe moshez at zadka.site.co.il
Zhu, Huaiyu hzhu at users.sourceforge.net
References
[1] View PEP history online
http://cvs.sf.net/cgi-bin/viewcvs.cgi/python/python/nondist/peps/
[2] The Benevolent Dictator For Life's Parade of PEPs
http://www.python.org/doc/essays/pepparade.html