Sphinx 7.2.6__py3-none-any.whl → 7.3.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 (388) hide show
  1. sphinx/__init__.py +8 -9
  2. sphinx/addnodes.py +31 -28
  3. sphinx/application.py +9 -15
  4. sphinx/builders/__init__.py +5 -6
  5. sphinx/builders/_epub_base.py +17 -9
  6. sphinx/builders/changes.py +10 -5
  7. sphinx/builders/dirhtml.py +4 -2
  8. sphinx/builders/dummy.py +3 -2
  9. sphinx/builders/epub3.py +5 -3
  10. sphinx/builders/gettext.py +24 -7
  11. sphinx/builders/html/__init__.py +88 -96
  12. sphinx/builders/html/_assets.py +16 -16
  13. sphinx/builders/html/transforms.py +4 -2
  14. sphinx/builders/latex/__init__.py +40 -33
  15. sphinx/builders/latex/nodes.py +6 -2
  16. sphinx/builders/latex/transforms.py +17 -8
  17. sphinx/builders/latex/util.py +1 -1
  18. sphinx/builders/linkcheck.py +86 -27
  19. sphinx/builders/manpage.py +8 -6
  20. sphinx/builders/singlehtml.py +5 -4
  21. sphinx/builders/texinfo.py +18 -14
  22. sphinx/builders/text.py +3 -2
  23. sphinx/builders/xml.py +5 -2
  24. sphinx/cmd/build.py +119 -76
  25. sphinx/cmd/make_mode.py +4 -9
  26. sphinx/cmd/quickstart.py +13 -16
  27. sphinx/config.py +432 -250
  28. sphinx/deprecation.py +23 -13
  29. sphinx/directives/__init__.py +8 -8
  30. sphinx/directives/code.py +7 -7
  31. sphinx/directives/other.py +23 -13
  32. sphinx/directives/patches.py +7 -6
  33. sphinx/domains/__init__.py +2 -2
  34. sphinx/domains/c/__init__.py +796 -0
  35. sphinx/domains/c/_ast.py +1421 -0
  36. sphinx/domains/c/_ids.py +65 -0
  37. sphinx/domains/c/_parser.py +1048 -0
  38. sphinx/domains/c/_symbol.py +700 -0
  39. sphinx/domains/changeset.py +11 -7
  40. sphinx/domains/citation.py +5 -2
  41. sphinx/domains/cpp/__init__.py +1089 -0
  42. sphinx/domains/cpp/_ast.py +3635 -0
  43. sphinx/domains/cpp/_ids.py +537 -0
  44. sphinx/domains/cpp/_parser.py +2117 -0
  45. sphinx/domains/cpp/_symbol.py +1092 -0
  46. sphinx/domains/index.py +6 -4
  47. sphinx/domains/javascript.py +16 -13
  48. sphinx/domains/math.py +9 -4
  49. sphinx/domains/python/__init__.py +890 -0
  50. sphinx/domains/python/_annotations.py +507 -0
  51. sphinx/domains/python/_object.py +426 -0
  52. sphinx/domains/rst.py +12 -7
  53. sphinx/domains/{std.py → std/__init__.py} +19 -16
  54. sphinx/environment/__init__.py +21 -19
  55. sphinx/environment/adapters/indexentries.py +2 -2
  56. sphinx/environment/adapters/toctree.py +10 -9
  57. sphinx/environment/collectors/__init__.py +6 -3
  58. sphinx/environment/collectors/asset.py +4 -3
  59. sphinx/environment/collectors/dependencies.py +3 -2
  60. sphinx/environment/collectors/metadata.py +6 -5
  61. sphinx/environment/collectors/title.py +3 -2
  62. sphinx/environment/collectors/toctree.py +5 -4
  63. sphinx/errors.py +13 -2
  64. sphinx/events.py +14 -9
  65. sphinx/ext/apidoc.py +9 -11
  66. sphinx/ext/autodoc/__init__.py +105 -71
  67. sphinx/ext/autodoc/directive.py +7 -6
  68. sphinx/ext/autodoc/importer.py +102 -36
  69. sphinx/ext/autodoc/mock.py +7 -5
  70. sphinx/ext/autodoc/preserve_defaults.py +4 -3
  71. sphinx/ext/autodoc/type_comment.py +2 -1
  72. sphinx/ext/autodoc/typehints.py +5 -4
  73. sphinx/ext/autosectionlabel.py +3 -2
  74. sphinx/ext/autosummary/__init__.py +21 -17
  75. sphinx/ext/autosummary/generate.py +9 -9
  76. sphinx/ext/coverage.py +26 -20
  77. sphinx/ext/doctest.py +38 -33
  78. sphinx/ext/duration.py +1 -0
  79. sphinx/ext/extlinks.py +4 -3
  80. sphinx/ext/githubpages.py +3 -2
  81. sphinx/ext/graphviz.py +10 -7
  82. sphinx/ext/ifconfig.py +5 -5
  83. sphinx/ext/imgconverter.py +6 -5
  84. sphinx/ext/imgmath.py +9 -8
  85. sphinx/ext/inheritance_diagram.py +31 -31
  86. sphinx/ext/intersphinx.py +140 -23
  87. sphinx/ext/linkcode.py +3 -2
  88. sphinx/ext/mathjax.py +2 -1
  89. sphinx/ext/napoleon/__init__.py +12 -7
  90. sphinx/ext/napoleon/docstring.py +34 -32
  91. sphinx/ext/todo.py +10 -7
  92. sphinx/ext/viewcode.py +12 -11
  93. sphinx/extension.py +18 -8
  94. sphinx/highlighting.py +39 -20
  95. sphinx/io.py +17 -8
  96. sphinx/jinja2glue.py +16 -15
  97. sphinx/locale/__init__.py +30 -23
  98. sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
  99. sphinx/locale/ar/LC_MESSAGES/sphinx.po +818 -761
  100. sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
  101. sphinx/locale/bg/LC_MESSAGES/sphinx.po +811 -754
  102. sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
  103. sphinx/locale/bn/LC_MESSAGES/sphinx.po +835 -778
  104. sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
  105. sphinx/locale/ca/LC_MESSAGES/sphinx.po +864 -807
  106. sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
  107. sphinx/locale/cak/LC_MESSAGES/sphinx.po +816 -759
  108. sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
  109. sphinx/locale/cs/LC_MESSAGES/sphinx.po +837 -780
  110. sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
  111. sphinx/locale/cy/LC_MESSAGES/sphinx.po +819 -762
  112. sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
  113. sphinx/locale/da/LC_MESSAGES/sphinx.po +838 -781
  114. sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
  115. sphinx/locale/de/LC_MESSAGES/sphinx.po +838 -781
  116. sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
  117. sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +811 -754
  118. sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
  119. sphinx/locale/el/LC_MESSAGES/sphinx.po +853 -796
  120. sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
  121. sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +811 -754
  122. sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
  123. sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +811 -754
  124. sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
  125. sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +856 -799
  126. sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
  127. sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +811 -754
  128. sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
  129. sphinx/locale/eo/LC_MESSAGES/sphinx.po +820 -763
  130. sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
  131. sphinx/locale/es/LC_MESSAGES/sphinx.po +856 -799
  132. sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
  133. sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +811 -754
  134. sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
  135. sphinx/locale/et/LC_MESSAGES/sphinx.po +845 -788
  136. sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
  137. sphinx/locale/eu/LC_MESSAGES/sphinx.po +837 -780
  138. sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
  139. sphinx/locale/fa/LC_MESSAGES/sphinx.po +854 -797
  140. sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
  141. sphinx/locale/fi/LC_MESSAGES/sphinx.po +816 -759
  142. sphinx/locale/fr/LC_MESSAGES/sphinx.js +1 -1
  143. sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
  144. sphinx/locale/fr/LC_MESSAGES/sphinx.po +904 -847
  145. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
  146. sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +811 -754
  147. sphinx/locale/gl/LC_MESSAGES/sphinx.js +54 -54
  148. sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
  149. sphinx/locale/gl/LC_MESSAGES/sphinx.po +1506 -1449
  150. sphinx/locale/he/LC_MESSAGES/sphinx.js +1 -1
  151. sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
  152. sphinx/locale/he/LC_MESSAGES/sphinx.po +823 -766
  153. sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
  154. sphinx/locale/hi/LC_MESSAGES/sphinx.po +853 -796
  155. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
  156. sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +811 -754
  157. sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
  158. sphinx/locale/hr/LC_MESSAGES/sphinx.po +844 -787
  159. sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
  160. sphinx/locale/hu/LC_MESSAGES/sphinx.po +837 -780
  161. sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
  162. sphinx/locale/id/LC_MESSAGES/sphinx.po +854 -797
  163. sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
  164. sphinx/locale/is/LC_MESSAGES/sphinx.po +811 -754
  165. sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
  166. sphinx/locale/it/LC_MESSAGES/sphinx.po +837 -780
  167. sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
  168. sphinx/locale/ja/LC_MESSAGES/sphinx.po +853 -796
  169. sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
  170. sphinx/locale/ka/LC_MESSAGES/sphinx.po +848 -791
  171. sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
  172. sphinx/locale/ko/LC_MESSAGES/sphinx.po +855 -798
  173. sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
  174. sphinx/locale/lt/LC_MESSAGES/sphinx.po +837 -780
  175. sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
  176. sphinx/locale/lv/LC_MESSAGES/sphinx.po +837 -780
  177. sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
  178. sphinx/locale/mk/LC_MESSAGES/sphinx.po +825 -768
  179. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js +27 -27
  180. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
  181. sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +876 -818
  182. sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
  183. sphinx/locale/ne/LC_MESSAGES/sphinx.po +837 -780
  184. sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
  185. sphinx/locale/nl/LC_MESSAGES/sphinx.po +844 -787
  186. sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
  187. sphinx/locale/pl/LC_MESSAGES/sphinx.po +845 -788
  188. sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
  189. sphinx/locale/pt/LC_MESSAGES/sphinx.po +811 -754
  190. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
  191. sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +908 -851
  192. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
  193. sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +837 -780
  194. sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
  195. sphinx/locale/ro/LC_MESSAGES/sphinx.po +837 -780
  196. sphinx/locale/ru/LC_MESSAGES/sphinx.mo +0 -0
  197. sphinx/locale/ru/LC_MESSAGES/sphinx.po +838 -781
  198. sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
  199. sphinx/locale/si/LC_MESSAGES/sphinx.po +823 -766
  200. sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
  201. sphinx/locale/sk/LC_MESSAGES/sphinx.po +854 -797
  202. sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
  203. sphinx/locale/sl/LC_MESSAGES/sphinx.po +832 -775
  204. sphinx/locale/sphinx.pot +813 -755
  205. sphinx/locale/sq/LC_MESSAGES/sphinx.js +1 -1
  206. sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
  207. sphinx/locale/sq/LC_MESSAGES/sphinx.po +865 -808
  208. sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
  209. sphinx/locale/sr/LC_MESSAGES/sphinx.po +835 -778
  210. sphinx/locale/sr@latin/LC_MESSAGES/sphinx.mo +0 -0
  211. sphinx/locale/sr_RS/LC_MESSAGES/sphinx.mo +0 -0
  212. sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
  213. sphinx/locale/sv/LC_MESSAGES/sphinx.po +837 -780
  214. sphinx/locale/ta/LC_MESSAGES/sphinx.js +54 -54
  215. sphinx/locale/ta/LC_MESSAGES/sphinx.mo +0 -0
  216. sphinx/locale/ta/LC_MESSAGES/sphinx.po +1530 -1473
  217. sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
  218. sphinx/locale/te/LC_MESSAGES/sphinx.po +811 -754
  219. sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
  220. sphinx/locale/tr/LC_MESSAGES/sphinx.po +853 -796
  221. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
  222. sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +833 -776
  223. sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
  224. sphinx/locale/ur/LC_MESSAGES/sphinx.po +811 -754
  225. sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
  226. sphinx/locale/vi/LC_MESSAGES/sphinx.po +837 -780
  227. sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
  228. sphinx/locale/yue/LC_MESSAGES/sphinx.po +811 -754
  229. sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo +0 -0
  230. sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po +855 -798
  231. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
  232. sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +811 -754
  233. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js +1 -1
  234. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
  235. sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +879 -822
  236. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
  237. sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +811 -754
  238. sphinx/parsers.py +7 -5
  239. sphinx/project.py +18 -11
  240. sphinx/pycode/__init__.py +6 -5
  241. sphinx/pycode/ast.py +23 -8
  242. sphinx/pycode/parser.py +6 -5
  243. sphinx/registry.py +12 -6
  244. sphinx/roles.py +103 -57
  245. sphinx/search/__init__.py +17 -18
  246. sphinx/search/da.py +2 -2
  247. sphinx/search/de.py +2 -2
  248. sphinx/search/en.py +1 -1
  249. sphinx/search/es.py +2 -2
  250. sphinx/search/fi.py +2 -2
  251. sphinx/search/fr.py +2 -2
  252. sphinx/search/hu.py +2 -2
  253. sphinx/search/it.py +2 -2
  254. sphinx/search/ja.py +13 -22
  255. sphinx/search/nl.py +2 -2
  256. sphinx/search/no.py +2 -2
  257. sphinx/search/pt.py +2 -2
  258. sphinx/search/ro.py +1 -1
  259. sphinx/search/ru.py +2 -2
  260. sphinx/search/sv.py +2 -2
  261. sphinx/search/tr.py +1 -1
  262. sphinx/search/zh.py +2 -3
  263. sphinx/templates/graphviz/graphviz.css +1 -1
  264. sphinx/testing/fixtures.py +41 -24
  265. sphinx/testing/path.py +1 -1
  266. sphinx/testing/util.py +142 -53
  267. sphinx/texinputs/sphinx.xdy +1 -1
  268. sphinx/texinputs/sphinxlatextables.sty +1 -1
  269. sphinx/texinputs/sphinxpackagesubstitutefont.sty +21 -0
  270. sphinx/themes/agogo/layout.html +4 -4
  271. sphinx/themes/agogo/static/agogo.css_t +1 -1
  272. sphinx/themes/agogo/theme.toml +22 -0
  273. sphinx/themes/basic/defindex.html +1 -1
  274. sphinx/themes/basic/domainindex.html +1 -1
  275. sphinx/themes/basic/genindex-single.html +1 -1
  276. sphinx/themes/basic/genindex-split.html +1 -1
  277. sphinx/themes/basic/genindex.html +1 -1
  278. sphinx/themes/basic/globaltoc.html +1 -1
  279. sphinx/themes/basic/layout.html +1 -1
  280. sphinx/themes/basic/localtoc.html +1 -1
  281. sphinx/themes/basic/page.html +1 -1
  282. sphinx/themes/basic/relations.html +1 -1
  283. sphinx/themes/basic/search.html +5 -20
  284. sphinx/themes/basic/searchbox.html +3 -3
  285. sphinx/themes/basic/searchfield.html +3 -3
  286. sphinx/themes/basic/sourcelink.html +1 -1
  287. sphinx/themes/basic/static/basic.css_t +1 -1
  288. sphinx/themes/basic/static/doctools.js +1 -1
  289. sphinx/themes/basic/static/language_data.js_t +2 -2
  290. sphinx/themes/basic/static/searchtools.js +105 -60
  291. sphinx/themes/basic/theme.toml +23 -0
  292. sphinx/themes/bizstyle/layout.html +1 -6
  293. sphinx/themes/bizstyle/static/bizstyle.css_t +1 -1
  294. sphinx/themes/bizstyle/static/bizstyle.js_t +1 -1
  295. sphinx/themes/bizstyle/static/css3-mediaqueries_src.js +3 -3
  296. sphinx/themes/bizstyle/theme.toml +12 -0
  297. sphinx/themes/classic/layout.html +1 -1
  298. sphinx/themes/classic/static/classic.css_t +1 -1
  299. sphinx/themes/classic/static/sidebar.js_t +1 -1
  300. sphinx/themes/classic/theme.toml +34 -0
  301. sphinx/themes/default/theme.toml +2 -0
  302. sphinx/themes/epub/epub-cover.html +1 -1
  303. sphinx/themes/epub/layout.html +1 -1
  304. sphinx/themes/epub/static/epub.css_t +1 -1
  305. sphinx/themes/epub/theme.toml +10 -0
  306. sphinx/themes/haiku/layout.html +3 -3
  307. sphinx/themes/haiku/static/haiku.css_t +2 -2
  308. sphinx/themes/haiku/theme.toml +16 -0
  309. sphinx/themes/nature/static/nature.css_t +1 -1
  310. sphinx/themes/nature/theme.toml +6 -0
  311. sphinx/themes/nonav/layout.html +1 -1
  312. sphinx/themes/nonav/static/nonav.css_t +1 -1
  313. sphinx/themes/nonav/theme.toml +10 -0
  314. sphinx/themes/pyramid/static/epub.css_t +1 -1
  315. sphinx/themes/pyramid/static/pyramid.css_t +1 -1
  316. sphinx/themes/pyramid/theme.toml +6 -0
  317. sphinx/themes/scrolls/artwork/logo.svg +1 -1
  318. sphinx/themes/scrolls/layout.html +2 -2
  319. sphinx/themes/scrolls/static/scrolls.css_t +1 -1
  320. sphinx/themes/scrolls/theme.toml +15 -0
  321. sphinx/themes/sphinxdoc/static/sphinxdoc.css_t +1 -1
  322. sphinx/themes/sphinxdoc/theme.toml +6 -0
  323. sphinx/themes/traditional/static/traditional.css_t +1 -1
  324. sphinx/themes/traditional/theme.toml +9 -0
  325. sphinx/theming.py +427 -131
  326. sphinx/transforms/__init__.py +21 -24
  327. sphinx/transforms/compact_bullet_list.py +5 -5
  328. sphinx/transforms/i18n.py +30 -28
  329. sphinx/transforms/post_transforms/__init__.py +9 -7
  330. sphinx/transforms/post_transforms/code.py +4 -1
  331. sphinx/transforms/post_transforms/images.py +17 -13
  332. sphinx/transforms/references.py +3 -1
  333. sphinx/util/__init__.py +15 -11
  334. sphinx/util/_io.py +34 -0
  335. sphinx/util/_pathlib.py +23 -18
  336. sphinx/util/build_phase.py +1 -0
  337. sphinx/util/cfamily.py +19 -11
  338. sphinx/util/console.py +101 -21
  339. sphinx/util/display.py +3 -2
  340. sphinx/util/docfields.py +12 -8
  341. sphinx/util/docutils.py +21 -35
  342. sphinx/util/exceptions.py +3 -2
  343. sphinx/util/fileutil.py +5 -5
  344. sphinx/util/http_date.py +9 -2
  345. sphinx/util/i18n.py +40 -9
  346. sphinx/util/inspect.py +317 -245
  347. sphinx/util/inventory.py +22 -5
  348. sphinx/util/logging.py +81 -7
  349. sphinx/util/matching.py +2 -1
  350. sphinx/util/math.py +1 -2
  351. sphinx/util/nodes.py +39 -29
  352. sphinx/util/osutil.py +25 -6
  353. sphinx/util/parallel.py +6 -1
  354. sphinx/util/requests.py +8 -5
  355. sphinx/util/rst.py +8 -6
  356. sphinx/util/tags.py +3 -3
  357. sphinx/util/template.py +8 -3
  358. sphinx/util/typing.py +76 -42
  359. sphinx/versioning.py +6 -2
  360. sphinx/writers/html.py +1 -1
  361. sphinx/writers/html5.py +17 -13
  362. sphinx/writers/latex.py +12 -12
  363. sphinx/writers/manpage.py +13 -7
  364. sphinx/writers/texinfo.py +13 -10
  365. sphinx/writers/text.py +13 -23
  366. sphinx/writers/xml.py +1 -1
  367. sphinx-7.2.6.dist-info/LICENSE → sphinx-7.3.0.dist-info/LICENSE.rst +1 -1
  368. {sphinx-7.2.6.dist-info → sphinx-7.3.0.dist-info}/METADATA +13 -12
  369. sphinx-7.3.0.dist-info/RECORD +581 -0
  370. sphinx/domains/c.py +0 -3906
  371. sphinx/domains/cpp.py +0 -8233
  372. sphinx/domains/python.py +0 -1769
  373. sphinx/themes/agogo/theme.conf +0 -20
  374. sphinx/themes/basic/theme.conf +0 -16
  375. sphinx/themes/bizstyle/theme.conf +0 -10
  376. sphinx/themes/classic/theme.conf +0 -32
  377. sphinx/themes/default/theme.conf +0 -2
  378. sphinx/themes/epub/theme.conf +0 -8
  379. sphinx/themes/haiku/theme.conf +0 -14
  380. sphinx/themes/nature/theme.conf +0 -4
  381. sphinx/themes/nonav/theme.conf +0 -8
  382. sphinx/themes/pyramid/theme.conf +0 -4
  383. sphinx/themes/scrolls/theme.conf +0 -13
  384. sphinx/themes/sphinxdoc/theme.conf +0 -4
  385. sphinx/themes/traditional/theme.conf +0 -7
  386. sphinx-7.2.6.dist-info/RECORD +0 -569
  387. {sphinx-7.2.6.dist-info → sphinx-7.3.0.dist-info}/WHEEL +0 -0
  388. {sphinx-7.2.6.dist-info → sphinx-7.3.0.dist-info}/entry_points.txt +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  Template for the search page.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- extends "layout.html" %}
