MCPcopy
hub / github.com/sphinx-doc/sphinx / _resolve_numref_xref

Method _resolve_numref_xref

sphinx/domains/std/__init__.py:1087–1170  ·  view source on GitHub ↗
(
        self,
        env: BuildEnvironment,
        fromdocname: str,
        builder: Builder,
        typ: str,
        target: str,
        node: pending_xref,
        contnode: Element,
    )

Source from the content-addressed store, hash-verified

1085 )
1086
1087 def _resolve_numref_xref(
1088 self,
1089 env: BuildEnvironment,
1090 fromdocname: str,
1091 builder: Builder,
1092 typ: str,
1093 target: str,
1094 node: pending_xref,
1095 contnode: Element,
1096 ) -> nodes.reference | None:
1097 if target in self.labels:
1098 docname, labelid, figname = self.labels.get(target, ('', '', ''))
1099 else:
1100 docname, labelid = self.anonlabels.get(target, ('', ''))
1101 figname = None
1102
1103 if not docname:
1104 return None
1105
1106 target_node = env.get_doctree(docname).ids.get(labelid)
1107 assert target_node is not None
1108 figtype = self.get_enumerable_node_type(target_node)
1109 if figtype is None:
1110 return None
1111
1112 if figtype != 'section' and env.config.numfig is False:
1113 logger.warning(
1114 __('numfig is disabled. :numref: is ignored.'), location=node
1115 )
1116 return contnode # type: ignore[return-value]
1117
1118 try:
1119 fignumber = self.get_fignumber(env, builder, figtype, docname, target_node)
1120 if fignumber is None:
1121 return contnode # type: ignore[return-value]
1122 except ValueError:
1123 logger.warning(
1124 __(
1125 'Failed to create a cross reference. Any number is not assigned: %s'
1126 ),
1127 labelid,
1128 location=node,
1129 )
1130 return contnode # type: ignore[return-value]
1131
1132 try:
1133 if node['refexplicit']:
1134 title = contnode.astext()
1135 else:
1136 title = env.config.numfig_format.get(figtype, '')
1137
1138 if figname is None and '{name}' in title:
1139 logger.warning(__('the link has no caption: %s'), title, location=node)
1140 return contnode # type: ignore[return-value]
1141 else:
1142 fignum = '.'.join(map(str, fignumber))
1143 if '{name}' in title or 'number' in title:
1144 # new style format (cf. "Fig.{number}")

Callers

nothing calls this directly

Calls 9

get_fignumberMethod · 0.95
build_reference_nodeMethod · 0.95
get_doctreeMethod · 0.80
getMethod · 0.45
warningMethod · 0.45
astextMethod · 0.45
joinMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected