Sphinx 8.0.2__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 +9 -2
  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.2.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.2.dist-info/LICENSE.rst +0 -67
  422. sphinx-8.0.2.dist-info/RECORD +0 -590
  423. {sphinx-8.0.2.dist-info → sphinx-8.1.0.dist-info}/WHEEL +0 -0
  424. {sphinx-8.0.2.dist-info → sphinx-8.1.0.dist-info}/entry_points.txt +0 -0
@@ -1,12 +1,5 @@
1
1
  /*
2
- * doctools.js
3
- * ~~~~~~~~~~~
4
- *
5
2
  * Base JavaScript utilities for all Sphinx HTML documentation.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
  "use strict";
12
5
 
@@ -1,13 +1,6 @@
1
1
  /*
2
- * language_data.js
3
- * ~~~~~~~~~~~~~~~~
4
- *
5
2
  * This script contains the language-specific data used by searchtools.js,
6
3
  * namely the list of stopwords, stemmer, scorer and splitter.
7
- *
8
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
9
- * :license: BSD, see LICENSE for details.
10
- *
11
4
  */
12
5
 
13
6
  var stopwords = {{ search_language_stop_words }};
@@ -1,12 +1,5 @@
1
1
  /*
2
- * searchtools.js
3
- * ~~~~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx JavaScript utilities for the full-text search.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
  "use strict";
12
5
 
@@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") {
20
13
  // and returns the new score.
21
14
  /*
22
15
  score: result => {
23
- const [docname, title, anchor, descr, score, filename] = result
16
+ const [docname, title, anchor, descr, score, filename, kind] = result
24
17
  return score
25
18
  },
26
19
  */
@@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") {
47
40
  };
48
41
  }
49
42
 
43
+ // Global search result kind enum, used by themes to style search results.
44
+ class SearchResultKind {
45
+ static get index() { return "index"; }
46
+ static get object() { return "object"; }
47
+ static get text() { return "text"; }
48
+ static get title() { return "title"; }
49
+ }
50
+
50
51
  const _removeChildren = (element) => {
51
52
  while (element && element.lastChild) element.removeChild(element.lastChild);
52
53
  };
@@ -64,9 +65,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
64
65
  const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
65
66
  const contentRoot = document.documentElement.dataset.content_root;
66
67
 
67
- const [docName, title, anchor, descr, score, _filename] = item;
68
+ const [docName, title, anchor, descr, score, _filename, kind] = item;
68
69
 
69
70
  let listItem = document.createElement("li");
71
+ // Add a class representing the item's type:
72
+ // can be used by a theme's CSS selector for styling
73
+ // See SearchResultKind for the class names.
74
+ listItem.classList.add(`kind-${kind}`);
70
75
  let requestUrl;
71
76
  let linkUrl;
72
77
  if (docBuilder === "dirhtml") {
@@ -115,8 +120,10 @@ const _finishSearch = (resultCount) => {
115
120
  "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
116
121
  );
117
122
  else
118
- Search.status.innerText = _(
119
- "Search finished, found ${resultCount} page(s) matching the search query."
123
+ Search.status.innerText = Documentation.ngettext(
124
+ "Search finished, found one page matching the search query.",
125
+ "Search finished, found ${resultCount} pages matching the search query.",
126
+ resultCount,
120
127
  ).replace('${resultCount}', resultCount);
121
128
  };
122
129
  const _displayNextItem = (
@@ -138,7 +145,7 @@ const _displayNextItem = (
138
145
  else _finishSearch(resultCount);
139
146
  };
140
147
  // Helper function used by query() to order search results.
141
- // Each input is an array of [docname, title, anchor, descr, score, filename].
148
+ // Each input is an array of [docname, title, anchor, descr, score, filename, kind].
142
149
  // Order the results by score (in opposite order of appearance, since the
143
150
  // `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
144
151
  const _orderResultsByScoreThenName = (a, b) => {
@@ -248,6 +255,7 @@ const Search = {
248
255
  searchSummary.classList.add("search-summary");
249
256
  searchSummary.innerText = "";
250
257
  const searchList = document.createElement("ul");
258
+ searchList.setAttribute("role", "list");
251
259
  searchList.classList.add("search");
252
260
 
253
261
  const out = document.getElementById("search-results");
@@ -318,7 +326,7 @@ const Search = {
318
326
  const indexEntries = Search._index.indexentries;
319
327
 
320
328
  // Collect multiple result groups to be sorted separately and then ordered.
321
- // Each is an array of [docname, title, anchor, descr, score, filename].
329
+ // Each is an array of [docname, title, anchor, descr, score, filename, kind].
322
330
  const normalResults = [];
323
331
  const nonMainIndexResults = [];
324
332
 
@@ -337,6 +345,7 @@ const Search = {
337
345
  null,
338
346
  score + boost,
339
347
  filenames[file],
348
+ SearchResultKind.title,
340
349
  ]);
341
350
  }
342
351
  }
@@ -354,6 +363,7 @@ const Search = {
354
363
  null,
355
364
  score,
356
365
  filenames[file],
366
+ SearchResultKind.index,
357
367
  ];
358
368
  if (isMain) {
359
369
  normalResults.push(result);
@@ -475,6 +485,7 @@ const Search = {
475
485
  descr,
476
486
  score,
477
487
  filenames[match[0]],
488
+ SearchResultKind.object,
478
489
  ]);
479
490
  };
480
491
  Object.keys(objects).forEach((prefix) =>
@@ -585,6 +596,7 @@ const Search = {
585
596
  null,
586
597
  score,
587
598
  filenames[file],
599
+ SearchResultKind.text,
588
600
  ]);
589
601
  }