@@ -15,8 +15,9 @@
15
15
  <script src="{{ pathto('_static/language_data.js', 1) }}"></script>
16
16
  {%- endblock %}
17
17
  {% block extrahead %}
18
- <script src="{{ pathto('searchindex.js', 1) }}" defer></script>
19
- {{ super() }}
18
+ <script src="{{ pathto('searchindex.js', 1) }}" defer="defer"></script>
19
+ <meta name="robots" content="noindex" />
20
+ {{ super() }}
20
21
  {% endblock %}
21
22
  {% block body %}
22
23
  <h1 id="search-documentation">{{ _('Search') }}</h1>
@@ -44,22 +45,6 @@
44
45
  </form>
45
46
  {% endblock %}
46
47
  {% block searchresults %}
47
- {% if search_performed %}
48
- <h2>{{ _('Search Results') }}</h2>
49
- {% if not search_results %}
50
- <p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p>
51
- {% endif %}
52
- {% endif %}
53
- <div id="search-results">
54
- {% if search_results %}
55
- <ul>
56
- {% for href, caption, context in search_results %}
57
- <li><a href="{{ pathto(item.href) }}">{{ caption }}</a>
58
- <div class="context">{{ context|e }}</div>
59
- </li>
60
- {% endfor %}
61
- </ul>
62
- {% endif %}
63
- </div>
48
+ <div id="search-results"></div>
64
49
  {% endblock %}
