Skip to content

Commit ce48c4e

Browse files
Infra: Don't include intersphinx version in HTML link titles (#5127)
Co-authored-by: Stan Ulbrych <stan@python.org>
1 parent ff16962 commit ce48c4e

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

‎pep_sphinx_extensions/__init__.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def setup(app: Sphinx) -> dict[str, bool]:
9595
) # Transform PEP references to links
9696

9797
app.add_post_transform(pep_references.PEPReferenceRoleTitleText)
98+
app.add_post_transform(pep_references.PEPIntersphinxTitleText)
9899

99100
# Register custom directives
100101
app.add_directive("pep-banner", pep_banner_directive.PEPBanner)

‎pep_sphinx_extensions/pep_processor/transforms/pep_references.py‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import re
12
from pathlib import Path
23

34
from docutils import nodes, transforms
@@ -33,3 +34,26 @@ def apply(self) -> None:
3334
node["reftitle"] += f" § {target_ids[fragment][0].astext()}"
3435
except KeyError:
3536
pass
37+
38+
39+
class PEPIntersphinxTitleText(transforms.Transform):
40+
"""Remove version numbers from intersphinx reference title text.
41+
42+
Intersphinx sets ``reftitle`` to "(in <project> v<version>)" from the
43+
target's inventory. Version changes between builds make otherwise-unchanged
44+
pages appear modified in Read the Docs PR previews.
45+
"""
46+
47+
# Run after Sphinx's ReferencesResolver (priority 10) has resolved
48+
# intersphinx references
49+
default_priority = 740
50+
51+
version_pattern = re.compile(r"^\(in (.+?) v?\d[^\s)]*\)$")
52+
53+
def apply(self) -> None:
54+
for node in self.document.findall(nodes.reference):
55+
if node.get("internal", True):
56+
continue
57+
reftitle = node.get("reftitle", "")
58+
if reftitle:
59+
node["reftitle"] = self.version_pattern.sub(r"(in \1)", reftitle)

‎peps/conf.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
# Intersphinx configuration (keep this in alphabetical order)
7171
intersphinx_mapping = {
7272
"devguide": ("https://devguide.python.org", None),
73-
"mypy": ("https://mypy.readthedocs.io/en/latest", None),
73+
"mypy": ("https://mypy.readthedocs.io/en/stable", None),
7474
"packaging": ("https://packaging.python.org/en/latest", None),
7575
"py3.11": ("https://docs.python.org/3.11", None),
7676
"py3.12": ("https://docs.python.org/3.12", None),

0 commit comments

Comments
 (0)