590
602
  return results;
@@ -1,12 +1,4 @@
1
- {#
2
- bizstyle/layout.html
3
- ~~~~~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the bizstyle theme.
6
-
7
- :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sphinx layout template for the bizstyle theme. #}
10
2
  {% extends "basic/layout.html" %}
11
3
 
12
4
  {%- block scripts %}
@@ -1,12 +1,5 @@
1
1
  /*
2
- * bizstyle.css_t
3
- * ~~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- business style theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  @import url("basic.css");
@@ -1,14 +1,8 @@
1
- //
2
- // bizstyle.js
3
- // ~~~~~~~~~~~
4
- //
5
- // Sphinx javascript -- for bizstyle theme.
6
- //
7
- // This theme was created by referring to 'sphinxdoc'
8
- //
9
- // :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
10
- // :license: BSD, see LICENSE for details.
11
- //
1
+ /*
2
+ * Sphinx javascript -- for bizstyle theme.
3
+ *
4
+ * This theme was created by referring to 'sphinxdoc'
5
+ */
12
6
  const initialiseBizStyle = () => {
13
7
  if (navigator.userAgent.indexOf("iPhone") > 0 || navigator.userAgent.indexOf("Android") > 0) {
14
8
  document.querySelector("li.nav-item-0 a").innerText = "Top"
@@ -1,12 +1,4 @@
1
- {#
2
- classic/layout.html
3
- ~~~~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the classic theme.
6
-
7
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sphinx layout template for the classic theme. #}
10
2
  {%- extends "basic/layout.html" %}
11
3
 
12
4
  {%- block scripts %}
@@ -1,12 +1,5 @@
1
1
  /*
2
- * classic.css_t
3
- * ~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- classic theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  @import url("basic.css");
@@ -1,7 +1,4 @@
1
1
  /*
2
- * sidebar.js
3
- * ~~~~~~~~~~
4
- *
5
2
  * This script makes the Sphinx sidebar collapsible.
6
3
  *
7
4
  * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
@@ -16,9 +13,6 @@
16
13
  * Once the browser is closed the cookie is deleted and the position
17
14
  * reset to the default (expanded).
18
15
  *
19
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
20
- * :license: BSD, see LICENSE for details.
21
- *
22
16
  */
23
17
 
24
18
  const initialiseSidebar = () => {
@@ -1,12 +1,4 @@
1
- {#
2
- epub/epub-cover.html
3
- ~~~~~~~~~~~~~~~~~~~~
4
-
5
- Sample template for the html cover page.
6
-
7
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sample template for the html cover page. #}
10
2
  {%- extends "layout.html" %}
11
3
  {%- block header %}{% endblock %}
12
4
  {%- block rootrellink %}{% endblock %}
@@ -1,12 +1,4 @@
1
- {#
2
- epub/layout.html
3
- ~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the epub theme.
6
-
7
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sphinx layout template for the epub theme. #}
10
2
  {%- extends "basic/layout.html" %}
11
3
 
12
4
  {%- block doctype -%}
@@ -1,12 +1,5 @@
1
1
  /*
2
- * epub.css_t
3
- * ~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- epub theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  /* -- main layout ----------------------------------------------------------- */
@@ -1,12 +1,4 @@
1
- {#
2
- haiku/layout.html
3
- ~~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the haiku theme.
6
-
7
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sphinx layout template for the haiku theme. #}
10
2
  {%- extends "basic/layout.html" %}
11
3
 
12
4
  {# do not display relbars #}
@@ -1,7 +1,4 @@
1
1
  /*
2
- * haiku.css_t
3
- * ~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- haiku theme.
6
3
  *
7
4
  * Adapted from https://haiku-os.org/docs/Haiku-doc.css.
@@ -16,9 +13,6 @@
16
13
  * Braden Ewing <brewin@gmail.com>
17
14
  * Humdinger <humdingerb@gmail.com>
18
15
  *
19
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
20
- * :license: BSD, see LICENSE for details.
21
- *
22
16
  */
23
17
 
24
18
  @import url("basic.css");
@@ -1,12 +1,5 @@
1
1
  /*
2
- * nature.css_t
3
- * ~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- nature theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  @import url("basic.css");
@@ -1,12 +1,4 @@
1
- {#
2
- nonav/layout.html
3
- ~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the any help system theme.
6
-
7
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- :license: BSD, see LICENSE for details.
9
- #}
1
+ {# Sphinx layout template for the any help system theme. #}
10
2
  {%- extends "basic/layout.html" %}
11
3
 
12
4
  {%- block doctype -%}
@@ -1,12 +1,5 @@
1
1
  /*
2
- * nonav.css
3
- * ~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- nonav theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  /* -- main layout ----------------------------------------------------------- */
@@ -1,12 +1,5 @@
1
1
  /*
2
- * default.css_t
3
- * ~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- default theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  @import url("basic.css");
@@ -1,12 +1,5 @@
1
1
  /*
2
- * pyramid.css_t
3
- * ~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- pylons theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  @import url("basic.css");
@@ -1,13 +1,4 @@
1
- {#
2
- scrolls/layout.html
3
- ~~~~~~~~~~~~~~~~~~~
4
-
5
- Sphinx layout template for the scrolls theme, originally written
6
- by Armin Ronacher.
7
-
8
- :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
9
- :license: BSD, see LICENSE for details.
10
- #}
1
+ {# Sphinx layout template for the scrolls theme. #}
11
2
  {%- extends "basic/layout.html" %}
12
3
  {%- block css %}
13
4
  {{ super() }}
@@ -1,12 +1,5 @@
1
1
  /*
2
- * scrolls.css_t
3
- * ~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- scrolls theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  body {
@@ -1,12 +1,7 @@
1
1
  /*
2
- * sphinxdoc.css_t
3
- * ~~~~~~~~~~~~~~~
2
+ * Sphinx stylesheet -- sphinxdoc theme.
4
3
  *
5
- * Sphinx stylesheet -- sphinxdoc theme. Originally created by
6
- * Armin Ronacher for Werkzeug.
7
- *
8
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
9
- * :license: BSD, see LICENSE for details.
4
+ * Originally created by Armin Ronacher for Werkzeug.
10
5
  *
11
6
  */
12
7
 
@@ -1,12 +1,5 @@
1
1
  /*
2
- * traditional.css
3
- * ~~~~~~~~~~~~~~~
4
- *
5
2
  * Sphinx stylesheet -- traditional docs.python.org theme.
6
- *
7
- * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
3
  */
11
4
 
12
5
  body {
sphinx/theming.py CHANGED
@@ -293,7 +293,9 @@ def _load_theme_with_ancestors(
293
293
  return themes, theme_dirs, tmp_dirs
294
294
 
295
295
 
296
- def _load_theme(name: str, theme_path: str, /) -> tuple[str, str, str | None, _ConfigFile]:
296
+ def _load_theme(
297
+ name: str, theme_path: str, /
298
+ ) -> tuple[str, str, str | None, _ConfigFile]:
297
299
  if path.isdir(theme_path):
298
300
  # already a directory, do nothing
299
301
  tmp_dir = None
@@ -371,7 +373,9 @@ def _convert_theme_toml(cfg: _ThemeToml, /) -> _ConfigFile:
371
373
  pygments_table = theme.get('pygments_style', {})
372
374
  if isinstance(pygments_table, str):
373
375
  hint = f'pygments_style = {{ default = "{pygments_table}" }}'
374
- msg = __('The "theme.pygments_style" setting must be a table. Hint: "%s"') % hint
376
+ msg = (
377
+ __('The "theme.pygments_style" setting must be a table. Hint: "%s"') % hint
378
+ )
375
379
  raise ThemeError(msg)
376
380
  pygments_style_default: str | None = pygments_table.get('default')
377
381
  pygments_style_dark: str | None = pygments_table.get('dark')
@@ -401,15 +405,23 @@ def _validate_theme_conf(cfg: configparser.RawConfigParser, name: str) -> str:
401
405
 
402
406
  def _convert_theme_conf(cfg: configparser.RawConfigParser, /) -> _ConfigFile:
403
407
  if stylesheet := cfg.get('theme', 'stylesheet', fallback=''):
404
- stylesheets: tuple[str, ...] | None = tuple(map(str.strip, stylesheet.split(',')))
408
+ stylesheets: tuple[str, ...] | None = tuple(
409
+ map(str.strip, stylesheet.split(','))
410
+ )
405
411
  else:
406
412
  stylesheets = None
407
413
  if sidebar := cfg.get('theme', 'sidebars', fallback=''):
408
- sidebar_templates: tuple[str, ...] | None = tuple(map(str.strip, sidebar.split(',')))
414
+ sidebar_templates: tuple[str, ...] | None = tuple(
415
+ map(str.strip, sidebar.split(','))
416
+ )
409
417
  else:
410
418
  sidebar_templates = None
411
- pygments_style_default: str | None = cfg.get('theme', 'pygments_style', fallback=None)
412
- pygments_style_dark: str | None = cfg.get('theme', 'pygments_dark_style', fallback=None)
419
+ pygments_style_default: str | None = cfg.get(
420
+ 'theme', 'pygments_style', fallback=None
421
+ )
422
+ pygments_style_dark: str | None = cfg.get(
423
+ 'theme', 'pygments_dark_style', fallback=None
424
+ )
413
425
  options = dict(cfg.items('options')) if cfg.has_section('options') else {}
414
426
  return _ConfigFile(
415
427
  stylesheets=stylesheets,