summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Abou-Samra <jean@abou-samra.fr>2023-02-12 15:20:11 +0100
committerGitHub <noreply@github.com>2023-02-12 15:20:11 +0100
commit6ef6915d3530e844243893f91bf4bd702dfef570 (patch)
treee97939b46b72b0473d20fd2887df80fa1523b4e7
parentdfc2e065a2e71011017077e549cd2f9bf4944c54 (diff)
downloadcpython-git-6ef6915d3530e844243893f91bf4bd702dfef570.tar.gz
gh-101845: pyspecific: Fix i18n for availability directive (GH-101846)
pyspecific: Fix i18n for availability directive If the directive has content, the previous code would nest paragraph nodes from that content inside a general paragraph node, which confuses Sphinx and leads it to drop the content when translating. Instead, use a container node for the body. Also use set_source_info so that any warnings have location info.
-rw-r--r--Doc/tools/extensions/pyspecific.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py
index db7bb3b442..d659a4a54b 100644
--- a/Doc/tools/extensions/pyspecific.py
+++ b/Doc/tools/extensions/pyspecific.py
@@ -28,6 +28,7 @@ except ImportError:
from sphinx.environment import NoUri
from sphinx.locale import _ as sphinx_gettext
from sphinx.util import status_iterator, logging
+from sphinx.util.docutils import SphinxDirective
from sphinx.util.nodes import split_explicit_title
from sphinx.writers.text import TextWriter, TextTranslator
@@ -119,7 +120,7 @@ class ImplementationDetail(Directive):
# Support for documenting platform availability
-class Availability(Directive):
+class Availability(SphinxDirective):
has_content = True
required_arguments = 1
@@ -139,18 +140,19 @@ class Availability(Directive):
def run(self):
availability_ref = ':ref:`Availability <availability>`: '
+ avail_nodes, avail_msgs = self.state.inline_text(
+ availability_ref + self.arguments[0],
+ self.lineno)
pnode = nodes.paragraph(availability_ref + self.arguments[0],
- classes=["availability"],)
- n, m = self.state.inline_text(availability_ref, self.lineno)
- pnode.extend(n + m)
- n, m = self.state.inline_text(self.arguments[0], self.lineno)
- pnode.extend(n + m)
+ '', *avail_nodes, *avail_msgs)
+ self.set_source_info(pnode)
+ cnode = nodes.container("", pnode, classes=["availability"])
+ self.set_source_info(cnode)
if self.content:
- self.state.nested_parse(self.content, self.content_offset, pnode)
-
+ self.state.nested_parse(self.content, self.content_offset, cnode)
self.parse_platforms()
- return [pnode]
+ return [cnode]
def parse_platforms(self):
"""Parse platform information from arguments