Skip to content

Commit bfc2b35

Browse files
committed
gh-4379: Link target release to release PEP in PEP 0
1 parent 9bb3132 commit bfc2b35

3 files changed

Lines changed: 40 additions & 4 deletions

File tree

pep_sphinx_extensions/pep_zero_generator/pep_index_generator.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,21 @@ def write_peps_json(peps: list[parser.PEP], path: Path) -> None:
6363
def create_pep_zero(app: Sphinx, env: BuildEnvironment, docnames: list[str]) -> None:
6464
peps = _parse_peps(Path(app.srcdir))
6565

66-
numerical_index_text = writer.PEPZeroWriter().write_numerical_index(peps)
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+
}
72+
73+
numerical_index_text = writer.PEPZeroWriter(
74+
release_peps
75+
).write_numerical_index(peps)
6776
subindices.update_sphinx("numerical", numerical_index_text, docnames, env)
6877

69-
pep0_text = writer.PEPZeroWriter().write_pep0(peps, builder=env.settings["builder"])
78+
pep0_text = writer.PEPZeroWriter(
79+
release_peps
80+
).write_pep0(peps, builder=env.settings["builder"])
7081
pep0_path = subindices.update_sphinx("pep-0000", pep0_text, docnames, env)
7182
peps.append(parser.PEP(pep0_path))
7283

pep_sphinx_extensions/pep_zero_generator/writer.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ class PEPZeroWriter:
5959
801: "Warsaw",
6060
}
6161

62-
def __init__(self):
62+
def __init__(self, release_peps: dict[str, int] | None = None):
6363
self.output: list[str] = []
64+
self.release_peps = release_peps or {}
6465

6566
def emit_text(self, content: str) -> None:
6667
# Appends content argument to the output list
@@ -87,7 +88,14 @@ def emit_pep_row(
8788
self.emit_text(f" - :pep:`{title.replace('`', '')} <{number}>`")
8889
self.emit_text(f" - {authors}")
8990
if python_version is not None:
90-
self.emit_text(f" - {python_version}")
91+
pep_number = self.release_peps.get(python_version)
92+
93+
if pep_number is not None:
94+
self.emit_text(
95+
f" - :pep:`{python_version} <{pep_number}>`"
96+
)
97+
else:
98+
self.emit_text(f" - {python_version}")
9199

92100
def emit_column_headers(self, *, include_version=True) -> None:
93101
"""Output the column headers for the PEP indices."""

pep_sphinx_extensions/tests/pep_zero_generator/test_writer.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,20 @@ def test_sort_authors():
8686

8787
# Assert
8888
assert out == ["Aardvark, Alfred", "lowercase, laurence", "Zebra, Zoë"]
89+
90+
91+
def test_emit_pep_row_links_python_version_to_release_pep():
92+
# Arrange
93+
pep0_writer = writer.PEPZeroWriter(release_peps={"3.14": 745})
94+
95+
# Act
96+
pep0_writer.emit_pep_row(
97+
shorthand="Active",
98+
number=999,
99+
title="Test PEP",
100+
authors="Test Author",
101+
python_version="3.14",
102+
)
103+
104+
# Assert
105+
assert " - :pep:`3.14 <745>`" in pep0_writer.output

0 commit comments

Comments
 (0)