Sphinx 8.0.1__py3-none-any.whl → 8.1.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 (424) hide show
  1. sphinx/__init__.py +6 -3
  2. sphinx/_cli/__init__.py +40 -20
  3. sphinx/_cli/util/colour.py +5 -4
  4. sphinx/_cli/util/errors.py +28 -11
  5. sphinx/application.py +361 -38
  6. sphinx/builders/__init__.py +229 -83
  7. sphinx/builders/_epub_base.py +118 -71
  8. sphinx/builders/changes.py +39 -21
  9. sphinx/builders/dirhtml.py +4 -4
  10. sphinx/builders/dummy.py +2 -5
  11. sphinx/builders/epub3.py +43 -22
  12. sphinx/builders/gettext.py +43 -25
  13. sphinx/builders/html/__init__.py +284 -218
  14. sphinx/builders/html/_assets.py +62 -26
  15. sphinx/builders/html/_build_info.py +76 -0
  16. sphinx/builders/html/transforms.py +11 -9
  17. sphinx/builders/latex/__init__.py +139 -81
  18. sphinx/builders/latex/constants.py +7 -7
  19. sphinx/builders/latex/nodes.py +3 -2
  20. sphinx/builders/latex/theming.py +7 -5
  21. sphinx/builders/latex/transforms.py +27 -19
  22. sphinx/builders/linkcheck.py +146 -72
  23. sphinx/builders/manpage.py +30 -13
  24. sphinx/builders/singlehtml.py +22 -14
  25. sphinx/builders/texinfo.py +67 -37
  26. sphinx/builders/text.py +5 -5
  27. sphinx/builders/xml.py +6 -9
  28. sphinx/cmd/build.py +282 -103
  29. sphinx/cmd/make_mode.py +106 -63
  30. sphinx/cmd/quickstart.py +341 -145
  31. sphinx/config.py +45 -12
  32. sphinx/deprecation.py +8 -2
  33. sphinx/directives/__init__.py +28 -19
  34. sphinx/directives/code.py +86 -56
  35. sphinx/directives/other.py +50 -36
  36. sphinx/directives/patches.py +29 -19
  37. sphinx/domains/__init__.py +20 -120
  38. sphinx/domains/_domains_container.py +281 -0
  39. sphinx/domains/_index.py +110 -0
  40. sphinx/domains/c/__init__.py +3 -3
  41. sphinx/domains/c/_parser.py +10 -6
  42. sphinx/domains/changeset.py +5 -3
  43. sphinx/domains/citation.py +5 -3
  44. sphinx/domains/cpp/__init__.py +9 -11
  45. sphinx/domains/cpp/_parser.py +8 -7
  46. sphinx/domains/index.py +3 -3
  47. sphinx/domains/javascript.py +12 -7
  48. sphinx/domains/math.py +2 -2
  49. sphinx/domains/python/__init__.py +10 -5
  50. sphinx/domains/python/_object.py +1 -1
  51. sphinx/domains/rst.py +5 -5
  52. sphinx/domains/std/__init__.py +16 -11
  53. sphinx/environment/__init__.py +206 -146
  54. sphinx/environment/adapters/asset.py +3 -2
  55. sphinx/environment/adapters/indexentries.py +74 -33
  56. sphinx/environment/adapters/toctree.py +100 -43
  57. sphinx/environment/collectors/__init__.py +19 -8
  58. sphinx/environment/collectors/asset.py +47 -15
  59. sphinx/environment/collectors/dependencies.py +8 -4
  60. sphinx/environment/collectors/metadata.py +7 -2
  61. sphinx/environment/collectors/title.py +7 -2
  62. sphinx/environment/collectors/toctree.py +54 -22
  63. sphinx/errors.py +4 -1
  64. sphinx/events.py +314 -7
  65. sphinx/ext/apidoc.py +42 -18
  66. sphinx/ext/autodoc/__init__.py +52 -24
  67. sphinx/ext/autodoc/importer.py +6 -9
  68. sphinx/ext/autosectionlabel.py +1 -2
  69. sphinx/ext/autosummary/__init__.py +3 -1
  70. sphinx/ext/autosummary/generate.py +28 -14
  71. sphinx/ext/coverage.py +7 -7
  72. sphinx/ext/doctest.py +4 -8
  73. sphinx/ext/duration.py +6 -5
  74. sphinx/ext/inheritance_diagram.py +1 -1
  75. sphinx/ext/intersphinx/_cli.py +6 -4
  76. sphinx/ext/intersphinx/_load.py +77 -32
  77. sphinx/ext/intersphinx/_resolve.py +173 -79
  78. sphinx/ext/intersphinx/_shared.py +7 -5
  79. sphinx/ext/linkcode.py +7 -1
  80. sphinx/ext/mathjax.py +1 -2
  81. sphinx/ext/napoleon/__init__.py +37 -24
  82. sphinx/ext/napoleon/docstring.py +202 -134
  83. sphinx/ext/todo.py +5 -3
  84. sphinx/highlighting.py +10 -3
  85. sphinx/io.py +1 -1
  86. sphinx/jinja2glue.py +27 -6
  87. sphinx/locale/__init__.py +6 -2
  88. sphinx/locale/ar/LC_MESSAGES/sphinx.js +8 -1
  89. sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
  90. sphinx/locale/ar/LC_MESSAGES/sphinx.po +2246 -2288
  91. sphinx/locale/bg/LC_MESSAGES/sphinx.js +4 -1
  92. sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
  93. sphinx/locale/bg/LC_MESSAGES/sphinx.po +2113 -2159
  94. sphinx/locale/bn/LC_MESSAGES/sphinx.js +4 -1
  95. sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
  96. sphinx/locale/bn/LC_MESSAGES/sphinx.po +2349 -2395
  97. sphinx/locale/ca/LC_MESSAGES/sphinx.js +4 -1
  98. sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
  99. sphinx/locale/ca/LC_MESSAGES/sphinx.po +2846 -2892
  100. sphinx/locale/cak/LC_MESSAGES/sphinx.js +4 -1
  101. sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
  102. sphinx/locale/cak/LC_MESSAGES/sphinx.po +2213 -2259
  103. sphinx/locale/cs/LC_MESSAGES/sphinx.js +6 -1
  104. sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
  105. sphinx/locale/cs/LC_MESSAGES/sphinx.po +2225 -2269
  106. sphinx/locale/cy/LC_MESSAGES/sphinx.js +6 -1
  107. sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
  108. sphinx/locale/cy/LC_MESSAGES/sphinx.po +2403 -2447
  109. sphinx/locale/da/LC_MESSAGES/sphinx.js +4 -1
  110. sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
  111. sphinx/locale/da/LC_MESSAGES/sphinx.po +2214 -2260
  112. sphinx/locale/de/LC_MESSAGES/sphinx.js +4 -1
  113. sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
  114. sphinx/locale/de/LC_MESSAGES/sphinx.po +2230 -2276
  115. sphinx/locale/de_DE/LC_MESSAGES/sphinx.js +4 -1
  116. sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
  117. sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +2113 -2159
  118. sphinx/locale/el/LC_MESSAGES/sphinx.js +4 -1
  119. sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
  120. sphinx/locale/el/LC_MESSAGES/sphinx.po +2619 -2665
  121. sphinx/locale/en_DE/LC_MESSAGES/sphinx.js +4 -1
  122. sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
  123. sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +2113 -2159
  124. sphinx/locale/en_FR/LC_MESSAGES/sphinx.js +4 -1
  125. sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
  126. sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +2113 -2159
  127. sphinx/locale/en_GB/LC_MESSAGES/sphinx.js +4 -1
  128. sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
  129. sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +2519 -2565
  130. sphinx/locale/en_HK/LC_MESSAGES/sphinx.js +4 -1
  131. sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
  132. sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +2113 -2159
  133. sphinx/locale/eo/LC_MESSAGES/sphinx.js +4 -1
  134. sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
  135. sphinx/locale/eo/LC_MESSAGES/sphinx.po +2232 -2278
  136. sphinx/locale/es/LC_MESSAGES/sphinx.js +5 -1
  137. sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
  138. sphinx/locale/es/LC_MESSAGES/sphinx.po +2516 -2561
  139. sphinx/locale/es_CO/LC_MESSAGES/sphinx.js +5 -1
  140. sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
  141. sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +2114 -2159
  142. sphinx/locale/et/LC_MESSAGES/sphinx.js +4 -1
  143. sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
  144. sphinx/locale/et/LC_MESSAGES/sphinx.po +2317 -2363
  145. sphinx/locale/eu/LC_MESSAGES/sphinx.js +4 -1
  146. sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
  147. sphinx/locale/eu/LC_MESSAGES/sphinx.po +2218 -2264
  148. sphinx/locale/fa/LC_MESSAGES/sphinx.js +4 -1
  149. sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
  150. sphinx/locale/fa/LC_MESSAGES/sphinx.po +2505 -2551
  151. sphinx/locale/fi/LC_MESSAGES/sphinx.js +4 -1
  152. sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
  153. sphinx/locale/fi/LC_MESSAGES/sphinx.po +2303 -2349
  154. sphinx/locale/fr/LC_MESSAGES/sphinx.js +6 -2
  155. sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
  156. sphinx/locale/fr/LC_MESSAGES/sphinx.po +2863 -2908
  157. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.js +5 -1
  158. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
  159. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +2114 -2159
  160. sphinx/locale/gl/LC_MESSAGES/sphinx.js +4 -1
  161. sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
  162. sphinx/locale/gl/LC_MESSAGES/sphinx.po +2571 -2617
  163. sphinx/locale/he/LC_MESSAGES/sphinx.js +5 -1
  164. sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
  165. sphinx/locale/he/LC_MESSAGES/sphinx.po +2307 -2352
  166. sphinx/locale/hi/LC_MESSAGES/sphinx.js +4 -1
  167. sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
  168. sphinx/locale/hi/LC_MESSAGES/sphinx.po +2580 -2626
  169. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js +4 -1
  170. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
  171. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +2113 -2159
  172. sphinx/locale/hr/LC_MESSAGES/sphinx.js +5 -1
  173. sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
  174. sphinx/locale/hr/LC_MESSAGES/sphinx.po +2238 -2283
  175. sphinx/locale/hu/LC_MESSAGES/sphinx.js +4 -1
  176. sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
  177. sphinx/locale/hu/LC_MESSAGES/sphinx.po +2228 -2274
  178. sphinx/locale/id/LC_MESSAGES/sphinx.js +3 -1
  179. sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
  180. sphinx/locale/id/LC_MESSAGES/sphinx.po +2787 -2834
  181. sphinx/locale/is/LC_MESSAGES/sphinx.js +4 -1
  182. sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
  183. sphinx/locale/is/LC_MESSAGES/sphinx.po +2224 -2270
  184. sphinx/locale/it/LC_MESSAGES/sphinx.js +5 -1
  185. sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
  186. sphinx/locale/it/LC_MESSAGES/sphinx.po +2231 -2276
  187. sphinx/locale/ja/LC_MESSAGES/sphinx.js +3 -1
  188. sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
  189. sphinx/locale/ja/LC_MESSAGES/sphinx.po +2507 -2554
  190. sphinx/locale/ka/LC_MESSAGES/sphinx.js +4 -1
  191. sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
  192. sphinx/locale/ka/LC_MESSAGES/sphinx.po +2428 -2474
  193. sphinx/locale/ko/LC_MESSAGES/sphinx.js +3 -1
  194. sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
  195. sphinx/locale/ko/LC_MESSAGES/sphinx.po +2516 -2563
  196. sphinx/locale/lt/LC_MESSAGES/sphinx.js +6 -1
  197. sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
  198. sphinx/locale/lt/LC_MESSAGES/sphinx.po +2425 -2469
  199. sphinx/locale/lv/LC_MESSAGES/sphinx.js +5 -1
  200. sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
  201. sphinx/locale/lv/LC_MESSAGES/sphinx.po +2362 -2407
  202. sphinx/locale/mk/LC_MESSAGES/sphinx.js +4 -1
  203. sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
  204. sphinx/locale/mk/LC_MESSAGES/sphinx.po +2121 -2167
  205. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js +4 -1
  206. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
  207. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +2220 -2266
  208. sphinx/locale/ne/LC_MESSAGES/sphinx.js +4 -1
  209. sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
  210. sphinx/locale/ne/LC_MESSAGES/sphinx.po +2221 -2267
  211. sphinx/locale/nl/LC_MESSAGES/sphinx.js +4 -1
  212. sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
  213. sphinx/locale/nl/LC_MESSAGES/sphinx.po +2240 -2286
  214. sphinx/locale/pl/LC_MESSAGES/sphinx.js +6 -1
  215. sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
  216. sphinx/locale/pl/LC_MESSAGES/sphinx.po +2319 -2363
  217. sphinx/locale/pt/LC_MESSAGES/sphinx.js +5 -1
  218. sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
  219. sphinx/locale/pt/LC_MESSAGES/sphinx.po +2114 -2159
  220. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js +5 -1
  221. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
  222. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +2854 -2899
  223. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js +5 -1
  224. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
  225. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +2224 -2269
  226. sphinx/locale/ro/LC_MESSAGES/sphinx.js +5 -1
  227. sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
  228. sphinx/locale/ro/LC_MESSAGES/sphinx.po +2226 -2271
  229. sphinx/locale/ru/LC_MESSAGES/sphinx.js +8 -3
  230. sphinx/locale/ru/LC_MESSAGES/sphinx.mo +0 -0
  231. sphinx/locale/ru/LC_MESSAGES/sphinx.po +2841 -2885
  232. sphinx/locale/si/LC_MESSAGES/sphinx.js +4 -1
  233. sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
  234. sphinx/locale/si/LC_MESSAGES/sphinx.po +2294 -2340
  235. sphinx/locale/sk/LC_MESSAGES/sphinx.js +6 -1
  236. sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
  237. sphinx/locale/sk/LC_MESSAGES/sphinx.po +2497 -2541
  238. sphinx/locale/sl/LC_MESSAGES/sphinx.js +6 -1
  239. sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
  240. sphinx/locale/sl/LC_MESSAGES/sphinx.po +2331 -2375
  241. sphinx/locale/sphinx.pot +2121 -2167
  242. sphinx/locale/sq/LC_MESSAGES/sphinx.js +4 -1
  243. sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
  244. sphinx/locale/sq/LC_MESSAGES/sphinx.po +2855 -2901
  245. sphinx/locale/sr/LC_MESSAGES/sphinx.js +5 -1
  246. sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
  247. sphinx/locale/sr/LC_MESSAGES/sphinx.po +2203 -2248
  248. sphinx/locale/sr@latin/LC_MESSAGES/sphinx.mo +0 -0
  249. sphinx/locale/sr_RS/LC_MESSAGES/sphinx.mo +0 -0
  250. sphinx/locale/sv/LC_MESSAGES/sphinx.js +4 -1
  251. sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
  252. sphinx/locale/sv/LC_MESSAGES/sphinx.po +2423 -2469
  253. sphinx/locale/te/LC_MESSAGES/sphinx.js +4 -1
  254. sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
  255. sphinx/locale/te/LC_MESSAGES/sphinx.po +2113 -2159
  256. sphinx/locale/tr/LC_MESSAGES/sphinx.js +4 -1
  257. sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
  258. sphinx/locale/tr/LC_MESSAGES/sphinx.po +2443 -2489
  259. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js +6 -1
  260. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
  261. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +2329 -2373
  262. sphinx/locale/ur/LC_MESSAGES/sphinx.js +4 -1
  263. sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
  264. sphinx/locale/ur/LC_MESSAGES/sphinx.po +2113 -2159
  265. sphinx/locale/vi/LC_MESSAGES/sphinx.js +3 -1
  266. sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
  267. sphinx/locale/vi/LC_MESSAGES/sphinx.po +2199 -2246
  268. sphinx/locale/yue/LC_MESSAGES/sphinx.js +3 -1
  269. sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
  270. sphinx/locale/yue/LC_MESSAGES/sphinx.po +2112 -2159
  271. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.js +3 -1
  272. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
  273. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +2112 -2159
  274. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js +3 -1
  275. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
  276. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +2845 -2892
  277. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.js +3 -1
  278. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
  279. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +2112 -2159
  280. sphinx/parsers.py +3 -1
  281. sphinx/project.py +6 -2
  282. sphinx/pycode/__init__.py +11 -4
  283. sphinx/pycode/ast.py +58 -58
  284. sphinx/pycode/parser.py +49 -28
  285. sphinx/pygments_styles.py +49 -49
  286. sphinx/registry.py +8 -3
  287. sphinx/roles.py +133 -13
  288. sphinx/search/__init__.py +146 -87
  289. sphinx/search/da.py +2 -4
  290. sphinx/search/de.py +2 -4
  291. sphinx/search/en.py +4 -4
  292. sphinx/search/es.py +2 -4
  293. sphinx/search/fi.py +2 -4
  294. sphinx/search/fr.py +2 -4
  295. sphinx/search/hu.py +2 -4
  296. sphinx/search/it.py +2 -4
  297. sphinx/search/ja.py +55 -32
  298. sphinx/search/nl.py +2 -4
  299. sphinx/search/no.py +2 -4
  300. sphinx/search/pt.py +2 -4
  301. sphinx/search/ro.py +0 -2
  302. sphinx/search/ru.py +2 -4
  303. sphinx/search/sv.py +2 -4
  304. sphinx/search/tr.py +0 -2
  305. sphinx/search/zh.py +18 -13
  306. sphinx/templates/graphviz/graphviz.css +0 -7
  307. sphinx/testing/fixtures.py +6 -5
  308. sphinx/testing/path.py +7 -5
  309. sphinx/testing/util.py +63 -29
  310. sphinx/texinputs/sphinx.sty +107 -39
  311. sphinx/texinputs/sphinxlatexadmonitions.sty +51 -35
  312. sphinx/texinputs/sphinxlatexcontainers.sty +1 -1
  313. sphinx/texinputs/sphinxlatexgraphics.sty +3 -2
  314. sphinx/texinputs/sphinxlatexindbibtoc.sty +1 -1
  315. sphinx/texinputs/sphinxlatexlists.sty +1 -1
  316. sphinx/texinputs/sphinxlatexliterals.sty +4 -1
  317. sphinx/texinputs/sphinxlatexnumfig.sty +22 -9
  318. sphinx/texinputs/sphinxlatexobjects.sty +1 -1
  319. sphinx/texinputs/sphinxlatexshadowbox.sty +72 -10
  320. sphinx/texinputs/sphinxlatexstyleheadings.sty +7 -2
  321. sphinx/texinputs/sphinxlatexstylepage.sty +2 -8
  322. sphinx/texinputs/sphinxlatexstyletext.sty +2 -4
  323. sphinx/texinputs/sphinxlatextables.sty +1 -1
  324. sphinx/texinputs/sphinxoptionsgeometry.sty +1 -1
  325. sphinx/texinputs/sphinxoptionshyperref.sty +1 -1
  326. sphinx/themes/agogo/layout.html +1 -10
  327. sphinx/themes/agogo/static/agogo.css.jinja +0 -7
  328. sphinx/themes/basic/defindex.html +1 -8
  329. sphinx/themes/basic/domainindex.html +1 -9
  330. sphinx/themes/basic/genindex-single.html +1 -9
  331. sphinx/themes/basic/genindex-split.html +1 -9
  332. sphinx/themes/basic/genindex.html +1 -9
  333. sphinx/themes/basic/globaltoc.html +1 -9
  334. sphinx/themes/basic/layout.html +1 -9
  335. sphinx/themes/basic/localtoc.html +1 -9
  336. sphinx/themes/basic/page.html +1 -9
  337. sphinx/themes/basic/relations.html +1 -9
  338. sphinx/themes/basic/search.html +1 -9
  339. sphinx/themes/basic/searchbox.html +1 -9
  340. sphinx/themes/basic/searchfield.html +4 -10
  341. sphinx/themes/basic/sourcelink.html +1 -9
  342. sphinx/themes/basic/static/basic.css.jinja +2 -13
  343. sphinx/themes/basic/static/doctools.js +0 -7
  344. sphinx/themes/basic/static/language_data.js.jinja +0 -7
  345. sphinx/themes/basic/static/searchtools.js +25 -13
  346. sphinx/themes/bizstyle/layout.html +1 -9
  347. sphinx/themes/bizstyle/static/bizstyle.css.jinja +0 -7
  348. sphinx/themes/bizstyle/static/bizstyle.js.jinja +5 -11
  349. sphinx/themes/classic/layout.html +1 -9
  350. sphinx/themes/classic/static/classic.css.jinja +0 -7
  351. sphinx/themes/classic/static/sidebar.js.jinja +0 -6
  352. sphinx/themes/epub/epub-cover.html +1 -9
  353. sphinx/themes/epub/layout.html +1 -9
  354. sphinx/themes/epub/static/epub.css.jinja +0 -7
  355. sphinx/themes/haiku/layout.html +1 -9
  356. sphinx/themes/haiku/static/haiku.css.jinja +0 -6
  357. sphinx/themes/nature/static/nature.css.jinja +0 -7
  358. sphinx/themes/nonav/layout.html +1 -9
  359. sphinx/themes/nonav/static/nonav.css.jinja +0 -7
  360. sphinx/themes/pyramid/static/epub.css.jinja +0 -7
  361. sphinx/themes/pyramid/static/pyramid.css.jinja +0 -7
  362. sphinx/themes/scrolls/layout.html +1 -10
  363. sphinx/themes/scrolls/static/scrolls.css.jinja +0 -7
  364. sphinx/themes/sphinxdoc/static/sphinxdoc.css.jinja +2 -7
  365. sphinx/themes/traditional/static/traditional.css.jinja +0 -7
  366. sphinx/theming.py +18 -6
  367. sphinx/transforms/__init__.py +56 -35
  368. sphinx/transforms/compact_bullet_list.py +3 -2
  369. sphinx/transforms/i18n.py +132 -50
  370. sphinx/transforms/post_transforms/__init__.py +94 -43
  371. sphinx/transforms/post_transforms/code.py +7 -6
  372. sphinx/transforms/post_transforms/images.py +71 -54
  373. sphinx/transforms/references.py +1 -2
  374. sphinx/util/__init__.py +23 -194
  375. sphinx/util/_files.py +80 -0
  376. sphinx/util/_importer.py +27 -0
  377. sphinx/util/_io.py +1 -2
  378. sphinx/util/_lines.py +26 -0
  379. sphinx/util/_pathlib.py +5 -2
  380. sphinx/util/_serialise.py +53 -0
  381. sphinx/util/_timestamps.py +2 -1
  382. sphinx/util/_uri.py +16 -0
  383. sphinx/util/cfamily.py +48 -25
  384. sphinx/util/console.py +1 -0
  385. sphinx/util/display.py +1 -1
  386. sphinx/util/docfields.py +125 -45
  387. sphinx/util/docstrings.py +1 -1
  388. sphinx/util/docutils.py +118 -44
  389. sphinx/util/exceptions.py +11 -5
  390. sphinx/util/fileutil.py +53 -32
  391. sphinx/util/http_date.py +9 -7
  392. sphinx/util/i18n.py +49 -16
  393. sphinx/util/images.py +7 -6
  394. sphinx/util/inspect.py +29 -12
  395. sphinx/util/inventory.py +47 -29
  396. sphinx/util/logging.py +58 -85
  397. sphinx/util/matching.py +3 -3
  398. sphinx/util/math.py +1 -1
  399. sphinx/util/nodes.py +176 -108
  400. sphinx/util/osutil.py +13 -10
  401. sphinx/util/parallel.py +5 -4
  402. sphinx/util/parsing.py +5 -3
  403. sphinx/util/png.py +3 -3
  404. sphinx/util/requests.py +8 -4
  405. sphinx/util/rst.py +5 -3
  406. sphinx/util/tags.py +5 -2
  407. sphinx/util/template.py +26 -11
  408. sphinx/util/texescape.py +2 -2
  409. sphinx/util/typing.py +89 -38
  410. sphinx/versioning.py +3 -1
  411. sphinx/writers/html.py +22 -7
  412. sphinx/writers/html5.py +113 -64
  413. sphinx/writers/latex.py +408 -221
  414. sphinx/writers/manpage.py +25 -15
  415. sphinx/writers/texinfo.py +94 -82
  416. sphinx/writers/text.py +87 -53
  417. sphinx/writers/xml.py +5 -4
  418. sphinx-8.1.0.dist-info/LICENSE.rst +31 -0
  419. {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/METADATA +13 -11
  420. sphinx-8.1.0.dist-info/RECORD +598 -0
  421. sphinx-8.0.1.dist-info/LICENSE.rst +0 -67
  422. sphinx-8.0.1.dist-info/RECORD +0 -590
  423. {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/WHEEL +0 -0
  424. {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/entry_points.txt +0 -0
@@ -78,17 +78,19 @@ class TocTree(SphinxDirective):
78
78
  subnode['numbered'] = self.options.get('numbered', 0)
79
79
  subnode['titlesonly'] = 'titlesonly' in self.options
80
80
  self.set_source_info(subnode)
81
+ self.parse_content(subnode)
82
+
81
83
  wrappernode = nodes.compound(
82
84
  classes=['toctree-wrapper', *self.options.get('class', ())],
83
85
  )
84
86
  wrappernode.append(subnode)
85
87
  self.add_name(wrappernode)
88
+ return [wrappernode]
86
89
 
87
- ret = self.parse_content(subnode)
88
- ret.append(wrappernode)
89
- return ret
90
-
91
- def parse_content(self, toctree: addnodes.toctree) -> list[Node]:
90
+ def parse_content(self, toctree: addnodes.toctree) -> None:
91
+ """
92
+ Populate ``toctree['entries']`` and ``toctree['includefiles']`` from content.
93
+ """
92
94
  generated_docnames = frozenset(StandardDomain._virtual_doc_names)
93
95
  suffixes = self.config.source_suffix
94
96
  current_docname = self.env.docname
@@ -99,7 +101,6 @@ class TocTree(SphinxDirective):
99
101
  all_docnames.remove(current_docname) # remove current document
100
102
  frozen_all_docnames = frozenset(all_docnames)
101
103
 
102
- ret: list[Node] = []
103
104
  excluded = Matcher(self.config.exclude_patterns)
104
105
  for entry in self.content:
105
106
  if not entry:
@@ -110,17 +111,23 @@ class TocTree(SphinxDirective):
110
111
  url_match = url_re.match(entry) is not None
111
112
  if glob and glob_re.match(entry) and not explicit and not url_match:
112
113
  pat_name = docname_join(current_docname, entry)
113
- doc_names = sorted(patfilter(all_docnames, pat_name))
114
+ doc_names = sorted(
115
+ docname
116
+ for docname in patfilter(all_docnames, pat_name)
117
+ # don't include generated documents in globs
118
+ if docname not in generated_docnames
119
+ )
120
+ if not doc_names:
121
+ logger.warning(
122
+ __("toctree glob pattern %r didn't match any documents"),
123
+ entry,
124
+ location=toctree,
125
+ )
126
+
114
127
  for docname in doc_names:
115
- if docname in generated_docnames:
116
- # don't include generated documents in globs
117
- continue
118
128
  all_docnames.remove(docname) # don't include it again
119
129
  toctree['entries'].append((None, docname))
120
130
  toctree['includefiles'].append(docname)
121
- if not doc_names:
122
- logger.warning(__("toctree glob pattern %r didn't match any documents"),
123
- entry, location=toctree)
124
131
  continue
125
132
 
126
133
  if explicit:
@@ -145,22 +152,26 @@ class TocTree(SphinxDirective):
145
152
 
146
153
  if docname not in frozen_all_docnames:
147
154
  if excluded(str(self.env.doc2path(docname, False))):
148
- message = __('toctree contains reference to excluded document %r')
155
+ msg = __('toctree contains reference to excluded document %r')
149
156
  subtype = 'excluded'
150
157
  else:
151
- message = __('toctree contains reference to nonexisting document %r')
158
+ msg = __('toctree contains reference to nonexisting document %r')
152
159
  subtype = 'not_readable'
153
160
 
154
- logger.warning(message, docname, type='toc', subtype=subtype,
155
- location=toctree)
161
+ logger.warning(
162
+ msg, docname, type='toc', subtype=subtype, location=toctree
163
+ )
156
164
  self.env.note_reread()
157
165
  continue
158
166
 
159
167
  if docname in all_docnames:
160
168
  all_docnames.remove(docname)
161
169
  else:
162
- logger.warning(__('duplicated entry found in toctree: %s'), docname,
163
- location=toctree)
170
+ logger.warning(
171
+ __('duplicated entry found in toctree: %s'),
172
+ docname,
173
+ location=toctree,
174
+ )
164
175
 
165
176
  toctree['entries'].append((title, docname))
166
177
  toctree['includefiles'].append(docname)
@@ -170,8 +181,6 @@ class TocTree(SphinxDirective):
170
181
  toctree['entries'] = list(reversed(toctree['entries']))
171
182
  toctree['includefiles'] = list(reversed(toctree['includefiles']))
172
183
 
173
- return ret
174
-
175
184
 
176
185
  class Author(SphinxDirective):
177
186
  """
@@ -208,7 +217,7 @@ class Author(SphinxDirective):
208
217
  return ret
209
218
 
210
219
 
211
- class SeeAlso(BaseAdmonition): # type: ignore[misc]
220
+ class SeeAlso(BaseAdmonition):
212
221
  """
213
222
  An admonition mentioning things to look at as reference.
214
223
  """
@@ -271,8 +280,10 @@ class Acks(SphinxDirective):
271
280
  def run(self) -> list[Node]:
272
281
  children = self.parse_content_to_nodes()
273
282
  if len(children) != 1 or not isinstance(children[0], nodes.bullet_list):
274
- logger.warning(__('.. acks content is not a list'),
275
- location=(self.env.docname, self.lineno))
283
+ logger.warning(
284
+ __('.. acks content is not a list'),
285
+ location=(self.env.docname, self.lineno),
286
+ )
276
287
  return []
277
288
  return [addnodes.acks('', *children)]
278
289
 
@@ -294,8 +305,10 @@ class HList(SphinxDirective):
294
305
  ncolumns = self.options.get('columns', 2)
295
306
  children = self.parse_content_to_nodes()
296
307
  if len(children) != 1 or not isinstance(children[0], nodes.bullet_list):
297
- logger.warning(__('.. hlist content is not a list'),
298
- location=(self.env.docname, self.lineno))
308
+ logger.warning(
309
+ __('.. hlist content is not a list'),
310
+ location=(self.env.docname, self.lineno),
311
+ )
299
312
  return []
300
313
  fulllist = children[0]
301
314
  # create a hlist node where the items are distributed
@@ -337,13 +350,16 @@ class Only(SphinxDirective):
337
350
  memo.title_styles = []
338
351
  memo.section_level = 0
339
352
  try:
340
- self.state.nested_parse(self.content, self.content_offset,
341
- node, match_titles=True)
353
+ self.state.nested_parse(
354
+ self.content, self.content_offset, node, match_titles=True
355
+ )
342
356
  title_styles = memo.title_styles
343
- if (not surrounding_title_styles or
344
- not title_styles or
345
- title_styles[0] not in surrounding_title_styles or
346
- not self.state.parent):
357
+ if (
358
+ not surrounding_title_styles
359
+ or not title_styles
360
+ or title_styles[0] not in surrounding_title_styles
361
+ or not self.state.parent
362
+ ):
347
363
  # No nested sections so no special handling needed.
348
364
  return [node]
349
365
  # Calculate the depths of the current and nested sections.
@@ -378,7 +394,6 @@ class Include(BaseInclude, SphinxDirective):
378
394
  """
379
395
 
380
396
  def run(self) -> Sequence[Node]:
381
-
382
397
  # To properly emit "include-read" events from included RST text,
383
398
  # we must patch the ``StateMachine.insert_input()`` method.
384
399
  # In the future, docutils will hopefully offer a way for Sphinx
@@ -390,7 +405,7 @@ class Include(BaseInclude, SphinxDirective):
390
405
  # In docutils 0.18 and later, there are two lines at the end
391
406
  # that act as markers.
392
407
  # We must preserve them and leave them out of the include-read event:
393
- text = "\n".join(include_lines[:-2])
408
+ text = '\n'.join(include_lines[:-2])
394
409
 
395
410
  path = Path(relpath(abspath(source), start=self.env.srcdir))
396
411
  docname = self.env.docname
@@ -413,8 +428,7 @@ class Include(BaseInclude, SphinxDirective):
413
428
  # See https://github.com/python/mypy/issues/2427 for details on the mypy issue
414
429
  self.state_machine.insert_input = _insert_input
415
430
 
416
- if self.arguments[0].startswith('<') and \
417
- self.arguments[0].endswith('>'):
431
+ if self.arguments[0].startswith('<') and self.arguments[0].endswith('>'):
418
432
  # docutils "standard" includes, do not do path processing
419
433
  return super().run()
420
434
  rel_filename, filename = self.env.relfn2path(self.arguments[0])
@@ -12,7 +12,6 @@ from docutils.parsers.rst.directives.misc import Meta
12
12
  from docutils.parsers.rst.roles import set_classes
13
13
 
14
14
  from sphinx.directives import optional_int
15
- from sphinx.domains.math import MathDomain
16
15
  from sphinx.locale import __
17
16
  from sphinx.util import logging
18
17
  from sphinx.util.docutils import SphinxDirective
@@ -63,10 +62,14 @@ class CSVTable(tables.CSVTable): # type: ignore[misc]
63
62
  env = self.state.document.settings.env
64
63
  filename = self.options['file']
65
64
  if path.exists(filename):
66
- logger.warning(__('":file:" option for csv-table directive now recognizes '
67
- 'an absolute path as a relative path from source directory. '
68
- 'Please update your document.'),
69
- location=(env.docname, self.lineno))
65
+ logger.warning(
66
+ __(
67
+ '":file:" option for csv-table directive now recognizes '
68
+ 'an absolute path as a relative path from source directory. '
69
+ 'Please update your document.'
70
+ ),
71
+ location=(env.docname, self.lineno),
72
+ )
70
73
  else:
71
74
  abspath = path.join(env.srcdir, os_path(self.options['file'][1:]))
72
75
  docdir = path.dirname(env.doc2path(env.docname))
@@ -95,10 +98,13 @@ class Code(SphinxDirective):
95
98
 
96
99
  set_classes(self.options)
97
100
  code = '\n'.join(self.content)
98
- node = nodes.literal_block(code, code,
99
- classes=self.options.get('classes', []),
100
- force='force' in self.options,
101
- highlight_args={})
101
+ node = nodes.literal_block(
102
+ code,
103
+ code,
104
+ classes=self.options.get('classes', []),
105
+ force='force' in self.options,
106
+ highlight_args={},
107
+ )
102
108
  self.add_name(node)
103
109
  set_source_info(self, node)
104
110
 
@@ -109,8 +115,9 @@ class Code(SphinxDirective):
109
115
  # no highlight language specified. Then this directive refers the current
110
116
  # highlight setting via ``highlight`` directive or ``highlight_language``
111
117
  # configuration.
112
- node['language'] = self.env.temp_data.get('highlight_language',
113
- self.config.highlight_language)
118
+ node['language'] = self.env.temp_data.get(
119
+ 'highlight_language', self.config.highlight_language
120
+ )
114
121
 
115
122
  if 'number-lines' in self.options:
116
123
  node['linenos'] = True
@@ -139,12 +146,15 @@ class MathDirective(SphinxDirective):
139
146
  if self.arguments and self.arguments[0]:
140
147
  latex = self.arguments[0] + '\n\n' + latex
141
148
  label = self.options.get('label', self.options.get('name'))
142
- node = nodes.math_block(latex, latex,
143
- classes=self.options.get('class', []),
144
- docname=self.env.docname,
145
- number=None,
146
- label=label,
147
- nowrap='nowrap' in self.options)
149
+ node = nodes.math_block(
150
+ latex,
151
+ latex,
152
+ classes=self.options.get('class', []),
153
+ docname=self.env.docname,
154
+ number=None,
155
+ label=label,
156
+ nowrap='nowrap' in self.options,
157
+ )
148
158
  self.add_name(node)
149
159
  self.set_source_info(node)
150
160
 
@@ -158,14 +168,14 @@ class MathDirective(SphinxDirective):
158
168
  # assign label automatically if math_number_all enabled
159
169
  if node['label'] == '' or (self.config.math_number_all and not node['label']):
160
170
  seq = self.env.new_serialno('sphinx.ext.math#equations')
161
- node['label'] = "%s:%d" % (self.env.docname, seq)
171
+ node['label'] = f'{self.env.docname}:{seq}'
162
172
 
163
173
  # no targets and numbers are needed
164
174
  if not node['label']:
165
175
  return
166
176
 
167
177
  # register label to domain
168
- domain = cast(MathDomain, self.env.get_domain('math'))
178
+ domain = self.env.domains.math_domain
169
179
  domain.note_equation(self.env.docname, node['label'], location=node)
170
180
  node['number'] = domain.get_equation_number_for(node['label'])
171
181
 
@@ -7,20 +7,17 @@ and roles describing e.g. constructs of one programming language.
7
7
  from __future__ import annotations
8
8
 
9
9
  import copy
10
- from abc import ABC, abstractmethod
11
- from collections.abc import Callable
12
- from typing import TYPE_CHECKING, Any, NamedTuple, cast
10
+ from typing import TYPE_CHECKING
13
11
 
14
- from docutils.nodes import Element, Node, system_message
15
-
16
- from sphinx.errors import SphinxError
12
+ from sphinx.domains._index import Index, IndexEntry
17
13
  from sphinx.locale import _
18
14
 
19
15
  if TYPE_CHECKING:
20
- from collections.abc import Iterable, Sequence
21
- from typing import TypeAlias
16
+ from collections.abc import Callable, Iterable, Sequence, Set
17
+ from typing import Any
22
18
 
23
19
  from docutils import nodes
20
+ from docutils.nodes import Element, Node
24
21
  from docutils.parsers.rst import Directive
25
22
  from docutils.parsers.rst.states import Inliner
26
23
 
@@ -28,7 +25,14 @@ if TYPE_CHECKING:
28
25
  from sphinx.builders import Builder
29
26
  from sphinx.environment import BuildEnvironment
30
27
  from sphinx.roles import XRefRole
31
- from sphinx.util.typing import RoleFunction
28
+ from sphinx.util.typing import RoleFunction, TitleGetter
29
+
30
+ __all__ = (
31
+ 'Domain',
32
+ 'Index',
33
+ 'IndexEntry',
34
+ 'ObjType',
35
+ )
32
36
 
33
37
 
34
38
  class ObjType:
@@ -50,112 +54,10 @@ class ObjType:
50
54
  'searchprio': 1,
51
55
  }
52
56
 
53
- def __init__(self, lname: str, *roles: Any, **attrs: Any) -> None:
54
- self.lname = lname
55
- self.roles: tuple = roles
56
- self.attrs: dict = self.known_attrs.copy()
57
- self.attrs.update(attrs)
58
-
59
-
60
- class IndexEntry(NamedTuple):
61
- name: str
62
- subtype: int
63
- docname: str
64
- anchor: str
65
- extra: str
66
- qualifier: str
67
- descr: str
68
-
69
-
70
- class Index(ABC):
71
- """
72
- An Index is the description for a domain-specific index. To add an index to
73
- a domain, subclass Index, overriding the three name attributes:
74
-
75
- * `name` is an identifier used for generating file names.
76
- It is also used for a hyperlink target for the index. Therefore, users can
77
- refer the index page using ``ref`` role and a string which is combined
78
- domain name and ``name`` attribute (ex. ``:ref:`py-modindex```).
79
- * `localname` is the section title for the index.
80
- * `shortname` is a short name for the index, for use in the relation bar in
81
- HTML output. Can be empty to disable entries in the relation bar.
82
-
83
- and providing a :meth:`generate()` method. Then, add the index class to
84
- your domain's `indices` list. Extensions can add indices to existing
85
- domains using :meth:`~sphinx.application.Sphinx.add_index_to_domain()`.
86
-
87
- .. versionchanged:: 3.0
88
-
89
- Index pages can be referred by domain name and index name via
90
- :rst:role:`ref` role.
91
- """
92
-
93
- name: str
94
- localname: str
95
- shortname: str | None = None
96
-
97
- def __init__(self, domain: Domain) -> None:
98
- if not self.name or self.localname is None:
99
- raise SphinxError('Index subclass %s has no valid name or localname'
100
- % self.__class__.__name__)
101
- self.domain = domain
102
-
103
- @abstractmethod
104
- def generate(self, docnames: Iterable[str] | None = None,
105
- ) -> tuple[list[tuple[str, list[IndexEntry]]], bool]:
106
- """Get entries for the index.
107
-
108
- If ``docnames`` is given, restrict to entries referring to these
109
- docnames.
110
-
111
- The return value is a tuple of ``(content, collapse)``:
112
-
113
- ``collapse``
114
- A boolean that determines if sub-entries should start collapsed (for
115
- output formats that support collapsing sub-entries).
116
-
117
- ``content``:
118
- A sequence of ``(letter, entries)`` tuples, where ``letter`` is the
119
- "heading" for the given ``entries``, usually the starting letter, and
120
- ``entries`` is a sequence of single entries. Each entry is a sequence
121
- ``[name, subtype, docname, anchor, extra, qualifier, descr]``. The
122
- items in this sequence have the following meaning:
123
-
124
- ``name``
125
- The name of the index entry to be displayed.
126
-
127
- ``subtype``
128
- The sub-entry related type. One of:
129
-
130
- ``0``
131
- A normal entry.
132
- ``1``
133
- An entry with sub-entries.
134
- ``2``
135
- A sub-entry.
136
-
137
- ``docname``
138
- *docname* where the entry is located.
139
-
140
- ``anchor``
141
- Anchor for the entry within ``docname``
142
-
143
- ``extra``
144
- Extra info for the entry.
145
-
146
- ``qualifier``
147
- Qualifier for the description.
148
-
149
- ``descr``
150
- Description for the entry.
151
-
152
- Qualifier and description are not rendered for some output formats such
153
- as LaTeX.
154
- """
155
- raise NotImplementedError
156
-
157
-
158
- TitleGetter: TypeAlias = Callable[[Node], str | None]
57
+ def __init__(self, lname: str, /, *roles: Any, **attrs: Any) -> None:
58
+ self.lname: str = lname
59
+ self.roles: tuple[Any, ...] = roles
60
+ self.attrs: dict[str, Any] = self.known_attrs | attrs
159
61
 
160
62
 
161
63
  class Domain:
@@ -235,10 +137,8 @@ class Domain:
235
137
 
236
138
  def setup(self) -> None:
237
139
  """Set up domain object."""
238
- from sphinx.domains.std import StandardDomain
239
-
240
140
  # Add special hyperlink target for index pages (ex. py-modindex)
241
- std = cast(StandardDomain, self.env.get_domain('std'))
141
+ std = self.env.domains.standard_domain
242
142
  for index in self.indices:
243
143
  if index.name and index.localname:
244
144
  docname = f"{self.name}-{index.name}"
@@ -268,7 +168,7 @@ class Domain:
268
168
  def role_adapter(typ: str, rawtext: str, text: str, lineno: int,
269
169
  inliner: Inliner, options: dict | None = None,
270
170
  content: Sequence[str] = (),
271
- ) -> tuple[list[Node], list[system_message]]:
171
+ ) -> tuple[list[Node], list[nodes.system_message]]:
272
172
  return self.roles[name](fullname, rawtext, text, lineno,
273
173
  inliner, options or {}, content)
274
174
  self._role_cache[name] = role_adapter
@@ -298,7 +198,7 @@ class Domain:
298
198
  """Remove traces of a document in the domain-specific inventories."""
299
199
  pass
300
200
 
301
- def merge_domaindata(self, docnames: list[str], otherdata: dict[str, Any]) -> None:
201
+ def merge_domaindata(self, docnames: Set[str], otherdata: dict[str, Any]) -> None:
302
202
  """Merge in data regarding *docnames* from a different domaindata
303
203
  inventory (coming from a subprocess in parallel builds).
304
204
  """