mirror of https://github.com/python/cpython.git
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""Support for marking up implementation details."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from docutils import nodes
|
|
from sphinx.locale import _ as sphinx_gettext
|
|
from sphinx.util.docutils import SphinxDirective
|
|
|
|
if TYPE_CHECKING:
|
|
from sphinx.application import Sphinx
|
|
from sphinx.util.typing import ExtensionMetadata
|
|
|
|
|
|
class ImplementationDetail(SphinxDirective):
|
|
has_content = True
|
|
final_argument_whitespace = True
|
|
|
|
# This text is copied to templates/dummy.html
|
|
label_text = sphinx_gettext("CPython implementation detail:")
|
|
|
|
def run(self):
|
|
self.assert_has_content()
|
|
content_nodes = self.parse_content_to_nodes()
|
|
|
|
# insert our prefix at the start of the first paragraph
|
|
first_node = content_nodes[0]
|
|
first_node[:0] = [
|
|
nodes.strong(self.label_text, self.label_text),
|
|
nodes.Text(" "),
|
|
]
|
|
|
|
# create a new compound container node
|
|
cnode = nodes.compound("", *content_nodes, classes=["impl-detail"])
|
|
self.set_source_info(cnode)
|
|
return [cnode]
|
|
|
|
|
|
def setup(app: Sphinx) -> ExtensionMetadata:
|
|
app.add_directive("impl-detail", ImplementationDetail)
|
|
|
|
return {
|
|
"version": "1.0",
|
|
"parallel_read_safe": True,
|
|
"parallel_write_safe": True,
|
|
}
|