@@ -60,17 +60,45 @@ 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+
71+ for pep in peps :
72+ if pep .python_version and "release" in pep .topic :
73+ for version in map (str .strip , pep .python_version .split ("," )):
74+ release_peps [version ] = pep .number
75+
76+ return release_peps
77+
78+
6379def create_pep_zero (app : Sphinx , env : BuildEnvironment , docnames : list [str ]) -> None :
6480 peps = _parse_peps (Path (app .srcdir ))
6581
66- numerical_index_text = writer .PEPZeroWriter ().write_numerical_index (peps )
82+ release_peps = build_release_peps (peps )
83+
84+ numerical_index_text = writer .PEPZeroWriter (
85+ release_peps
86+ ).write_numerical_index (peps )
6787 subindices .update_sphinx ("numerical" , numerical_index_text , docnames , env )
6888
69- pep0_text = writer .PEPZeroWriter ().write_pep0 (peps , builder = env .settings ["builder" ])
89+ pep0_text = writer .PEPZeroWriter (
90+ release_peps
91+ ).write_pep0 (peps , builder = env .settings ["builder" ])
7092 pep0_path = subindices .update_sphinx ("pep-0000" , pep0_text , docnames , env )
7193 peps .append (parser .PEP (pep0_path ))
7294
73- subindices .generate_subindices (SUBINDICES_BY_TOPIC , peps , docnames , env )
95+ subindices .generate_subindices (
96+ SUBINDICES_BY_TOPIC ,
97+ peps ,
98+ release_peps ,
99+ docnames ,
100+ env ,
101+ )
74102
75103 write_peps_json (peps , Path (app .outdir ))
76104
0 commit comments