2929class pending_node (nodes .Element ):
3030 """A docutils node to be rendered."""
3131
32- # The context to be rendered by Jinja template.
32+ #: The context to be rendered by Jinja template.
3333 ctx : UnresolvedContext | ResolvedContext
3434 #: Jinja template for rendering the context.
3535 template : Template
3636 #: Whether rendering to inline nodes.
3737 inline : bool
3838 #: Whether the rendering pipeline is finished (failed is also finished).
3939 rendered : bool
40- #: Stored pickling error for later-phase unresolved context.
40+
41+ # Stored pickling error for later-phase unresolved context.
4142 _ctx_pickle_error : Exception | None
4243
44+ # Types for hook functions.
45+ type UnresolvedContextHook = Callable [[pending_node , UnresolvedContext ], None ]
46+ type ResolvedContextHook = Callable [[pending_node , ResolvedContext ], None ]
47+ type MarkupTextHook = Callable [[pending_node , str ], str ]
48+ type RenderedNodesHook = Callable [[pending_node , list [nodes .Node ]], None ]
49+
50+ # Hooks for processing render intermediate products.
51+ _unresolved_context_hooks : list [UnresolvedContextHook ]
52+ _resolved_context_hooks : list [ResolvedContextHook ]
53+ _markup_text_hooks : list [MarkupTextHook ]
54+ _rendered_nodes_hooks : list [RenderedNodesHook ]
55+
4356 def __init__ (
4457 self ,
4558 ctx : UnresolvedContext | ResolvedContext ,
@@ -50,16 +63,18 @@ def __init__(
5063 ** attributes ,
5164 ) -> None :
5265 super ().__init__ (rawsource , * children , ** attributes )
66+ self .ctx = ctx
67+ self .template = tmpl
68+ self .inline = inline
69+ self .rendered = False
70+
71+ # Test whehter ctx pickle-able.
5372 self ._ctx_pickle_error = None
5473 if isinstance (ctx , UnresolvedContext ) and tmpl .phase != Phase .Parsing :
5574 try :
5675 pickle .dumps (ctx )
5776 except Exception as exc :
5877 self ._ctx_pickle_error = exc
59- self .ctx = ctx
60- self .template = tmpl
61- self .inline = inline
62- self .rendered = False
6378
6479 # Init hook lists.
6580 self ._unresolved_context_hooks = []
@@ -239,18 +254,6 @@ def unwrap_and_replace_self_inline(self, inliner: Report.Inliner) -> None:
239254 # Replace self with inline nodes.
240255 self .replace_self (ns )
241256
242- """Hooks for processing render intermediate products."""
243-
244- type UnresolvedContextHook = Callable [[pending_node , UnresolvedContext ], None ]
245- type ResolvedContextHook = Callable [[pending_node , ResolvedContext ], None ]
246- type MarkupTextHook = Callable [[pending_node , str ], str ]
247- type RenderedNodesHook = Callable [[pending_node , list [nodes .Node ]], None ]
248-
249- _unresolved_context_hooks : list [UnresolvedContextHook ]
250- _resolved_context_hooks : list [ResolvedContextHook ]
251- _markup_text_hooks : list [MarkupTextHook ]
252- _rendered_nodes_hooks : list [RenderedNodesHook ]
253-
254257 def hook_unresolved_context (self , hook : UnresolvedContextHook ) -> None :
255258 self ._unresolved_context_hooks .append (hook )
256259
0 commit comments