6262logger = logging .getLogger (__name__ )
6363
6464
65+ @dataclass
66+ class _DefinitionListTerm (n .InlineParent ):
67+ """A private node used for internal book-keeping that should not be exported to the AST."""
68+
69+ __slots__ = ()
70+ type = "definition_list_term"
71+
72+ def verify (self ) -> None :
73+ assert (
74+ False
75+ ), f"{ self .__class__ .__name__ } is private and should have been removed from AST"
76+
77+
6578class PendingLiteralInclude (PendingTask ):
6679 """Transform a literal-include directive AST node into a code node."""
6780
@@ -374,7 +387,7 @@ def dispatch_visit(self, node: docutils.nodes.Node) -> None:
374387 elif isinstance (node , rstparser .directive_argument ):
375388 self .state .append (n .DirectiveArgument ((line ,), []))
376389 elif isinstance (node , docutils .nodes .term ):
377- self .state .append (n . RefRole ((line ,), [], "std" , "term" , "" , "" , None , None ))
390+ self .state .append (_DefinitionListTerm ((line ,), []))
378391 elif isinstance (node , docutils .nodes .line_block ):
379392 self .state .append (n .LineBlock ((line ,), []))
380393 elif isinstance (node , docutils .nodes .line ):
@@ -398,6 +411,14 @@ def dispatch_departure(self, node: docutils.nodes.Node) -> None:
398411 popped = self .state .pop ()
399412
400413 top_of_state = self .state [- 1 ]
414+
415+ if isinstance (popped , _DefinitionListTerm ):
416+ assert isinstance (
417+ top_of_state , n .DefinitionListItem
418+ ), "Definition list terms must be children of definition list items"
419+ top_of_state .term = popped .children
420+ return
421+
401422 if not isinstance (top_of_state , NO_CHILDREN ):
402423 if isinstance (top_of_state , n .Parent ):
403424 top_of_state .children .append (popped )
0 commit comments