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
sphinx/writers/text.py CHANGED
@@ -1,4 +1,5 @@
1
1
  """Custom docutils writer for plain text."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  import math
@@ -7,7 +8,7 @@ import re
7
8
  import textwrap
8
9
  from collections.abc import Iterable, Iterator, Sequence
9
10
  from itertools import chain, groupby, pairwise
10
- from typing import TYPE_CHECKING, Any, cast
11
+ from typing import TYPE_CHECKING, Any, ClassVar, cast
11
12
 
12
13
  from docutils import nodes, writers
13
14
  from docutils.utils import column_width
@@ -27,7 +28,7 @@ class Cell:
27
28
  It can span multiple columns or multiple lines.
28
29
  """
29
30
 
30
- def __init__(self, text: str = "", rowspan: int = 1, colspan: int = 1) -> None:
31
+ def __init__(self, text: str = '', rowspan: int = 1, colspan: int = 1) -> None:
31
32
  self.text = text
32
33
  self.wrapped: list[str] = []
33
34
  self.rowspan = rowspan
@@ -36,7 +37,9 @@ class Cell:
36
37
  self.row: int | None = None
37
38
 
38
39
  def __repr__(self) -> str:
39
- return f"<Cell {self.text!r} {self.row}v{self.rowspan}/{self.col}>{self.colspan}>"
40
+ return (
41
+ f'<Cell {self.text!r} {self.row}v{self.rowspan}/{self.col}>{self.colspan}>'
42
+ )
40
43
 
41
44
  def __hash__(self) -> int:
42
45
  return hash((self.col, self.row))
@@ -98,7 +101,7 @@ class Table:
98
101
  def __init__(self, colwidth: list[int] | None = None) -> None:
99
102
  self.lines: list[list[Cell]] = []
100
103
  self.separator = 0
101
- self.colwidth: list[int] = (colwidth if colwidth is not None else [])
104
+ self.colwidth: list[int] = colwidth if colwidth is not None else []
102
105
  self.current_line = 0
103
106
  self.current_col = 0
104
107
 
@@ -150,7 +153,7 @@ class Table:
150
153
  line.append(Cell())
151
154
 
152
155
  def __repr__(self) -> str:
153
- return "\n".join(map(repr, self.lines))
156
+ return '\n'.join(map(repr, self.lines))
154
157
 
155
158
  def cell_width(self, cell: Cell, source: list[int]) -> int:
156
159
  """Give the cell width, according to the given source (either
@@ -203,55 +206,58 @@ class Table:
203
206
  out = []
204
207
  self.rewrap()
205
208
 
206
- def writesep(char: str = "-", lineno: int | None = None) -> str:
209
+ def writesep(char: str = '-', lineno: int | None = None) -> str:
207
210
  """Called on the line *before* lineno.
208
211
  Called with no *lineno* for the last sep.
