(
self,
env: BuildEnvironment,
fromdocname: str,
builder: Builder,
typ: str,
target: str,
node: pending_xref,
contnode: Element,
)
| 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}") |
nothing calls this directly
no test coverage detected