1515from docutils .parsers .rst import directives
1616from sphinx .util import logging
1717from sphinx .util .docutils import SphinxDirective , SphinxRole
18- from sphinx .application import Sphinx
1918from sphinx .transforms import SphinxTransform
19+ from sphinx .transforms .post_transforms import ReferencesResolver
20+
2021
2122from .data import Field , Schema , RawData , Data
2223from .template import Template , Phase
2324from . import extra_contexts
2425from . import utils
2526
2627if TYPE_CHECKING :
28+ from sphinx .application import Sphinx
2729 from sphinx .environment import BuildEnvironment
2830 from .template import MarkupParser
2931
@@ -85,9 +87,7 @@ def reporter(self, e: ValueError) -> Exception:
8587# Nodes definitons
8688# ===============
8789
88- class BaseNode (nodes .Node ):
89- template : Template
90- schema : Schema
90+ class BaseNode (nodes .Element ): ...
9191
9292class RenderedNode (BaseNode ):
9393 data : Data
@@ -99,6 +99,9 @@ class rendered_inline_node(RenderedNode, nodes.inline): ...
9999
100100class pending_node (BaseNode , nodes .Invisible , nodes .Element ):
101101 data : RawData
102+ template : Template
103+ schema : Schema
104+
102105 inline : bool = False
103106 need_external_name : bool = False
104107 need_external_content : bool = False
@@ -164,7 +167,7 @@ def _resolve_external_content(self) -> list[nodes.Node]:
164167
165168class BaseDataDefiner (ABC ):
166169 """
167- A abstract class that can defines :cls:`RawData` and support
170+ A abstract class that owns :cls:`RawData` and support
168171 validating and rendering the data at the appropriate time.
169172
170173 The subclasses *MUST* be subclass of :cls:`SphinxDirective` or
@@ -210,7 +213,7 @@ def build_pending_node(self) -> pending_node:
210213
211214 @final
212215 def render_pending_node (self , pending : pending_node ) -> RenderedNode :
213- rendered = pending .render (self ) # type: ignore
216+ rendered = pending .render (self ) # FIXME: type hint
214217 self .process_paresd_data (rendered .data )
215218 self .process_rendered_node (rendered )
216219
@@ -278,7 +281,7 @@ def current_schema(self) -> Schema:
278281
279282 @classmethod
280283 def derive (
281- cls , name : str , tmpl : Template , schema : Schema
284+ cls , name : str , schema : Schema , tmpl : Template
282285 ) -> type [StrictDataDefineDirective ]:
283286 """Generate an AnyDirective child class for describing object."""
284287 if not schema .name :
@@ -354,7 +357,8 @@ def _insert_parsed_hook(app, docname, content):
354357
355358
356359class _ResolvingHook (SphinxTransform ):
357- default_priority = 210 # TODO: before xref
360+ # After resolving pending_xref.
361+ default_priority = (ReferencesResolver .default_priority or 10 ) + 1
358362
359363 def apply (self , ** kwargs ):
360364 logger .warning (f'running resolving hook for doc { self .env .docname } ...' )
0 commit comments