Skip to content

Commit c93723b

Browse files
singlehtml: deprecate the 'fix_refuris' helper function (#13037)
Co-authored-by: Adam Turner <[email protected]>
1 parent 9abd8e6 commit c93723b

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

CHANGES.rst

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ Incompatible changes
1212
Deprecated
1313
----------
1414

15+
* #13037: Deprecate the ``SingleHTMLBuilder.fix_refuris`` method.
16+
Patch by James Addison.
17+
1518
Features added
1619
--------------
1720

doc/extdev/deprecated.rst

+5
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ The following is a list of deprecated interfaces.
2222
- Removed
2323
- Alternatives
2424

25+
* - ``sphinx.builders.singlehtml.SingleFileHTMLBuilder.fix_refuris``
26+
- 8.2
27+
- 10.0
28+
- N/A
29+
2530
* - ``sphinx.util.FilenameUniqDict``
2631
- 8.1
2732
- 10.0

sphinx/builders/singlehtml.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
from __future__ import annotations
44

5+
import warnings
56
from typing import TYPE_CHECKING, Any
67

78
from docutils import nodes
89

910
from sphinx.builders.html import StandaloneHTMLBuilder
11+
from sphinx.deprecation import RemovedInSphinx10Warning
1012
from sphinx.environment.adapters.toctree import global_toctree_for_doc
1113
from sphinx.locale import __
1214
from sphinx.util import logging
@@ -52,6 +54,14 @@ def get_relative_uri(self, from_: str, to: str, typ: str | None = None) -> str:
5254
return self.get_target_uri(to, typ)
5355

5456
def fix_refuris(self, tree: Node) -> None:
57+
deprecation_msg = (
58+
"The 'SingleFileHTMLBuilder.fix_refuris' method is no longer used "
59+
'within the builder and is planned for removal in Sphinx 10. '
60+
'Please report malformed URIs generated by the Sphinx singlehtml '
61+
'builder as bugreports.'
62+
)
63+
warnings.warn(deprecation_msg, RemovedInSphinx10Warning, stacklevel=2)
64+
5565
# fix refuris with double anchor
5666
for refnode in tree.findall(nodes.reference):
5767
if 'refuri' not in refnode:
@@ -78,8 +88,6 @@ def _get_local_toctree(
7888
toctree = global_toctree_for_doc(
7989
self.env, docname, self, collapse=collapse, **kwargs
8090
)
81-
if toctree is not None:
82-
self.fix_refuris(toctree)
8391
return self.render_partial(toctree)['fragment']
8492

8593
def assemble_doctree(self) -> nodes.document:
@@ -89,7 +97,6 @@ def assemble_doctree(self) -> nodes.document:
8997
tree = inline_all_toctrees(self, set(), master, tree, darkgreen, [master])
9098
tree['docname'] = master
9199
self.env.resolve_references(tree, master, self)
92-
self.fix_refuris(tree)
93100
return tree
94101

95102
def assemble_toc_secnumbers(self) -> dict[str, dict[str, tuple[int, ...]]]:
@@ -140,7 +147,6 @@ def get_doc_context(self, docname: str, body: str, metatags: str) -> dict[str, A
140147
)
141148
# if there is no toctree, toc is None
142149
if toctree:
143-
self.fix_refuris(toctree)
144150
toc = self.render_partial(toctree)['fragment']
145151
display_toc = True
146152
else:

0 commit comments

Comments
 (0)