@@ -60,15 +60,37 @@ def write_peps_json(peps: list[parser.PEP], path: Path) -> None:
6060 Path (path , "api" , "peps.json" ).write_text (json_peps , encoding = "utf-8" )
6161
6262
63+ def build_release_peps (peps : list [parser .PEP ]) -> dict [str , int ]:
64+ """Map each Python version to its release-schedule PEP number.
65+
66+ Handles release PEPs that cover multiple versions jointly
67+ (e.g. "2.6, 3.0"), so individual versions also resolve.
68+ """
69+ release_peps : dict [str , int ] = {}
70+ release_versions = {
71+ pep .python_version
72+ for pep in peps
73+ if pep .python_version and "release" in pep .topic
74+ }
75+
76+ for pep in peps :
77+ if not pep .python_version or "release" not in pep .topic :
78+ continue
79+
80+ release_peps [pep .python_version ] = pep .number
81+
82+ if "," in pep .python_version :
83+ for version in map (str .strip , pep .python_version .split ("," )):
84+ if version not in release_versions :
85+ release_peps [version ] = pep .number
86+
87+ return release_peps
88+
89+
6390def create_pep_zero (app : Sphinx , env : BuildEnvironment , docnames : list [str ]) -> None :
6491 peps = _parse_peps (Path (app .srcdir ))
6592
66- release_peps = {
67- pep .python_version : pep .number
68- for pep in peps
69- if pep .python_version
70- and "release" in pep .topic
71- }
93+ release_peps = build_release_peps (peps )
7294
7395 numerical_index_text = writer .PEPZeroWriter (
7496 release_peps
0 commit comments