209
212
  """
210
213
  out: list[str] = []
211
214
  for colno, width in enumerate(self.measured_widths):
212
215
  if (
213
- lineno is not None and
214
- lineno > 0 and
215
- self[lineno, colno] is self[lineno - 1, colno]
216
+ lineno is not None
217
+ and lineno > 0
218
+ and self[lineno, colno] is self[lineno - 1, colno]
216
219
  ):
217
- out.append(" " * (width + 2))
220
+ out.append(' ' * (width + 2))
218
221
  else:
219
222
  out.append(char * (width + 2))
220
- head = "+" if out[0][0] == "-" else "|"
221
- tail = "+" if out[-1][0] == "-" else "|"
223
+ head = '+' if out[0][0] == '-' else '|'
224
+ tail = '+' if out[-1][0] == '-' else '|'
222
225
  glue = [
223
- "+" if left[0] == "-" or right[0] == "-" else "|"
226
+ '+' if left[0] == '-' or right[0] == '-' else '|'
224
227
  for left, right in pairwise(out)
225
228
  ]
226
229
  glue.append(tail)
227
- return head + "".join(chain.from_iterable(zip(out, glue, strict=False)))
230
+ return head + ''.join(chain.from_iterable(zip(out, glue, strict=False)))
228
231
 
229
232
  for lineno, line in enumerate(self.lines):
230
233
  if self.separator and lineno == self.separator:
231
- out.append(writesep("=", lineno))
234
+ out.append(writesep('=', lineno))
232
235
  else:
233
- out.append(writesep("-", lineno))
236
+ out.append(writesep('-', lineno))
234
237
  for physical_line in range(self.physical_lines_for_line(line)):
235
- linestr = ["|"]
238
+ linestr = ['|']
236
239
  for colno, cell in enumerate(line):
237
240
  if cell.col != colno:
238
241
  continue
239
242
  if lineno != cell.row: # NoQA: SIM114
240
- physical_text = ""
243
+ physical_text = ''
241
244
  elif physical_line >= len(cell.wrapped):
242
- physical_text = ""
245
+ physical_text = ''
243
246
  else:
244
247
  physical_text = cell.wrapped[physical_line]
245
248
  adjust_len = len(physical_text) - column_width(physical_text)
246
249
  linestr.append(
247
- " " +
248
- physical_text.ljust(
249
- self.cell_width(cell, self.measured_widths) + 1 + adjust_len,
250
- ) + "|",
250
+ ' '
251
+ + physical_text.ljust(
252
+ self.cell_width(cell, self.measured_widths)
253
+ + 1
254
+ + adjust_len,
255
+ )
256
+ + '|',
251
257
  )
252
- out.append("".join(linestr))
253
- out.append(writesep("-"))
254
- return "\n".join(out)
258
+ out.append(''.join(linestr))
259
+ out.append(writesep('-'))
260
+ return '\n'.join(out)
255
261
 
256
262
 
257
263
  class TextWrapper(textwrap.TextWrapper):
@@ -261,7 +267,8 @@ class TextWrapper(textwrap.TextWrapper):
261
267
  r'(\s+|' # any whitespace
262
268
  r'(?<=\s)(?::[a-z-]+:)?`\S+|' # interpreted text start
263
269
  r'[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|' # hyphenated words
264
- r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
270
+ r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))' # em-dash
271
+ ) # fmt: skip
265
272
 
266
273
  def _wrap_chunks(self, chunks: list[str]) -> list[str]:
267
274
  """The original _wrap_chunks uses len() to calculate width.
@@ -270,7 +277,7 @@ class TextWrapper(textwrap.TextWrapper):
270
277
  """
271
278
  lines: list[str] = []
272
279
  if self.width <= 0:
273
- raise ValueError("invalid width %r (must be > 0)" % self.width)
280
+ raise ValueError('invalid width %r (must be > 0)' % self.width)
274
281
 
275
282
  chunks.reverse()
276
283
 
@@ -315,7 +322,7 @@ class TextWrapper(textwrap.TextWrapper):
315
322
  for i, c in enumerate(word):
316
323
  total += column_width(c)
317
324
  if total > space_left:
318
- return word[:i - 1], word[i - 1:]
325
+ return word[: i - 1], word[i - 1 :]
319
326
  return word, ''
320
327
 
321
328
  def _split(self, text: str) -> list[str]:
@@ -323,8 +330,10 @@ class TextWrapper(textwrap.TextWrapper):
323
330
 
324
331
  This '_split' splits wide-characters into chunks by one character.
325
332
  """
333
+
326
334
  def split(t: str) -> list[str]:
327
335
  return super(TextWrapper, self)._split(t)
336
+
328
337
  chunks: list[str] = []
329
338
  for chunk in split(text):
330
339
  for w, g in groupby(chunk, column_width):
@@ -334,8 +343,9 @@ class TextWrapper(textwrap.TextWrapper):
334
343
  chunks.extend(list(g))
335
344
  return chunks
336
345
 
337
- def _handle_long_word(self, reversed_chunks: list[str], cur_line: list[str],
338
- cur_len: int, width: int) -> None:
346
+ def _handle_long_word(
347
+ self, reversed_chunks: list[str], cur_line: list[str], cur_len: int, width: int
348
+ ) -> None:
339
349
  """Override original method for using self._break_word() instead of slice."""
340
350
  space_left = max(width - cur_len, 1)
341
351
  if self.break_long_words:
@@ -356,10 +366,10 @@ def my_wrap(text: str, width: int = MAXWIDTH, **kwargs: Any) -> list[str]:
356
366
  return w.wrap(text)
357
367
 
358
368
 
359
- class TextWriter(writers.Writer): # type: ignore[misc]
369
+ class TextWriter(writers.Writer): # type: ignore[type-arg]
360
370
  supported = ('text',)
361
371
  settings_spec = ('No options here.', '', ())
362
- settings_defaults: dict[str, Any] = {}
372
+ settings_defaults: ClassVar[dict[str, Any]] = {}
363
373
 
364
374
  output: str
365
375
 
