Sphinx 7.1.1__py3-none-any.whl → 7.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Sphinx might be problematic. Click here for more details.

Files changed (313) hide show
  1. sphinx/__init__.py +6 -6
  2. sphinx/__main__.py +3 -1
  3. sphinx/addnodes.py +35 -22
  4. sphinx/application.py +40 -38
  5. sphinx/builders/__init__.py +16 -12
  6. sphinx/builders/_epub_base.py +15 -11
  7. sphinx/builders/changes.py +6 -4
  8. sphinx/builders/dirhtml.py +4 -2
  9. sphinx/builders/dummy.py +6 -4
  10. sphinx/builders/epub3.py +16 -8
  11. sphinx/builders/gettext.py +40 -43
  12. sphinx/builders/html/__init__.py +166 -196
  13. sphinx/builders/html/_assets.py +116 -0
  14. sphinx/builders/html/transforms.py +4 -2
  15. sphinx/builders/latex/__init__.py +12 -7
  16. sphinx/builders/latex/theming.py +5 -2
  17. sphinx/builders/latex/transforms.py +6 -3
  18. sphinx/builders/linkcheck.py +21 -13
  19. sphinx/builders/manpage.py +6 -4
  20. sphinx/builders/singlehtml.py +16 -9
  21. sphinx/builders/texinfo.py +11 -6
  22. sphinx/builders/text.py +8 -3
  23. sphinx/builders/xml.py +9 -4
  24. sphinx/cmd/build.py +27 -14
  25. sphinx/cmd/make_mode.py +13 -4
  26. sphinx/cmd/quickstart.py +13 -4
  27. sphinx/config.py +17 -14
  28. sphinx/deprecation.py +4 -2
  29. sphinx/directives/__init__.py +44 -12
  30. sphinx/directives/code.py +5 -4
  31. sphinx/directives/other.py +92 -44
  32. sphinx/directives/patches.py +1 -1
  33. sphinx/domains/__init__.py +11 -8
  34. sphinx/domains/c.py +67 -57
  35. sphinx/domains/changeset.py +3 -2
  36. sphinx/domains/citation.py +2 -1
  37. sphinx/domains/cpp.py +136 -93
  38. sphinx/domains/index.py +9 -5
  39. sphinx/domains/javascript.py +32 -19
  40. sphinx/domains/math.py +5 -3
  41. sphinx/domains/python.py +69 -57
  42. sphinx/domains/rst.py +20 -11
  43. sphinx/domains/std.py +21 -15
  44. sphinx/environment/__init__.py +97 -65
  45. sphinx/environment/adapters/indexentries.py +13 -10
  46. sphinx/environment/adapters/toctree.py +485 -308
  47. sphinx/environment/collectors/__init__.py +3 -4
  48. sphinx/environment/collectors/asset.py +10 -4
  49. sphinx/environment/collectors/dependencies.py +7 -4
  50. sphinx/environment/collectors/metadata.py +7 -5
  51. sphinx/environment/collectors/title.py +5 -3
  52. sphinx/environment/collectors/toctree.py +13 -8
  53. sphinx/errors.py +1 -1
  54. sphinx/events.py +5 -5
  55. sphinx/ext/apidoc.py +49 -27
  56. sphinx/ext/autodoc/__init__.py +179 -161
  57. sphinx/ext/autodoc/directive.py +10 -6
  58. sphinx/ext/autodoc/importer.py +22 -13
  59. sphinx/ext/autodoc/mock.py +4 -1
  60. sphinx/ext/autodoc/preserve_defaults.py +80 -12
  61. sphinx/ext/autodoc/type_comment.py +14 -10
  62. sphinx/ext/autodoc/typehints.py +7 -3
  63. sphinx/ext/autosectionlabel.py +6 -3
  64. sphinx/ext/autosummary/__init__.py +21 -15
  65. sphinx/ext/autosummary/generate.py +176 -126
  66. sphinx/ext/coverage.py +93 -8
  67. sphinx/ext/doctest.py +28 -17
  68. sphinx/ext/duration.py +19 -17
  69. sphinx/ext/extlinks.py +11 -6
  70. sphinx/ext/githubpages.py +8 -7
  71. sphinx/ext/graphviz.py +61 -17
  72. sphinx/ext/ifconfig.py +7 -4
  73. sphinx/ext/imgconverter.py +4 -2
  74. sphinx/ext/imgmath.py +29 -23
  75. sphinx/ext/inheritance_diagram.py +41 -27
  76. sphinx/ext/intersphinx.py +45 -38
  77. sphinx/ext/linkcode.py +8 -5
  78. sphinx/ext/mathjax.py +13 -9
  79. sphinx/ext/napoleon/__init__.py +3 -3
  80. sphinx/ext/napoleon/docstring.py +40 -31
  81. sphinx/ext/todo.py +10 -7
  82. sphinx/ext/viewcode.py +46 -25
  83. sphinx/extension.py +1 -1
  84. sphinx/highlighting.py +20 -12
  85. sphinx/io.py +5 -4
  86. sphinx/jinja2glue.py +24 -19
  87. sphinx/locale/__init__.py +8 -2
  88. sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
  89. sphinx/locale/ar/LC_MESSAGES/sphinx.po +756 -740
  90. sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
  91. sphinx/locale/bg/LC_MESSAGES/sphinx.po +754 -738
  92. sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
  93. sphinx/locale/bn/LC_MESSAGES/sphinx.po +755 -739
  94. sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
  95. sphinx/locale/ca/LC_MESSAGES/sphinx.po +768 -752
  96. sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
  97. sphinx/locale/cak/LC_MESSAGES/sphinx.po +754 -738
  98. sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
  99. sphinx/locale/cs/LC_MESSAGES/sphinx.po +758 -742
  100. sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
  101. sphinx/locale/cy/LC_MESSAGES/sphinx.po +759 -743
  102. sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
  103. sphinx/locale/da/LC_MESSAGES/sphinx.po +760 -744
  104. sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
  105. sphinx/locale/de/LC_MESSAGES/sphinx.po +759 -743
  106. sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
  107. sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +754 -738
  108. sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
  109. sphinx/locale/el/LC_MESSAGES/sphinx.po +763 -747
  110. sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
  111. sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +754 -738
  112. sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
  113. sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +754 -738
  114. sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
  115. sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +768 -752
  116. sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
  117. sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +754 -738
  118. sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
  119. sphinx/locale/eo/LC_MESSAGES/sphinx.po +754 -738
  120. sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
  121. sphinx/locale/es/LC_MESSAGES/sphinx.po +767 -751
  122. sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
  123. sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +754 -738
  124. sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
  125. sphinx/locale/et/LC_MESSAGES/sphinx.po +762 -746
  126. sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
  127. sphinx/locale/eu/LC_MESSAGES/sphinx.po +755 -739
  128. sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
  129. sphinx/locale/fa/LC_MESSAGES/sphinx.po +766 -750
  130. sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
  131. sphinx/locale/fi/LC_MESSAGES/sphinx.po +754 -738
  132. sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
  133. sphinx/locale/fr/LC_MESSAGES/sphinx.po +768 -752
  134. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
  135. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +754 -738
  136. sphinx/locale/gl/LC_MESSAGES/sphinx.js +60 -0
  137. sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
  138. sphinx/locale/gl/LC_MESSAGES/sphinx.po +3695 -0
  139. sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
  140. sphinx/locale/he/LC_MESSAGES/sphinx.po +755 -739
  141. sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
  142. sphinx/locale/hi/LC_MESSAGES/sphinx.po +763 -747
  143. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
  144. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +754 -738
  145. sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
  146. sphinx/locale/hr/LC_MESSAGES/sphinx.po +760 -744
  147. sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
  148. sphinx/locale/hu/LC_MESSAGES/sphinx.po +759 -743
  149. sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
  150. sphinx/locale/id/LC_MESSAGES/sphinx.po +765 -749
  151. sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
  152. sphinx/locale/is/LC_MESSAGES/sphinx.po +760 -744
  153. sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
  154. sphinx/locale/it/LC_MESSAGES/sphinx.po +760 -744
  155. sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
  156. sphinx/locale/ja/LC_MESSAGES/sphinx.po +767 -751
  157. sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
  158. sphinx/locale/ka/LC_MESSAGES/sphinx.po +759 -743
  159. sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
  160. sphinx/locale/ko/LC_MESSAGES/sphinx.po +767 -751
  161. sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
  162. sphinx/locale/lt/LC_MESSAGES/sphinx.po +755 -739
  163. sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
  164. sphinx/locale/lv/LC_MESSAGES/sphinx.po +755 -739
  165. sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
  166. sphinx/locale/mk/LC_MESSAGES/sphinx.po +754 -738
  167. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
  168. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +755 -739
  169. sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
  170. sphinx/locale/ne/LC_MESSAGES/sphinx.po +755 -739
  171. sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
  172. sphinx/locale/nl/LC_MESSAGES/sphinx.po +760 -744
  173. sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
  174. sphinx/locale/pl/LC_MESSAGES/sphinx.po +762 -745
  175. sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
  176. sphinx/locale/pt/LC_MESSAGES/sphinx.po +754 -738
  177. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
  178. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +768 -752
  179. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
  180. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +755 -739
  181. sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
  182. sphinx/locale/ro/LC_MESSAGES/sphinx.po +759 -743
  183. sphinx/locale/ru/LC_MESSAGES/sphinx.mo +0 -0
  184. sphinx/locale/ru/LC_MESSAGES/sphinx.po +760 -744
  185. sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
  186. sphinx/locale/si/LC_MESSAGES/sphinx.po +754 -738
  187. sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
  188. sphinx/locale/sk/LC_MESSAGES/sphinx.po +765 -749
  189. sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
  190. sphinx/locale/sl/LC_MESSAGES/sphinx.po +755 -739
  191. sphinx/locale/sphinx.pot +748 -740
  192. sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
  193. sphinx/locale/sq/LC_MESSAGES/sphinx.po +768 -752
  194. sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
  195. sphinx/locale/sr/LC_MESSAGES/sphinx.po +754 -738
  196. sphinx/locale/sr@latin/LC_MESSAGES/sphinx.mo +0 -0
  197. sphinx/locale/sr@latin/LC_MESSAGES/sphinx.po +754 -738
  198. sphinx/locale/sr_RS/LC_MESSAGES/sphinx.mo +0 -0
  199. sphinx/locale/sr_RS/LC_MESSAGES/sphinx.po +754 -738
  200. sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
  201. sphinx/locale/sv/LC_MESSAGES/sphinx.po +755 -739
  202. sphinx/locale/ta/LC_MESSAGES/sphinx.mo +0 -0
  203. sphinx/locale/ta/LC_MESSAGES/sphinx.po +754 -738
  204. sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
  205. sphinx/locale/te/LC_MESSAGES/sphinx.po +754 -738
  206. sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
  207. sphinx/locale/tr/LC_MESSAGES/sphinx.po +763 -747
  208. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
  209. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +760 -749
  210. sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
  211. sphinx/locale/ur/LC_MESSAGES/sphinx.po +759 -748
  212. sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
  213. sphinx/locale/vi/LC_MESSAGES/sphinx.po +754 -738
  214. sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
  215. sphinx/locale/yue/LC_MESSAGES/sphinx.po +754 -738
  216. sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo +0 -0
  217. sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po +768 -752
  218. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
  219. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +754 -738
  220. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
  221. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +767 -751
  222. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
  223. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +754 -738
  224. sphinx/parsers.py +5 -4
  225. sphinx/project.py +52 -34
  226. sphinx/pycode/__init__.py +2 -1
  227. sphinx/pycode/ast.py +7 -13
  228. sphinx/pycode/parser.py +42 -38
  229. sphinx/registry.py +35 -29
  230. sphinx/roles.py +9 -4
  231. sphinx/search/__init__.py +5 -17
  232. sphinx/search/da.py +1 -1
  233. sphinx/search/de.py +1 -1
  234. sphinx/search/en.py +1 -1
  235. sphinx/search/es.py +1 -1
  236. sphinx/search/fi.py +1 -1
  237. sphinx/search/fr.py +1 -1
  238. sphinx/search/hu.py +1 -1
  239. sphinx/search/it.py +1 -1
  240. sphinx/search/ja.py +1 -1
  241. sphinx/search/nl.py +1 -1
  242. sphinx/search/no.py +1 -1
  243. sphinx/search/pt.py +1 -1
  244. sphinx/search/ro.py +1 -1
  245. sphinx/search/ru.py +1 -1
  246. sphinx/search/sv.py +1 -1
  247. sphinx/search/tr.py +1 -1
  248. sphinx/search/zh.py +1 -1
  249. sphinx/testing/fixtures.py +23 -30
  250. sphinx/testing/path.py +9 -0
  251. sphinx/testing/restructuredtext.py +13 -5
  252. sphinx/testing/util.py +20 -63
  253. sphinx/texinputs/sphinxlatexobjects.sty +15 -15
  254. sphinx/themes/agogo/static/agogo.css_t +10 -4
  255. sphinx/themes/basic/layout.html +1 -1
  256. sphinx/themes/basic/static/basic.css_t +4 -0
  257. sphinx/themes/basic/static/documentation_options.js_t +1 -2
  258. sphinx/themes/basic/static/searchtools.js +17 -9
  259. sphinx/themes/basic/static/sphinx_highlight.js +13 -3
  260. sphinx/themes/bizstyle/static/bizstyle.css_t +4 -0
  261. sphinx/themes/classic/theme.conf +1 -1
  262. sphinx/themes/epub/static/epub.css_t +6 -1
  263. sphinx/themes/haiku/theme.conf +1 -1
  264. sphinx/themes/nature/static/nature.css_t +4 -0
  265. sphinx/themes/nonav/static/nonav.css_t +6 -1
  266. sphinx/themes/pyramid/static/pyramid.css_t +4 -0
  267. sphinx/themes/scrolls/static/scrolls.css_t +4 -0
  268. sphinx/themes/scrolls/theme.conf +1 -1
  269. sphinx/themes/sphinxdoc/static/sphinxdoc.css_t +4 -0
  270. sphinx/theming.py +9 -7
  271. sphinx/transforms/__init__.py +79 -3
  272. sphinx/transforms/compact_bullet_list.py +6 -3
  273. sphinx/transforms/i18n.py +26 -10
  274. sphinx/transforms/post_transforms/__init__.py +21 -8
  275. sphinx/transforms/post_transforms/code.py +6 -3
  276. sphinx/transforms/post_transforms/images.py +13 -9
  277. sphinx/util/__init__.py +21 -92
  278. sphinx/util/cfamily.py +7 -4
  279. sphinx/util/display.py +3 -2
  280. sphinx/util/docfields.py +7 -6
  281. sphinx/util/docstrings.py +1 -1
  282. sphinx/util/docutils.py +41 -31
  283. sphinx/util/fileutil.py +9 -6
  284. sphinx/util/i18n.py +21 -18
  285. sphinx/util/images.py +2 -1
  286. sphinx/util/index_entries.py +27 -0
  287. sphinx/util/inspect.py +83 -67
  288. sphinx/util/inventory.py +4 -2
  289. sphinx/util/logging.py +9 -6
  290. sphinx/util/matching.py +5 -2
  291. sphinx/util/math.py +6 -3
  292. sphinx/util/nodes.py +70 -31
  293. sphinx/util/osutil.py +22 -40
  294. sphinx/util/parallel.py +4 -1
  295. sphinx/util/rst.py +7 -3
  296. sphinx/util/tags.py +11 -4
  297. sphinx/util/template.py +17 -14
  298. sphinx/util/typing.py +61 -20
  299. sphinx/versioning.py +6 -4
  300. sphinx/writers/html.py +1 -1
  301. sphinx/writers/html5.py +32 -24
  302. sphinx/writers/latex.py +67 -53
  303. sphinx/writers/manpage.py +9 -5
  304. sphinx/writers/texinfo.py +11 -9
  305. sphinx/writers/text.py +14 -9
  306. sphinx/writers/xml.py +3 -2
  307. {sphinx-7.1.1.dist-info → sphinx-7.2.0.dist-info}/METADATA +7 -5
  308. sphinx-7.2.0.dist-info/RECORD +568 -0
  309. sphinx/testing/comparer.py +0 -97
  310. sphinx-7.1.1.dist-info/RECORD +0 -564
  311. {sphinx-7.1.1.dist-info → sphinx-7.2.0.dist-info}/LICENSE +0 -0
  312. {sphinx-7.1.1.dist-info → sphinx-7.2.0.dist-info}/WHEEL +0 -0
  313. {sphinx-7.1.1.dist-info → sphinx-7.2.0.dist-info}/entry_points.txt +0 -0