65
50
  {% endblock %}
@@ -4,11 +4,11 @@
4
4
 
5
5
  Sphinx sidebar template: quick search box.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- if pagename != "search" and builder != "singlehtml" %}
11
- <div id="searchbox" style="display: none" role="search">
11
+ <search id="searchbox" style="display: none" role="search">
12
12
  <h3 id="searchlabel">{{ _('Quick search') }}</h3>
13
13
  <div class="searchformwrapper">
14
14
  <form class="search" action="{{ pathto('search') }}" method="get">
@@ -16,6 +16,6 @@
16
16
  <input type="submit" value="{{ _('Go') }}" />
17
17
  </form>
18
18
  </div>
19
- </div>
19
+ </search>
20
20
  <script>document.getElementById('searchbox').style.display = "block"</script>
21
21
  {%- endif %}
@@ -7,17 +7,17 @@
7
7
  extra heading ("Quick search"). Instead, it uses a placeholder text
8
8
  in the search field.
9
9
 
10
- :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
10
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
11
11
  :license: BSD, see LICENSE for details.
12
12
  #}
13
13
  {%- if pagename != "search" and builder != "singlehtml" %}
14
- <div id="searchbox" style="display: none" role="search">
14
+ <search id="searchbox" style="display: none" role="search">
15
15
  <div class="searchformwrapper">