@@ -368,6 +378,7 @@ class TextWriter(writers.Writer): # type: ignore[misc]
368
378
  self.builder = builder
369
379
 
370
380
  def translate(self) -> None:
381
+ assert isinstance(self.document, nodes.document)
371
382
  visitor = self.builder.create_translator(self.document, self.builder)
372
383
  self.document.walkabout(visitor)
373
384
  self.output = cast(TextTranslator, visitor).body
@@ -411,7 +422,10 @@ class TextTranslator(SphinxTranslator):
411
422
  self.stateindent.append(indent)
412
423
 
413
424
  def end_state(
414
- self, wrap: bool = True, end: Sequence[str] | None = ('',), first: str | None = None,
425
+ self,
426
+ wrap: bool = True,
427
+ end: Sequence[str] | None = ('',),
428
+ first: str | None = None,
415
429
  ) -> None:
416
430
  content = self.states.pop()
417
431
  maxindent = sum(self.stateindent)
@@ -429,6 +443,7 @@ class TextTranslator(SphinxTranslator):
429
443
  if end:
430
444
  res += end
431
445
  result.append((indent, res))
446
+
432
447
  for itemindent, item in content:
433
448
  if itemindent == -1:
434
449
  toformat.append(item) # type: ignore[arg-type]
@@ -453,9 +468,11 @@ class TextTranslator(SphinxTranslator):
453
468
 
454
469
  def depart_document(self, node: Element) -> None:
455
470
  self.end_state()
456
- self.body = self.nl.join(line and (' ' * indent + line)
457
- for indent, lines in self.states[0]
458
- for line in lines)
471
+ self.body = self.nl.join(
472
+ line and (' ' * indent + line)
473
+ for indent, lines in self.states[0]
474
+ for line in lines
475
+ )
459
476
  # XXX header/footer?
460
477
 
461
478
  def visit_section(self, node: Element) -> None:
@@ -623,7 +640,9 @@ class TextTranslator(SphinxTranslator):
623
640
  self.param_group_index = 0
624
641
  # Counts as what we call a parameter group are either a required parameter, or a
625
642
  # set of contiguous optional ones.
626
- self.list_is_required_param = [isinstance(c, parameter_group) for c in node.children]
643
+ self.list_is_required_param = [
644
+ isinstance(c, parameter_group) for c in node.children
645
+ ]
627
646
  self.required_params_left = sum(self.list_is_required_param)
628
647
  self.param_separator = ', '
629
648
  self.multi_line_parameter_list = node.get('multi_line_parameter_list', False)
@@ -649,7 +668,9 @@ class TextTranslator(SphinxTranslator):
649
668
 
650
669
  def visit_desc_parameter(self, node: Element) -> None:
651
670
  on_separate_line = self.multi_line_parameter_list
652
- if on_separate_line and not (self.is_first_param and self.optional_param_level > 0):
671
+ if on_separate_line and not (
672
+ self.is_first_param and self.optional_param_level > 0
673
+ ):
653
674
  self.new_state()
654
675
  if self.is_first_param:
655
676
  self.is_first_param = False
@@ -664,13 +685,18 @@ class TextTranslator(SphinxTranslator):
664
685
 
665
686
  is_required = self.list_is_required_param[self.param_group_index]
666
687
  if on_separate_line:
667
- is_last_group = self.param_group_index + 1 == len(self.list_is_required_param)
688
+ len_lirp = len(self.list_is_required_param)
689
+ is_last_group = self.param_group_index + 1 == len_lirp
668
690
  next_is_required = (
669
691
  not is_last_group
670
692
  and self.list_is_required_param[self.param_group_index + 1]
671
693
  )
672
694
  opt_param_left_at_level = self.params_left_at_level > 0
673
- if opt_param_left_at_level or is_required and (is_last_group or next_is_required):
695
+ if (
696
+ opt_param_left_at_level
697
+ or is_required
698
+ and (is_last_group or next_is_required)
699
+ ):
674
700
  self.add_text(self.param_separator)
675
701
  self.end_state(wrap=False, end=None)
676
702
 
@@ -685,8 +711,9 @@ class TextTranslator(SphinxTranslator):
685
711
  self.visit_desc_parameter(node)
686
712
 
687
713
  def visit_desc_optional(self, node: Element) -> None:
688
- self.params_left_at_level = sum(isinstance(c, addnodes.desc_parameter)
689
- for c in node.children)
714
+ self.params_left_at_level = sum(
715
+ isinstance(c, addnodes.desc_parameter) for c in node.children
716
+ )
690
717
  self.optional_param_level += 1