sphinx/domains/c.py CHANGED
@@ -3,19 +3,14 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
- from typing import Any, Callable, Generator, Iterator, TypeVar, Union, cast
6
+ from typing import TYPE_CHECKING, Any, Callable, TypeVar, Union, cast
7
7
 
8
8
  from docutils import nodes
9
- from docutils.nodes import Element, Node, TextElement, system_message
10
9
  from docutils.parsers.rst import directives
11
10
 
12
11
  from sphinx import addnodes
13
- from sphinx.addnodes import pending_xref
14
- from sphinx.application import Sphinx
15
- from sphinx.builders import Builder
16
12
  from sphinx.directives import ObjectDescription
17
13
  from sphinx.domains import Domain, ObjType
18
- from sphinx.environment import BuildEnvironment
19
14
  from sphinx.locale import _, __
20
15
  from sphinx.roles import SphinxRole, XRefRole
21
16
  from sphinx.transforms import SphinxTransform
@@ -45,7 +40,17 @@ from sphinx.util.cfamily import (
45
40
  from sphinx.util.docfields import Field, GroupedField, TypedField
46
41
  from sphinx.util.docutils import SphinxDirective
47
42
  from sphinx.util.nodes import make_refnode
48
- from sphinx.util.typing import OptionSpec
43
+
44
+ if TYPE_CHECKING:
45
+ from collections.abc import Generator, Iterator
46
+
47
+ from docutils.nodes import Element, Node, TextElement, system_message
48
+
49
+ from sphinx.addnodes import pending_xref
50
+ from sphinx.application import Sphinx
51
+ from sphinx.builders import Builder
52
+ from sphinx.environment import BuildEnvironment
53
+ from sphinx.util.typing import OptionSpec
49
54
 
50
55
  logger = logging.getLogger(__name__)
51
56
  T = TypeVar('T')
@@ -72,7 +77,7 @@ _macroKeywords = [
72
77
  'thread_local',
73
78
  ]
74
79
 
75
- # these are ordered by preceedence
80
+ # these are ordered by precedence
76
81
  _expression_bin_ops = [
77
82
  ['||', 'or'],
78
83
  ['&&', 'and'],
@@ -211,11 +216,13 @@ class ASTNestedName(ASTBase):
211
216
  # just print the name part, with template args, not template params
212
217
  if mode == 'noneIsName':
213
218
  if self.rooted:
214
- raise AssertionError("Can this happen?") # TODO
219
+ unreachable = "Can this happen?"
220
+ raise AssertionError(unreachable) # TODO
215
221
  signode += nodes.Text('.')
216
222
  for i in range(len(self.names)):
217
223
  if i != 0:
218
- raise AssertionError("Can this happen?") # TODO
224
+ unreachable = "Can this happen?"
225
+ raise AssertionError(unreachable) # TODO
219
226
  signode += nodes.Text('.')
220
227
  n = self.names[i]
221
228
  n.describe_signature(signode, mode, env, '', symbol)
@@ -1508,7 +1515,7 @@ class ASTDeclaration(ASTBaseBase):
1508
1515
  mainDeclNode += addnodes.desc_sig_keyword(prefix, prefix)
1509
1516
  mainDeclNode += addnodes.desc_sig_space()
1510
1517
  else:
1511
- raise AssertionError()
1518
+ raise AssertionError
1512
1519
  self.declaration.describe_signature(mainDeclNode, mode, env, self.symbol)
1513
1520
  if self.semicolon:
1514
1521
  mainDeclNode += addnodes.desc_sig_punctuation(';', ';')
@@ -1538,18 +1545,18 @@ class Symbol:
1538
1545
  debug_show_tree = False
1539
1546
 
1540
1547
  def __copy__(self):
1541
- raise AssertionError() # shouldn't happen
1548
+ raise AssertionError # shouldn't happen
1542
1549
 
1543
1550
  def __deepcopy__(self, memo):
1544
1551
  if self.parent:
1545
- raise AssertionError() # shouldn't happen
1552
+ raise AssertionError # shouldn't happen
1546
1553
  # the domain base class makes a copy of the initial data, which is fine
1547
1554
  return Symbol(None, None, None, None, None)
1548
1555
 
1549
1556
  @staticmethod
1550
1557
  def debug_print(*args: Any) -> None:
1551
- print(Symbol.debug_indent_string * Symbol.debug_indent, end="")
1552
- print(*args)
1558
+ logger.debug(Symbol.debug_indent_string * Symbol.debug_indent, end="")
1559
+ logger.debug(*args)
1553
1560
 
1554
1561
  def _assert_invariants(self) -> None:
1555
1562
  if not self.parent:
@@ -1562,7 +1569,7 @@ class Symbol:
1562
1569
 
1563
1570
  def __setattr__(self, key: str, value: Any) -> None:
1564
1571
  if key == "children":
1565
- raise AssertionError()
1572
+ raise AssertionError
1566
1573
  return super().__setattr__(key, value)
1567
1574
 
1568
1575
  def __init__(
@@ -1726,7 +1733,7 @@ class Symbol:
1726
1733
  Symbol.debug_print("_find_named_symbols:")
1727
1734
  Symbol.debug_indent += 1
1728
1735
  Symbol.debug_print("self:")
1729
- print(self.to_string(Symbol.debug_indent + 1), end="")
1736
+ logger.debug(self.to_string(Symbol.debug_indent + 1), end="")
1730
1737
  Symbol.debug_print("ident: ", ident)
1731
1738
  Symbol.debug_print("matchSelf: ", matchSelf)
1732
1739
  Symbol.debug_print("recurseInAnon: ", recurseInAnon)
@@ -1736,7 +1743,7 @@ class Symbol:
1736
1743
  s = self
1737
1744
  if Symbol.debug_lookup:
1738
1745
  Symbol.debug_print("searching in self:")
1739
- print(s.to_string(Symbol.debug_indent + 1), end="")
1746
+ logger.debug(s.to_string(Symbol.debug_indent + 1), end="")
1740
1747
  while True:
1741
1748
  if matchSelf:
1742
1749
  yield s
@@ -1750,12 +1757,12 @@ class Symbol:
1750
1757
  s = s.siblingAbove
1751
1758
  if Symbol.debug_lookup:
1752
1759
  Symbol.debug_print("searching in sibling:")
1753
- print(s.to_string(Symbol.debug_indent + 1), end="")
1760
+ logger.debug(s.to_string(Symbol.debug_indent + 1), end="")
1754
1761
 
1755
1762
  for s in candidates():
1756
1763
  if Symbol.debug_lookup:
1757
1764
  Symbol.debug_print("candidate:")
1758
- print(s.to_string(Symbol.debug_indent + 1), end="")
1765
+ logger.debug(s.to_string(Symbol.debug_indent + 1), end="")
1759
1766
  if s.ident == ident:
1760
1767
  if Symbol.debug_lookup:
1761
1768
  Symbol.debug_indent += 1
@@ -1783,7 +1790,7 @@ class Symbol:
1783
1790
  Symbol.debug_print("_symbol_lookup:")
1784
1791
  Symbol.debug_indent += 1
1785
1792
  Symbol.debug_print("self:")
1786
- print(self.to_string(Symbol.debug_indent + 1), end="")
1793
+ logger.debug(self.to_string(Symbol.debug_indent + 1), end="")
1787
1794
  Symbol.debug_print("nestedName: ", nestedName)
1788
1795
  Symbol.debug_print("ancestorLookupType:", ancestorLookupType)
1789
1796
  Symbol.debug_print("matchSelf: ", matchSelf)
@@ -1810,7 +1817,7 @@ class Symbol:
1810
1817
 
1811
1818
  if Symbol.debug_lookup:
1812
1819
  Symbol.debug_print("starting point:")
1813
- print(parentSymbol.to_string(Symbol.debug_indent + 1), end="")
1820
+ logger.debug(parentSymbol.to_string(Symbol.debug_indent + 1), end="")
1814
1821
 
1815
1822
  # and now the actual lookup
1816
1823
  for ident in names[:-1]:
@@ -1830,7 +1837,7 @@ class Symbol:
1830
1837
 
1831
1838
  if Symbol.debug_lookup:
1832
1839
  Symbol.debug_print("handle last name from:")
1833
- print(parentSymbol.to_string(Symbol.debug_indent + 1), end="")
1840
+ logger.debug(parentSymbol.to_string(Symbol.debug_indent + 1), end="")
1834
1841
 
1835
1842
  # handle the last name
1836
1843
  ident = names[-1]
@@ -1840,7 +1847,7 @@ class Symbol:
1840
1847
  recurseInAnon=recurseInAnon,
1841
1848
  searchInSiblings=searchInSiblings)
1842
1849
  if Symbol.debug_lookup:
1843
- symbols = list(symbols) # type: ignore
1850
+ symbols = list(symbols) # type: ignore[assignment]
1844
1851
  Symbol.debug_indent -= 2
1845
1852
  return SymbolLookupResult(symbols, parentSymbol, ident)
1846
1853
 
@@ -2081,14 +2088,14 @@ class Symbol:
2081
2088
  Symbol.debug_print("matchSelf: ", matchSelf)
2082
2089
  Symbol.debug_print("recurseInAnon: ", recurseInAnon)
2083
2090
  Symbol.debug_print("searchInSiblings:", searchInSiblings)
2084
- print(self.to_string(Symbol.debug_indent + 1), end="")
2091
+ logger.debug(self.to_string(Symbol.debug_indent + 1), end="")
2085
2092
  Symbol.debug_indent -= 2
2086
2093
  current = self
2087
2094
  while current is not None:
2088
2095
  if Symbol.debug_lookup:
2089
2096
  Symbol.debug_indent += 2
2090
2097
  Symbol.debug_print("trying:")
2091
- print(current.to_string(Symbol.debug_indent + 1), end="")
2098
+ logger.debug(current.to_string(Symbol.debug_indent + 1), end="")
2092
2099
  Symbol.debug_indent -= 2
2093
2100
  if matchSelf and current.ident == ident:
2094
2101
  return current
@@ -2118,7 +2125,7 @@ class Symbol:
2118
2125
  Symbol.debug_print("name: ", name)
2119
2126
  Symbol.debug_print("id: ", id_)
2120
2127
  if s is not None:
2121
- print(s.to_string(Symbol.debug_indent + 1), end="")
2128
+ logger.debug(s.to_string(Symbol.debug_indent + 1), end="")
2122
2129
  else:
2123
2130
  Symbol.debug_print("not found")
2124
2131
  if s is None:
@@ -3110,7 +3117,7 @@ class DefinitionParser(BaseParser):
3110
3117
  elif objectType == 'type':
3111
3118
  declaration = self._parse_type(named=True, outer='type')
3112
3119
  else:
3113
- raise AssertionError()
3120
+ raise AssertionError
3114
3121
  if objectType != 'macro':
3115
3122
  self.skip_ws()
3116
3123
  semicolon = self.skip_string(';')
@@ -3161,6 +3168,9 @@ class CObject(ObjectDescription[ASTDeclaration]):
3161
3168
  """
3162
3169
 
3163
3170
  option_spec: OptionSpec = {
3171
+ 'no-index-entry': directives.flag,
3172
+ 'no-contents-entry': directives.flag,
3173
+ 'no-typesetting': directives.flag,
3164
3174
  'noindexentry': directives.flag,
3165
3175
  'nocontentsentry': directives.flag,
3166
3176
  'single-line-parameter-list': directives.flag,
@@ -3231,13 +3241,13 @@ class CObject(ObjectDescription[ASTDeclaration]):
3231
3241
 
3232
3242
  self.state.document.note_explicit_target(signode)
3233
3243
 
3234
- if 'noindexentry' not in self.options:
3244
+ if 'no-index-entry' not in self.options:
3235
3245
  indexText = self.get_index_text(name)
3236
3246
  self.indexnode['entries'].append(('single', indexText, newestId, '', None))
3237
3247
 
3238
3248
  @property
3239
3249
  def object_type(self) -> str:
3240
- raise NotImplementedError()
3250
+ raise NotImplementedError
3241
3251
 
3242
3252
  @property
3243
3253
  def display_object_type(self) -> str:
@@ -3538,7 +3548,7 @@ class AliasTransform(SphinxTransform):
3538
3548
  desc['domain'] = 'c'
3539
3549
  # 'desctype' is a backwards compatible attribute
3540
3550
  desc['objtype'] = desc['desctype'] = 'alias'
3541
- desc['noindex'] = True
3551
+ desc['no-index'] = True
3542
3552
  childContainer = desc
3543
3553
 
3544
3554
  for sChild in s.children:
@@ -3577,9 +3587,9 @@ class AliasTransform(SphinxTransform):
3577
3587
  rootSymbol: Symbol = self.env.domains['c'].data['root_symbol']
3578
3588
  parentSymbol: Symbol = rootSymbol.direct_lookup(parentKey)
3579
3589
  if not parentSymbol:
3580
- print("Target: ", sig)
3581
- print("ParentKey: ", parentKey)
3582
- print(rootSymbol.dump(1))
3590
+ logger.debug("Target: %s", sig)
3591
+ logger.debug("ParentKey: %s", parentKey)
3592
+ logger.debug(rootSymbol.dump(1))
3583
3593
  assert parentSymbol # should be there
3584
3594
 
3585
3595
  s = parentSymbol.find_declaration(
@@ -3639,7 +3649,7 @@ class CAliasObject(ObjectDescription):
3639
3649
  node['domain'] = self.domain
3640
3650
  # 'desctype' is a backwards compatible attribute
3641
3651
  node['objtype'] = node['desctype'] = self.objtype
3642
- node['noindex'] = True
3652
+ node['no-index'] = True
3643
3653
 
3644
3654
  self.names: list[str] = []
3645
3655
  aliasOptions = {
@@ -3768,40 +3778,40 @@ class CDomain(Domain):
3768
3778
 
3769
3779
  def clear_doc(self, docname: str) -> None:
3770
3780
  if Symbol.debug_show_tree:
3771
- print("clear_doc:", docname)
3772
- print("\tbefore:")
3773
- print(self.data['root_symbol'].dump(1))
3774
- print("\tbefore end")
3781
+ logger.debug("clear_doc: %s", docname)
3782
+ logger.debug("\tbefore:")
3783
+ logger.debug(self.data['root_symbol'].dump(1))
3784
+ logger.debug("\tbefore end")
3775
3785
 
3776
3786
  rootSymbol = self.data['root_symbol']
3777
3787
  rootSymbol.clear_doc(docname)
3778
3788
 
3779
3789
  if Symbol.debug_show_tree:
3780
- print("\tafter:")
3781
- print(self.data['root_symbol'].dump(1))
3782
- print("\tafter end")
3783
- print("clear_doc end:", docname)
3790
+ logger.debug("\tafter:")
3791
+ logger.debug(self.data['root_symbol'].dump(1))
3792
+ logger.debug("\tafter end")
3793
+ logger.debug("clear_doc end: %s", docname)
3784
3794
 
3785
3795
  def process_doc(self, env: BuildEnvironment, docname: str,
3786
3796
  document: nodes.document) -> None:
3787
3797
  if Symbol.debug_show_tree:
3788
- print("process_doc:", docname)
3789
- print(self.data['root_symbol'].dump(0))
3790
- print("process_doc end:", docname)
3798
+ logger.debug("process_doc: %s", docname)
3799
+ logger.debug(self.data['root_symbol'].dump(0))
3800
+ logger.debug("process_doc end: %s", docname)
3791
3801
 
3792
3802
  def process_field_xref(self, pnode: pending_xref) -> None:
3793
3803
  pnode.attributes.update(self.env.ref_context)
3794
3804
 
3795
3805
  def merge_domaindata(self, docnames: list[str], otherdata: dict) -> None:
3796
3806
  if Symbol.debug_show_tree:
3797
- print("merge_domaindata:")
3798
- print("\tself:")
3799
- print(self.data['root_symbol'].dump(1))
3800
- print("\tself end")
3801
- print("\tother:")
3802
- print(otherdata['root_symbol'].dump(1))
3803
- print("\tother end")
3804
- print("merge_domaindata end")
3807
+ logger.debug("merge_domaindata:")
3808
+ logger.debug("\tself:")
3809
+ logger.debug(self.data['root_symbol'].dump(1))
3810
+ logger.debug("\tself end")
3811
+ logger.debug("\tother:")
3812
+ logger.debug(otherdata['root_symbol'].dump(1))
3813
+ logger.debug("\tother end")
3814
+ logger.debug("merge_domaindata end")
3805
3815
 
3806
3816
  self.data['root_symbol'].merge_with(otherdata['root_symbol'],
3807
3817
  docnames, self.env)
@@ -3827,9 +3837,9 @@ class CDomain(Domain):
3827
3837
  if parentKey:
3828
3838
  parentSymbol: Symbol = rootSymbol.direct_lookup(parentKey)
3829
3839
  if not parentSymbol:
3830
- print("Target: ", target)
3831
- print("ParentKey: ", parentKey)
3832
- print(rootSymbol.dump(1))
3840
+ logger.debug("Target: %s", target)
3841
+ logger.debug("ParentKey: %s", parentKey)
3842
+ logger.debug(rootSymbol.dump(1))
3833
3843
  assert parentSymbol # should be there
3834
3844
  else:
3835
3845
  parentSymbol = rootSymbol
@@ -5,17 +5,18 @@ from __future__ import annotations
5
5
  from typing import TYPE_CHECKING, Any, NamedTuple, cast
6
6
 
7
7
  from docutils import nodes
8
- from docutils.nodes import Node
9
8
 
10
9
  from sphinx import addnodes
11
10
  from sphinx.domains import Domain
12
11
  from sphinx.locale import _
13
12
  from sphinx.util.docutils import SphinxDirective
14
- from sphinx.util.typing import OptionSpec
15
13
 
16
14
  if TYPE_CHECKING:
15
+ from docutils.nodes import Node
16
+
17
17
  from sphinx.application import Sphinx
18
18
  from sphinx.environment import BuildEnvironment
19
+ from sphinx.util.typing import OptionSpec
19
20
 
20
21
 
21
22
  versionlabels = {
@@ -5,7 +5,6 @@ from __future__ import annotations
5
5
  from typing import TYPE_CHECKING, Any, cast
6
6
 
7
7
  from docutils import nodes
8
- from docutils.nodes import Element
9
8
 
10
9
  from sphinx.addnodes import pending_xref
11
10
  from sphinx.domains import Domain
@@ -15,6 +14,8 @@ from sphinx.util import logging
15
14
  from sphinx.util.nodes import copy_source_info, make_refnode
16
15
 
17
16
  if TYPE_CHECKING:
17
+ from docutils.nodes import Element
18
+
18
19
  from sphinx.application import Sphinx
19
20
  from sphinx.builders import Builder
20
21
  from sphinx.environment import BuildEnvironment