16
16
  <form class="search" action="{{ pathto('search') }}" method="get">
17
17
  <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
18
18
  <input type="submit" value="{{ _('Go') }}" />
19
19
  </form>
20
20
  </div>
21
- </div>
21
+ </search>
22
22
  <script>document.getElementById('searchbox').style.display = "block"</script>
23
23
  {%- endif %}
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sphinx sidebar template: "show source" link.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- if show_source and has_source and sourcename %}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Sphinx stylesheet -- basic theme.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Base JavaScript utilities for all Sphinx HTML documentation.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -5,7 +5,7 @@
5
5
  * This script contains the language-specific data used by searchtools.js,
6
6
  * namely the list of stopwords, stemmer, scorer and splitter.
7
7
  *
8
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
8
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
9
9
  * :license: BSD, see LICENSE for details.
10
10
  *
11
11
  */
@@ -13,7 +13,7 @@
13
13
  var stopwords = {{ search_language_stop_words }};
14
14
 
15
15
  {% if search_language_stemming_code %}
16
- /* Non-minified version is copied as a separate JS file, is available */
16
+ /* Non-minified version is copied as a separate JS file, if available */
17
17
  {{ search_language_stemming_code|safe }}
18
18
  {% endif -%}
19
19
 
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Sphinx JavaScript utilities for the full-text search.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -99,7 +99,7 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
99
99
  .then((data) => {
100
100
  if (data)
101
101
  listItem.appendChild(
102
- Search.makeSearchSummary(data, searchTerms)
102
+ Search.makeSearchSummary(data, searchTerms, anchor)
103
103
  );
104
104
  // highlight search terms in the summary
105
105
  if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
@@ -116,8 +116,8 @@ const _finishSearch = (resultCount) => {
116
116
  );
117
117
  else
118
118
  Search.status.innerText = _(
119
- `Search finished, found ${resultCount} page(s) matching the search query.`
120
- );
119
+ "Search finished, found ${resultCount} page(s) matching the search query."
120
+ ).replace('${resultCount}', resultCount);
121
121
  };
