@@ -401,7 +401,7 @@ these cases will depend on the nature and purpose of the PEP being updated.
401
401
What belongs in a successful PEP?
402
402
=================================
403
403
404
- Each PEP should have the following parts:
404
+ Each PEP should have the following parts/sections :
405
405
406
406
1. Preamble -- RFC 822 style headers containing meta-data about the
407
407
PEP, including the PEP number, a short descriptive title (limited
@@ -411,40 +411,48 @@ Each PEP should have the following parts:
411
411
2. Abstract -- a short (~200 word) description of the technical issue
412
412
being addressed.
413
413
414
- 3. Copyright/public domain -- Each PEP must either be explicitly
415
- labeled as placed in the public domain (see this PEP as an
416
- example) or licensed under the `Open Publication License`_.
414
+ 3. Motivation -- The motivation is critical for PEPs that want to
415
+ change the Python language, library, or ecosystem. It should
416
+ clearly explain why the existing language specification is
417
+ inadequate to address the problem that the PEP solves. PEP
418
+ submissions without sufficient motivation may be rejected outright.
417
419
418
- 4. Specification -- The technical specification should describe the
419
- syntax and semantics of any new language feature. The
420
- specification should be detailed enough to allow competing,
421
- interoperable implementations for at least the current major Python
422
- platforms (CPython, Jython, IronPython, PyPy).
423
-
424
- 5. Motivation -- The motivation is critical for PEPs that want to
425
- change the Python language. It should clearly explain why the
426
- existing language specification is inadequate to address the
427
- problem that the PEP solves. PEP submissions without sufficient
428
- motivation may be rejected outright.
429
-
430
- 6. Rationale -- The rationale fleshes out the specification by
431
- describing what motivated the design and why particular design
432
- decisions were made. It should describe alternate designs that
433
- were considered and related work, e.g. how the feature is supported
434
- in other languages.
420
+ 4. Rationale -- The rationale fleshes out the specification by
421
+ describing why particular design decisions were made. It should
422
+ describe alternate designs that were considered and related work,
423
+ e.g. how the feature is supported in other languages.
435
424
436
425
The rationale should provide evidence of consensus within the
437
426
community and discuss important objections or concerns raised
438
427
during discussion.
428
+
429
+ 5. Specification -- The technical specification should describe the
430
+ syntax and semantics of any new language feature. The
431
+ specification should be detailed enough to allow competing,
432
+ interoperable implementations for at least the current major Python
433
+ platforms (CPython, Jython, IronPython, PyPy).
439
434
440
- 7 . Backwards Compatibility -- All PEPs that introduce backwards
435
+ 6 . Backwards Compatibility -- All PEPs that introduce backwards
441
436
incompatibilities must include a section describing these
442
437
incompatibilities and their severity. The PEP must explain how the
443
438
author proposes to deal with these incompatibilities. PEP
444
439
submissions without a sufficient backwards compatibility treatise
445
440
may be rejected outright.
441
+
442
+ 7. Security Implications -- If there are security concerns in relation
443
+ to the PEP, those concerns should be expliciltly written out to make
444
+ sure reviewers of the PEP are aware of them.
445
+
446
+ 8. How to Teach This -- For a PEP that adds new functionality or changes
447
+ language behavior, it is helpful to include a section on how to
448
+ teach users, new and experienced, how to apply the PEP to their
449
+ work.
446
450
447
- 8. Reference Implementation -- The reference implementation must be
451
+ This section may include key points and recommended documentation
452
+ changes that would help users adopt a new feature or migrate their
453
+ code to use a language change.
454
+
455
+ 9. Reference Implementation -- The reference implementation must be
448
456
completed before any PEP is given status "Final", but it need not
449
457
be completed before the PEP is accepted. While there is merit
450
458
to the approach of reaching consensus on the specification and
@@ -455,15 +463,30 @@ Each PEP should have the following parts:
455
463
The final implementation must include test code and documentation
456
464
appropriate for either the Python language reference or the
457
465
standard library reference.
458
-
459
- 9. How to Teach This -- For a PEP that adds new functionality or changes
460
- language behavior, it is helpful to include a section on how to
461
- teach users, new and experienced, how to apply the PEP to their
462
- work.
463
-
464
- This section may include key points and recommended documentation
465
- changes that would help users adopt a new feature or migrate their
466
- code to use a language change.
466
+
467
+ 10. Rejected Ideas -- Throughout the discussion of a PEP, various ideas
468
+ will be proposed which are not accepted. Those rejected ideas should
469
+ be recorded along with the reasoning as to why they were rejected.
470
+ This both helps record the thought process behind the final version
471
+ of the PEP as well as preventing people from bringing up the same
472
+ rejected idea again in subsequent discussions.
473
+
474
+ In a way this section can be thought of as a breakout section of the
475
+ Rationale section that is focused specifically on why certain ideas
476
+ were not ultimately pursued.
477
+
478
+ 11. Open Issues -- While a PEP is in draft, ideas can come up which
479
+ warrant further discussion. Those ideas should be recorded so people
480
+ know that they are being thought about but do not have a concrete
481
+ resolution. This helps make sure all issues required for the PEP to be
482
+ ready for consideration are complete complete and reduces people
483
+ duplicating prior discussion.
484
+
485
+ 12. References -- A collection of URLs used as references through the PEP.
486
+
487
+ 13. Copyright/public domain -- Each PEP must either be explicitly
488
+ labeled as placed in the public domain (see this PEP as an
489
+ example) or licensed under the `Open Publication License`_.
467
490
468
491
469
492
PEP Formats and Templates
0 commit comments