Multiple released PEPs have status Accepted, not Final

Reading the Accepted PEPs (accepted; may not be implemented yet) section of PEP 0, I was surprised to find many PEPs that have already been released, such as:

  • PEP 572
  • PEP 585
  • PEP 616
  • PEP 646

Based on this statement in PEP 1, I would have expected these PEPs to have status Final:

Once a PEP has been accepted, the reference implementation must be completed. When the reference implementation is complete and incorporated into the main source code repository, the status will be changed to “Final”.

It might very well be the case that I misunderstand when a PEP is supposed to be marked Final. If that is the case, perhaps someone here could clarify to me when the transition happens.

1 Like

So that people don’t have to look them up, could you provide the PEP title and/or a link to each one? Thanks!

As a new user I was only allowed to include 2 links, so I stripped out the PEP links :sweat_smile: Here are the titles!

  • PEP 572 – Assignment Expressions
  • PEP 585 – Type Hinting Generics In Standard Collections
  • PEP 616 – String methods to remove prefixes and suffixes (where you were the sponsor!)
  • PEP 646 – Variadic Generics
1 Like

Heh. If only my clients would upgrade to 3.9, I might be more familiar with it. I agree it looks like this and PEP 572 – Assignment Expressions should be Final. I’m not sure about the typing ones, I’m not a big user.

PEP 585 can probably be marked as final. PEP 646 should not be marked as final, e.g. see Clarifications to PEP 646 · Issue #145 · python/steering-council · GitHub

We haven’t been great at updating PEPs from Accepted to Final. There are quite a few that should go to Final.

Thank you for the replies! In an attempt to help out at least a little, I filed an issue and provided a PR to update the status of PEP 616 – String methods to remove prefixes and suffixes.

If the PR is approved I can do the same for:

  • PEP 572 – Assignment Expressions
  • PEP 585 – Type Hinting Generics In Standard Collections

Someone more knowledgeable would probably be able to find more PEPs that should be marked Final, but I’ll stick to fixing the ones you have verified so far.

1 Like

You can use the PEP “API” to quickly filter all their PEPs based on their metadata, to see, for example, PEPs that were Accepted for, e.g., Python 3.11 that have not yet been marked final:

import pandas as pd
import requests

peps = requests.get("https://peps.python.org/api/peps.json")
df = pd.DataFrame.from_dict(peps.json(), orient="index")
accepted_311 = df.loc[(df["python_version"] == "3.11") & (df["status"] == "Accepted")]
print(accepted_311["title"])

Of course, some of these PEPs have parts that haven’t yet been completed (e.g. final removal of the packages listed in PEP 594 in Python 3.13, or concerns about PEP 646), and many of the typing PEPs might want to wait until implementation in the major type checkers to be considered final (which @Jelle would be the person to ask about that), like the packaging PEPs do. The rest are likely suitable for being marked Final, pending confirmation by the author/sponsor and no other outstanding considerations.

You can also list all accepted PEPs, e.g. by version, category, etc., as there are likely others that haven’t yet been marked final that should be.

In any case, I’ve opened an issue to document, discuss and track the PEPs that probably should be updated, if you’d like to help:

1 Like