From 1a680a37a56b6b568b9457c543ee9540e160282a Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 16 Sep 2026 16:11:33 +0300 Subject: [PATCH 1/2] Infra: use mypy stable for intersphinx --- peps/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peps/conf.py b/peps/conf.py index a8e986869ab..9766d91fa0c 100644 --- a/peps/conf.py +++ b/peps/conf.py @@ -70,7 +70,7 @@ # Intersphinx configuration (keep this in alphabetical order) intersphinx_mapping = { "devguide": ("https://devguide.python.org", None), - "mypy": ("https://mypy.readthedocs.io/en/latest", None), + "mypy": ("https://mypy.readthedocs.io/en/stable", None), "packaging": ("https://packaging.python.org/en/latest", None), "py3.11": ("https://docs.python.org/3.11", None), "py3.12": ("https://docs.python.org/3.12", None), From 40f0d60f03e4c1b21d10c779e3f7a2d882045c62 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 16 Sep 2026 16:31:37 +0300 Subject: [PATCH 2/2] Don't include intersphinx version in HTML link titles --- pep_sphinx_extensions/__init__.py | 1 + .../transforms/pep_references.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/pep_sphinx_extensions/__init__.py b/pep_sphinx_extensions/__init__.py index 1c3383dfd81..4d85656fefd 100644 --- a/pep_sphinx_extensions/__init__.py +++ b/pep_sphinx_extensions/__init__.py @@ -95,6 +95,7 @@ def setup(app: Sphinx) -> dict[str, bool]: ) # Transform PEP references to links app.add_post_transform(pep_references.PEPReferenceRoleTitleText) + app.add_post_transform(pep_references.PEPIntersphinxTitleText) # Register custom directives app.add_directive("pep-banner", pep_banner_directive.PEPBanner) diff --git a/pep_sphinx_extensions/pep_processor/transforms/pep_references.py b/pep_sphinx_extensions/pep_processor/transforms/pep_references.py index cc2840e9208..5a22e244829 100644 --- a/pep_sphinx_extensions/pep_processor/transforms/pep_references.py +++ b/pep_sphinx_extensions/pep_processor/transforms/pep_references.py @@ -1,3 +1,4 @@ +import re from pathlib import Path from docutils import nodes, transforms @@ -33,3 +34,25 @@ def apply(self) -> None: node["reftitle"] += f" ยง {target_ids[fragment][0].astext()}" except KeyError: pass + + +class PEPIntersphinxTitleText(transforms.Transform): + """Remove version numbers from intersphinx reference title text. + + Intersphinx sets ``reftitle`` to "(in v)" from the + target's inventory. Version changes between builds make otherwise-unchanged + pages appear modified in Read the Docs PR previews. + """ + + # Run after Sphinx's ReferencesResolver (priority 10) has resolved + # intersphinx references + default_priority = 740 + + version_pattern = re.compile(r"^\(in (.+?) v?\d[^\s)]*\)$") + + def apply(self) -> None: + for node in self.document.findall(nodes.reference): + if node.get("internal", True): + continue + reftitle = node.get("reftitle", "") + node["reftitle"] = self.version_pattern.sub(r"(in \1)", reftitle)