122
122
  const _displayNextItem = (
123
123
  results,
@@ -137,6 +137,22 @@ const _displayNextItem = (
137
137
  // search finished, update title and status message
138
138
  else _finishSearch(resultCount);
139
139
  };
140
+ // Helper function used by query() to order search results.
141
+ // Each input is an array of [docname, title, anchor, descr, score, filename].
142
+ // Order the results by score (in opposite order of appearance, since the
143
+ // `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
144
+ const _orderResultsByScoreThenName = (a, b) => {
145
+ const leftScore = a[4];
146
+ const rightScore = b[4];
147
+ if (leftScore === rightScore) {
148
+ // same score: sort alphabetically
149
+ const leftTitle = a[1].toLowerCase();
150
+ const rightTitle = b[1].toLowerCase();
151
+ if (leftTitle === rightTitle) return 0;
152
+ return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
153
+ }
154
+ return leftScore > rightScore ? 1 : -1;
155
+ };
140
156
 
141
157
  /**
142
158
  * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
@@ -160,13 +176,26 @@ const Search = {
160
176
  _queued_query: null,
161
177
  _pulse_status: -1,
162
178
 
163
- htmlToText: (htmlString) => {
179
+ htmlToText: (htmlString, anchor) => {
164
180
  const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
165
- htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
181
+ for (const removalQuery of [".headerlinks", "script", "style"]) {
182
+ htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
183
+ }
184
+ if (anchor) {
185
+ const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
186
+ if (anchorContent) return anchorContent.textContent;
187
+
188
+ console.warn(
189
+ `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
190
+ );
191
+ }
192
+
193
+ // if anchor not specified or not found, fall back to main content
166
194
  const docContent = htmlElement.querySelector('[role="main"]');
167
- if (docContent !== undefined) return docContent.textContent;
195
+ if (docContent) return docContent.textContent;
196
+
168
197
  console.warn(
169
- "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
198
+ "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
170
199
  );
171
200
  return "";
172
201
  },
@@ -239,16 +268,7 @@ const Search = {
239
268
  else Search.deferQuery(query);
240
269
  },
241
270
 
242
- /**
243
- * execute search (requires search index to be loaded)
244
- */
245
- query: (query) => {
246
- const filenames = Search._index.filenames;
247
- const docNames = Search._index.docnames;
248
- const titles = Search._index.titles;
249
- const allTitles = Search._index.alltitles;
250
- const indexEntries = Search._index.indexentries;
251
-
271
+ _parseQuery: (query) => {
252
272
  // stem the search terms and add them to the correct list
253
273
  const stemmer = new Stemmer();
254
274
  const searchTerms = new Set();
@@ -284,16 +304,32 @@ const Search = {
284
304
  // console.info("required: ", [...searchTerms]);
285
305
  // console.info("excluded: ", [...excludedTerms]);
286
306
 
287
- // array of [docname, title, anchor, descr, score, filename]
288
- let results = [];
307
+ return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
308
+ },
309
+
310
+ /**
311
+ * execute search (requires search index to be loaded)
312
+ */
313
+ _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
314
+ const filenames = Search._index.filenames;
315
+ const docNames = Search._index.docnames;
316
+ const titles = Search._index.titles;
317
+ const allTitles = Search._index.alltitles;
318
+ const indexEntries = Search._index.indexentries;
319
+
320
+ // Collect multiple result groups to be sorted separately and then ordered.
321
+ // Each is an array of [docname, title, anchor, descr, score, filename].
322
+ const normalResults = [];
323
+ const nonMainIndexResults = [];
324
+
289
325
  _removeChildren(document.getElementById("search-progress"));
290
326
 
291
- const queryLower = query.toLowerCase();
327
+ const queryLower = query.toLowerCase().trim();
292
328
  for (const [title, foundTitles] of Object.entries(allTitles)) {
293
- if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
329
+ if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
294
330
  for (const [file, id] of foundTitles) {
295
331
  let score = Math.round(100 * queryLower.length / title.length)
296
- results.push([
332
+ normalResults.push([
297
333
  docNames[file],
298
334
  titles[file] !== title ? `${titles[file]} > ${title}` : title,
299
335
  id !== null ? "#" + id : "",
@@ -308,46 +344,47 @@ const Search = {
308
344
  // search for explicit entries in index directives
309
345
  for (const [entry, foundEntries] of Object.entries(indexEntries)) {
310
346
  if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
311
- for (const [file, id] of foundEntries) {
312
- let score = Math.round(100 * queryLower.length / entry.length)
313
- results.push([
347
+ for (const [file, id, isMain] of foundEntries) {
348
+ const score = Math.round(100 * queryLower.length / entry.length);
349
+ const result = [
314
350
  docNames[file],
315
351
  titles[file],
316
352
  id ? "#" + id : "",
317
353
  null,
318
354
  score,
319
355
  filenames[file],
320
- ]);
356
+ ];
357
+ if (isMain) {
358
+ normalResults.push(result);
359
+ } else {
360
+ nonMainIndexResults.push(result);
361
+ }
321
362
  }
322
363
  }
323
364
  }
324
365
 
325
366
  // lookup as object
326
367
  objectTerms.forEach((term) =>
327
- results.push(...Search.performObjectSearch(term, objectTerms))
368
+ normalResults.push(...Search.performObjectSearch(term, objectTerms))
328
369
  );
329
370
 
330
371
  // lookup as search terms in fulltext
331
- results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
372
+ normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
332
373
 
333
374
  // let the scorer override scores with a custom scoring function
334
- if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
335
-
336
- // now sort the results by score (in opposite order of appearance, since the
337
- // display function below uses pop() to retrieve items) and then
338
- // alphabetically
339
- results.sort((a, b) => {
340
- const leftScore = a[4];
341
- const rightScore = b[4];
342
- if (leftScore === rightScore) {
343
- // same score: sort alphabetically
344
- const leftTitle = a[1].toLowerCase();
345
- const rightTitle = b[1].toLowerCase();
346
- if (leftTitle === rightTitle) return 0;
347
- return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
348
- }
349
- return leftScore > rightScore ? 1 : -1;
350
- });
375
+ if (Scorer.score) {
376
+ normalResults.forEach((item) => (item[4] = Scorer.score(item)));
377
+ nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
378
+ }
379
+
380
+ // Sort each group of results by score and then alphabetically by name.
381
+ normalResults.sort(_orderResultsByScoreThenName);
382
+ nonMainIndexResults.sort(_orderResultsByScoreThenName);
383
+
384
+ // Combine the result groups in (reverse) order.
385
+ // Non-main index entries are typically arbitrary cross-references,
386
+ // so display them after other results.
387
+ let results = [...nonMainIndexResults, ...normalResults];
351
388
 
352
389
  // remove duplicate search results
353
390
  // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
@@ -361,7 +398,12 @@ const Search = {
361
398
  return acc;
362
399
  }, []);
363
400
 
364
- results = results.reverse();
401
+ return results.reverse();
402
+ },
403
+
404
+ query: (query) => {
405
+ const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
406
+ const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
365
407
 
366
408
  // for debugging
367
409
  //Search.lastresults = results.slice(); // a copy
@@ -466,14 +508,18 @@ const Search = {
466
508
  // add support for partial matches
467
509
  if (word.length > 2) {
468
510
  const escapedWord = _escapeRegExp(word);
469
- Object.keys(terms).forEach((term) => {
470
- if (term.match(escapedWord) && !terms[word])
471
- arr.push({ files: terms[term], score: Scorer.partialTerm });
472
- });
473
- Object.keys(titleTerms).forEach((term) => {
474
- if (term.match(escapedWord) && !titleTerms[word])
475
- arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
476
- });
511
+ if (!terms.hasOwnProperty(word)) {
512
+ Object.keys(terms).forEach((term) => {
513
+ if (term.match(escapedWord))
514
+ arr.push({ files: terms[term], score: Scorer.partialTerm });
515
+ });
516
+ }
517
+ if (!titleTerms.hasOwnProperty(word)) {
518
+ Object.keys(titleTerms).forEach((term) => {
519
+ if (term.match(escapedWord))
520
+ arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
521
+ });
522
+ }
477
523
  }
478
524
 
479
525
  // no match but word was a required one
@@ -496,9 +542,8 @@ const Search = {
496
542
 
497
543
  // create the mapping
498
544
  files.forEach((file) => {
499
- if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
500
- fileMap.get(file).push(word);
501
- else fileMap.set(file, [word]);
545
+ if (!fileMap.has(file)) fileMap.set(file, [word]);
546
+ else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
502
547
  });
503
548
  });
504
549
 
@@ -549,8 +594,8 @@ const Search = {
549
594
  * search summary for a given text. keywords is a list
550
595
  * of stemmed words.
551
596
  */
552
- makeSearchSummary: (htmlText, keywords) => {
553
- const text = Search.htmlToText(htmlText);
597
+ makeSearchSummary: (htmlText, keywords, anchor) => {
598
+ const text = Search.htmlToText(htmlText, anchor);
554
599
  if (text === "") return null;
555
600
 
556
601
  const textLower = text.toLowerCase();
@@ -0,0 +1,23 @@
1
+ [theme]
2
+ inherit = "none"
3
+ stylesheets = [
4
+ "basic.css",
5
+ ]
6
+ sidebars = [
7
+ "localtoc.html",
8
+ "relations.html",
9
+ "sourcelink.html",
10
+ "searchbox.html",
11
+ ]
12
+ pygments_style = { default = "none" }
13
+
14
+ [options]
15
+ nosidebar = "false"
16
+ sidebarwidth = "230"
17
+ body_min_width = "360"
18
+ body_max_width = "800"
19
+ navigation_with_keys = "False"
20
+ enable_search_shortcuts = "True"
21
+ globaltoc_collapse = "true"
22
+ globaltoc_includehidden = "false"
23
+ globaltoc_maxdepth = ""
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sphinx layout template for the bizstyle theme.
6
6
 
7
- :copyright: Copyright 2007-2023 by Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {% extends "basic/layout.html" %}
@@ -14,11 +14,6 @@
14
14
  <script src="{{ pathto('_static/bizstyle.js', 1) }}"></script>
15
15
  {%- endblock %}
16
16
 
17
- {# doctype override #}
18
- {%- block doctype %}
19
- <!doctype html>
20
- {%- endblock %}
21
-
22
17
  {%- block extrahead %}
23
18
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
24
19
  <!--[if lt IE 9]>
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Sphinx stylesheet -- business style theme.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -6,7 +6,7 @@
6
6
  //
7
7
  // This theme was created by referring to 'sphinxdoc'
8
8
  //
9
- // :copyright: Copyright 2007-2023 by Sphinx team, see AUTHORS.
9
+ // :copyright: Copyright 2007-2024 by Sphinx team, see AUTHORS.
10
10
  // :license: BSD, see LICENSE for details.
11
11
  //
12
12
  const initialiseBizStyle = () => {
@@ -4,15 +4,15 @@ css3-mediaqueries.js - CSS Helper and CSS3 Media Queries Enabler
4
4
  author: Wouter van der Graaf <wouter at dynora nl>
5
5
  version: 1.0 (20110330)
6
6
  license: MIT
7
- website: http://code.google.com/p/css3-mediaqueries-js/
7
+ website: https://code.google.com/p/css3-mediaqueries-js/
8
8
 
9
- W3C spec: http://www.w3.org/TR/css3-mediaqueries/
9
+ W3C spec: https://www.w3.org/TR/css3-mediaqueries/
10
10
 
11
11
  Note: use of embedded <style> is not recommended when using media queries, because IE has no way of returning the raw literal css text from a <style> element.
12
12
  */
13
13
 
14
14
 
15
- // true prototypal inheritance (http://javascript.crockford.com/prototypal.html)
15
+ // true prototypal inheritance (https://javascript.crockford.com/prototypal.html)
16
16
  if (typeof Object.create !== 'function') {
17
17
  Object.create = function (o) {
18
18
  function F() {}
@@ -0,0 +1,12 @@
1
+ [theme]
2
+ inherit = "basic"
3
+ stylesheets = [
4
+ "bizstyle.css",
5
+ ]
6
+ pygments_style = { default = "friendly" }
7
+
8
+ [options]
9
+ rightsidebar = "false"
10
+ sidebarwidth = "210"
11
+
12
+ maincolor = "#336699"
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sphinx layout template for the classic theme.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- extends "basic/layout.html" %}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Sphinx stylesheet -- classic theme.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -16,7 +16,7 @@
16
16
  * Once the browser is closed the cookie is deleted and the position
17
17
  * reset to the default (expanded).
18
18
  *
19
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
19
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
20
20
  * :license: BSD, see LICENSE for details.
21
21
  *
22
22
  */
@@ -0,0 +1,34 @@
1
+ [theme]
2
+ inherit = "basic"
3
+ stylesheets = [
4
+ "classic.css",
5
+ ]
6
+ pygments_style = { default = "sphinx" }
7
+
8
+ [options]
9
+ rightsidebar = "false"
10
+ stickysidebar = "false"
11
+ collapsiblesidebar = "false"
12
+ externalrefs = "false"
13
+
14
+ footerbgcolor = "#11303d"
15
+ footertextcolor = "#ffffff"
16
+ sidebarbgcolor = "#1c4e63"
17
+ sidebarbtncolor = "#3c6e83"
18
+ sidebartextcolor = "#ffffff"
19
+ sidebarlinkcolor = "#98dbcc"
20
+ relbarbgcolor = "#133f52"
21
+ relbartextcolor = "#ffffff"
22
+ relbarlinkcolor = "#ffffff"
23
+ bgcolor = "#ffffff"
24
+ textcolor = "#000000"
25
+ headbgcolor = "#f2f2f2"
26
+ headtextcolor = "#20435c"
27
+ headlinkcolor = "#c60f0f"
28
+ linkcolor = "#355f7c"
29
+ visitedlinkcolor = "#551a8b"
30
+ codebgcolor = "unset"
31
+ codetextcolor = "unset"
32
+
33
+ bodyfont = "sans-serif"
34
+ headfont = "'Trebuchet MS', sans-serif"
@@ -0,0 +1,2 @@
1
+ [theme]
2
+ inherit = "classic"
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sample template for the html cover page.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- extends "layout.html" %}
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sphinx layout template for the epub theme.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- extends "basic/layout.html" %}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Sphinx stylesheet -- epub theme.
6
6
  *
7
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
@@ -0,0 +1,10 @@
1
+ [theme]
2
+ inherit = "basic"
3
+ stylesheets = [
4
+ "epub.css",
5
+ ]
6
+ pygments_style = { default = "none" }
7
+
8
+ [options]
9
+ relbar1 = "true"
10
+ footer = "true"
@@ -4,7 +4,7 @@
4
4
 
5
5
  Sphinx layout template for the haiku theme.
6
6
 
7
- :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
7
+ :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  #}
10
10
  {%- extends "basic/layout.html" %}
@@ -35,14 +35,14 @@
35
35
  <div class="header" role="banner">
36
36
  {%- block haikuheader %}
37
37
  {%- if theme_full_logo != "false" %}
38
- <a href="{{ pathto('index') }}">
38
+ <a href="{{ pathto(root_doc)|e }}">
39
39
  <img class="logo" src="{{ logo_url|e }}" alt="Logo"/>
40
40
  </a>
41
41
  {%- else %}
42
42
  {%- if logo -%}
43
43
  <img class="rightlogo" src="{{ logo_url|e }}" alt="Logo"/>
44
44
  {%- endif -%}
45
- <h1 class="heading"><a href="{{ pathto('index') }}">
45
+ <h1 class="heading"><a href="{{ pathto(root_doc)|e }}">
46
46
  <span>{{ shorttitle|e }}</span></a></h1>
47
47
  <h2 class="heading"><span>{{ title|striptags|e }}</span></h2>
48
48
  {%- endif %}