691
718
  self.max_optional_param_level = self.optional_param_level
692
719
  if self.multi_line_parameter_list:
@@ -841,7 +868,7 @@ class TextTranslator(SphinxTranslator):
841
868
  raise nodes.SkipNode
842
869
 
843
870
  def visit_colspec(self, node: Element) -> None:
844
- self.table.colwidth.append(node["colwidth"])
871
+ self.table.colwidth.append(node['colwidth'])
845
872
  raise nodes.SkipNode
846
873
 
847
874
  def visit_tgroup(self, node: Element) -> None:
@@ -871,7 +898,8 @@ class TextTranslator(SphinxTranslator):
871
898
 
872
899
  def visit_entry(self, node: Element) -> None:
873
900
  self.entry = Cell(
874
- rowspan=node.get("morerows", 0) + 1, colspan=node.get("morecols", 0) + 1,
901
+ rowspan=node.get('morerows', 0) + 1,
902
+ colspan=node.get('morecols', 0) + 1,
875
903
  )
876
904
  self.new_state(0)
877
905
 
@@ -1035,9 +1063,11 @@ class TextTranslator(SphinxTranslator):
1035
1063
  def _depart_admonition(self, node: Element) -> None:
1036
1064
  label = admonitionlabels[node.tagname]
1037
1065
  indent = sum(self.stateindent) + len(label)
1038
- if (len(self.states[-1]) == 1 and
1039
- self.states[-1][0][0] == 0 and
1040
- MAXWIDTH - indent >= sum(len(s) for s in self.states[-1][0][1])):
1066
+ if (
1067
+ len(self.states[-1]) == 1
1068
+ and self.states[-1][0][0] == 0
1069
+ and MAXWIDTH - indent >= sum(len(s) for s in self.states[-1][0][1])
1070
+ ):
1041
1071
  # short text: append text after admonition label
1042
1072
  self.stateindent[-1] += len(label)
1043
1073
  self.end_state(first=label + ': ')
@@ -1114,13 +1144,17 @@ class TextTranslator(SphinxTranslator):
1114
1144
  pass
1115
1145
 
1116
1146
  def visit_paragraph(self, node: Element) -> None:
1117
- if not isinstance(node.parent, nodes.Admonition) or \
1118
- isinstance(node.parent, addnodes.seealso):
1147
+ if (
1148
+ not isinstance(node.parent, nodes.Admonition)
1149
+ or isinstance(node.parent, addnodes.seealso)
1150
+ ): # fmt: skip
1119
1151
  self.new_state(0)
1120
1152
 
1121
1153
  def depart_paragraph(self, node: Element) -> None:
1122
- if not isinstance(node.parent, nodes.Admonition) or \
1123
- isinstance(node.parent, addnodes.seealso):
1154
+ if (
1155
+ not isinstance(node.parent, nodes.Admonition)
1156
+ or isinstance(node.parent, addnodes.seealso)
1157
+ ): # fmt: skip
1124
1158
  self.end_state()
1125
1159
 
1126
1160
  def visit_target(self, node: Element) -> None:
@@ -1143,7 +1177,7 @@ class TextTranslator(SphinxTranslator):
1143
1177
 
1144
1178
  def visit_reference(self, node: Element) -> None:
1145
1179
  if self.add_secnumbers:
1146
- numbers = node.get("secnumber")
1180
+ numbers = node.get('secnumber')
1147
1181
  if numbers is not None:
1148
1182
  self.add_text('.'.join(map(str, numbers)) + self.secnumber_suffix)
1149
1183
 
sphinx/writers/xml.py CHANGED
@@ -18,19 +18,20 @@ class XMLWriter(BaseXMLWriter): # type: ignore[misc]
18
18
  self.builder = builder
19
19
 
20
20
  # A lambda function to generate translator lazily
21
- self.translator_class = lambda document: self.builder.create_translator(document)
21
+ self.translator_class = lambda document: self.builder.create_translator(
22
+ document
23
+ )
22
24
 
23
25
  def translate(self, *args: Any, **kwargs: Any) -> None:
24
- self.document.settings.newlines = \
25
- self.document.settings.indents = \
26
+ self.document.settings.newlines = self.document.settings.indents = (
26
27
  self.builder.env.config.xml_pretty
28
+ )
27
29
  self.document.settings.xml_declaration = True
28
30
  self.document.settings.doctype_declaration = True
