@@ -245,7 +245,22 @@ Once a PEP has been accepted, the reference implementation must be
245
245
completed. When the reference implementation is complete and incorporated
246
246
into the main source code repository, the status will be changed to "Final".
247
247
248
- A PEP can also be assigned status "Deferred". The PEP author or an
248
+ To allow gathering of additional design and interface feedback before committing
249
+ to long term stability for a language feature or standard library API, a PEP
250
+ may also be marked as "Provisional". This is short for "Provisionally Accepted",
251
+ and indicates that the proposal has been accepted for inclusion in the reference
252
+ implementation, but additional user feedback is needed before the full design
253
+ can be considered "Final". Unlike regular accepted PEPs, provisionally accepted
254
+ PEPs may still be Rejected or Withdrawn *even after the related changes have
255
+ been included in a Python release*.
256
+
257
+ Wherever possible, it is considered preferable to reduce the scope of a proposal
258
+ to avoid the need to rely on the "Provisional" status (e.g. by deferring some
259
+ features to later PEPs), as this status can lead to version compatibility
260
+ challenges in the wider Python ecosystem. PEP 411 provides additional details
261
+ on potential use cases for the Provisional status.
262
+
263
+ A PEP can also be assigned the status "Deferred". The PEP author or an
249
264
editor can assign the PEP this status when no progress is being made
250
265
on the PEP. Once a PEP is deferred, a PEP editor can re-assign it
251
266
to draft status.
@@ -267,7 +282,16 @@ an API can replace version 1.
267
282
268
283
The possible paths of the status of PEPs are as follows:
269
284
270
- .. image:: pep-0001-1.png
285
+ .. image:: pep-0001-1.svg
286
+
287
+ While not shown in the diagram, "Accepted" PEPs may technically move to
288
+ "Rejected" or "Withdrawn" even after acceptance. This will only occur if
289
+ the implementation process reveals fundamental flaws in the design that were
290
+ not noticed prior to acceptance of the PEP. Unlike Provisional PEPs, these
291
+ transitions are only permitted if the accepted proposal has *not* been included
292
+ in a Python release - released changes must instead go through the regular
293
+ deprecation process (which may require a new PEP providing the rationale for
294
+ the deprecation).
271
295
272
296
Some Informational and Process PEPs may also have a status of "Active"
273
297
if they are never meant to be completed. E.g. PEP 1 (this PEP).
@@ -281,6 +305,11 @@ reached the Final state. Once a PEP has been completed, the Language and
281
305
Standard Library References become the formal documentation of the expected
282
306
behavior.
283
307
308
+ If changes based on implementation experience and user feedback are made to
309
+ Standards track PEPs while in the Accepted or Provisional State, those changes
310
+ should be noted in the PEP, such that the PEP accurately describes the state of
311
+ the implementation at the point where it is marked Final.
312
+
284
313
Informational and Process PEPs may be updated over time to reflect changes
285
314
to development practices and other details. The precise process followed in
286
315
these cases will depend on the nature and purpose of the PEP being updated.
@@ -379,7 +408,7 @@ optional and are described below. All other headers are required. ::
379
408
Author: <list of authors' real names and optionally, email addrs>
380
409
* BDFL-Delegate: <PEP czar's real name>
381
410
* Discussions-To: <email address>
382
- Status: <Draft | Active | Accepted | Deferred | Rejected |
411
+ Status: <Draft | Active | Accepted | Provisional | Deferred | Rejected |
383
412
Withdrawn | Final | Superseded>
384
413
Type: <Standards Track | Informational | Process>
385
414
* Content-Type: <text/x-rst | text/plain>
0 commit comments