29
31
  return super().translate()
30
32
 
31
33
 
32
34
  class PseudoXMLWriter(BaseXMLWriter): # type: ignore[misc]
33
-
34
35
  supported = ('pprint', 'pformat', 'pseudoxml')
35
36
  """Formats this writer supports."""
36
37
 
@@ -0,0 +1,31 @@
1
+ License for Sphinx
2
+ ==================
3
+
4
+ Unless otherwise indicated, all code in the Sphinx project is licenced under the
5
+ two clause BSD licence below.
6
+
7
+ Copyright (c) 2007-2024 by the Sphinx team (see AUTHORS file).
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions are
12
+ met:
13
+
14
+ * Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ * Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in the
19
+ documentation and/or other materials provided with the distribution.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Sphinx
3
- Version: 8.0.2
3
+ Version: 8.1.0
4
4
  Summary: Python documentation generator
5
5
  Author-email: Georg Brandl <georg@python.org>
6
6
  Requires-Python: >=3.10
@@ -41,12 +41,12 @@ Classifier: Topic :: Text Processing :: Markup
41
41
  Classifier: Topic :: Text Processing :: Markup :: HTML
42
42
  Classifier: Topic :: Text Processing :: Markup :: LaTeX
43
43
  Classifier: Topic :: Utilities
44
- Requires-Dist: sphinxcontrib-applehelp
45
- Requires-Dist: sphinxcontrib-devhelp
46
- Requires-Dist: sphinxcontrib-jsmath
47
- Requires-Dist: sphinxcontrib-htmlhelp>=2.0.0
44
+ Requires-Dist: sphinxcontrib-applehelp>=1.0.7
45
+ Requires-Dist: sphinxcontrib-devhelp>=1.0.6
46
+ Requires-Dist: sphinxcontrib-htmlhelp>=2.0.6
47
+ Requires-Dist: sphinxcontrib-jsmath>=1.0.1
48
+ Requires-Dist: sphinxcontrib-qthelp>=1.0.6
48
49
  Requires-Dist: sphinxcontrib-serializinghtml>=1.1.9
49
- Requires-Dist: sphinxcontrib-qthelp
50
50
  Requires-Dist: Jinja2>=3.1
51
51
  Requires-Dist: Pygments>=2.17
52
52
  Requires-Dist: docutils>=0.20,<0.22
@@ -60,16 +60,18 @@ Requires-Dist: tomli>=2; python_version < '3.11'
60
60
  Requires-Dist: colorama>=0.4.6; sys_platform == 'win32'
61
61
  Requires-Dist: sphinxcontrib-websupport ; extra == "docs"
62
62
  Requires-Dist: flake8>=6.0 ; extra == "lint"
63
- Requires-Dist: ruff==0.5.5 ; extra == "lint"
64
- Requires-Dist: mypy==1.11.0 ; extra == "lint"
63
+ Requires-Dist: ruff==0.6.9 ; extra == "lint"
64
+ Requires-Dist: mypy==1.11.1 ; extra == "lint"
65
65
  Requires-Dist: sphinx-lint>=0.9 ; extra == "lint"
66
66
  Requires-Dist: types-colorama==0.4.15.20240311 ; extra == "lint"
67
67
  Requires-Dist: types-defusedxml==0.7.0.20240218 ; extra == "lint"
68
- Requires-Dist: types-docutils==0.21.0.20240724 ; extra == "lint"
69
- Requires-Dist: types-Pillow==10.2.0.20240520 ; extra == "lint"
68
+ Requires-Dist: types-docutils==0.21.0.20241005 ; extra == "lint"
69
+ Requires-Dist: types-Pillow==10.2.0.20240822 ; extra == "lint"
70
70
  Requires-Dist: types-Pygments==2.18.0.20240506 ; extra == "lint"
71
- Requires-Dist: types-requests>=2.30.0 ; extra == "lint"
71
+ Requires-Dist: types-requests==2.32.0.20240914 ; extra == "lint"
72
+ Requires-Dist: types-urllib3==1.26.25.14 ; extra == "lint"
72
73
  Requires-Dist: tomli>=2 ; extra == "lint"
74
+ Requires-Dist: pyright==1.1.384 ; extra == "lint"
73
75
  Requires-Dist: pytest>=6.0 ; extra == "lint"
74
76
  Requires-Dist: pytest>=8.0 ; extra == "test"
75
77
  Requires-Dist: defusedxml>=0.7.1 ; extra == "test"