Sphinx 8.0.1__py3-none-any.whl → 8.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Sphinx might be problematic. Click here for more details.
- sphinx/__init__.py +6 -3
- sphinx/_cli/__init__.py +40 -20
- sphinx/_cli/util/colour.py +5 -4
- sphinx/_cli/util/errors.py +28 -11
- sphinx/application.py +361 -38
- sphinx/builders/__init__.py +229 -83
- sphinx/builders/_epub_base.py +118 -71
- sphinx/builders/changes.py +39 -21
- sphinx/builders/dirhtml.py +4 -4
- sphinx/builders/dummy.py +2 -5
- sphinx/builders/epub3.py +43 -22
- sphinx/builders/gettext.py +43 -25
- sphinx/builders/html/__init__.py +284 -218
- sphinx/builders/html/_assets.py +62 -26
- sphinx/builders/html/_build_info.py +76 -0
- sphinx/builders/html/transforms.py +11 -9
- sphinx/builders/latex/__init__.py +139 -81
- sphinx/builders/latex/constants.py +7 -7
- sphinx/builders/latex/nodes.py +3 -2
- sphinx/builders/latex/theming.py +7 -5
- sphinx/builders/latex/transforms.py +27 -19
- sphinx/builders/linkcheck.py +146 -72
- sphinx/builders/manpage.py +30 -13
- sphinx/builders/singlehtml.py +22 -14
- sphinx/builders/texinfo.py +67 -37
- sphinx/builders/text.py +5 -5
- sphinx/builders/xml.py +6 -9
- sphinx/cmd/build.py +282 -103
- sphinx/cmd/make_mode.py +106 -63
- sphinx/cmd/quickstart.py +341 -145
- sphinx/config.py +45 -12
- sphinx/deprecation.py +8 -2
- sphinx/directives/__init__.py +28 -19
- sphinx/directives/code.py +86 -56
- sphinx/directives/other.py +50 -36
- sphinx/directives/patches.py +29 -19
- sphinx/domains/__init__.py +20 -120
- sphinx/domains/_domains_container.py +281 -0
- sphinx/domains/_index.py +110 -0
- sphinx/domains/c/__init__.py +3 -3
- sphinx/domains/c/_parser.py +10 -6
- sphinx/domains/changeset.py +5 -3
- sphinx/domains/citation.py +5 -3
- sphinx/domains/cpp/__init__.py +9 -11
- sphinx/domains/cpp/_parser.py +8 -7
- sphinx/domains/index.py +3 -3
- sphinx/domains/javascript.py +12 -7
- sphinx/domains/math.py +2 -2
- sphinx/domains/python/__init__.py +10 -5
- sphinx/domains/python/_object.py +1 -1
- sphinx/domains/rst.py +5 -5
- sphinx/domains/std/__init__.py +16 -11
- sphinx/environment/__init__.py +206 -146
- sphinx/environment/adapters/asset.py +3 -2
- sphinx/environment/adapters/indexentries.py +74 -33
- sphinx/environment/adapters/toctree.py +100 -43
- sphinx/environment/collectors/__init__.py +19 -8
- sphinx/environment/collectors/asset.py +47 -15
- sphinx/environment/collectors/dependencies.py +8 -4
- sphinx/environment/collectors/metadata.py +7 -2
- sphinx/environment/collectors/title.py +7 -2
- sphinx/environment/collectors/toctree.py +54 -22
- sphinx/errors.py +4 -1
- sphinx/events.py +314 -7
- sphinx/ext/apidoc.py +42 -18
- sphinx/ext/autodoc/__init__.py +52 -24
- sphinx/ext/autodoc/importer.py +6 -9
- sphinx/ext/autosectionlabel.py +1 -2
- sphinx/ext/autosummary/__init__.py +3 -1
- sphinx/ext/autosummary/generate.py +28 -14
- sphinx/ext/coverage.py +7 -7
- sphinx/ext/doctest.py +4 -8
- sphinx/ext/duration.py +6 -5
- sphinx/ext/inheritance_diagram.py +1 -1
- sphinx/ext/intersphinx/_cli.py +6 -4
- sphinx/ext/intersphinx/_load.py +77 -32
- sphinx/ext/intersphinx/_resolve.py +173 -79
- sphinx/ext/intersphinx/_shared.py +7 -5
- sphinx/ext/linkcode.py +7 -1
- sphinx/ext/mathjax.py +1 -2
- sphinx/ext/napoleon/__init__.py +37 -24
- sphinx/ext/napoleon/docstring.py +202 -134
- sphinx/ext/todo.py +5 -3
- sphinx/highlighting.py +10 -3
- sphinx/io.py +1 -1
- sphinx/jinja2glue.py +27 -6
- sphinx/locale/__init__.py +6 -2
- sphinx/locale/ar/LC_MESSAGES/sphinx.js +8 -1
- sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ar/LC_MESSAGES/sphinx.po +2246 -2288
- sphinx/locale/bg/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bg/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/bn/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bn/LC_MESSAGES/sphinx.po +2349 -2395
- sphinx/locale/ca/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ca/LC_MESSAGES/sphinx.po +2846 -2892
- sphinx/locale/cak/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cak/LC_MESSAGES/sphinx.po +2213 -2259
- sphinx/locale/cs/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cs/LC_MESSAGES/sphinx.po +2225 -2269
- sphinx/locale/cy/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cy/LC_MESSAGES/sphinx.po +2403 -2447
- sphinx/locale/da/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/da/LC_MESSAGES/sphinx.po +2214 -2260
- sphinx/locale/de/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de/LC_MESSAGES/sphinx.po +2230 -2276
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/el/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/el/LC_MESSAGES/sphinx.po +2619 -2665
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +2519 -2565
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/eo/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eo/LC_MESSAGES/sphinx.po +2232 -2278
- sphinx/locale/es/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es/LC_MESSAGES/sphinx.po +2516 -2561
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +2114 -2159
- sphinx/locale/et/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/et/LC_MESSAGES/sphinx.po +2317 -2363
- sphinx/locale/eu/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eu/LC_MESSAGES/sphinx.po +2218 -2264
- sphinx/locale/fa/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fa/LC_MESSAGES/sphinx.po +2505 -2551
- sphinx/locale/fi/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fi/LC_MESSAGES/sphinx.po +2303 -2349
- sphinx/locale/fr/LC_MESSAGES/sphinx.js +6 -2
- sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr/LC_MESSAGES/sphinx.po +2863 -2908
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +2114 -2159
- sphinx/locale/gl/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/gl/LC_MESSAGES/sphinx.po +2571 -2617
- sphinx/locale/he/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/he/LC_MESSAGES/sphinx.po +2307 -2352
- sphinx/locale/hi/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi/LC_MESSAGES/sphinx.po +2580 -2626
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/hr/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hr/LC_MESSAGES/sphinx.po +2238 -2283
- sphinx/locale/hu/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hu/LC_MESSAGES/sphinx.po +2228 -2274
- sphinx/locale/id/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/id/LC_MESSAGES/sphinx.po +2787 -2834
- sphinx/locale/is/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/is/LC_MESSAGES/sphinx.po +2224 -2270
- sphinx/locale/it/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/it/LC_MESSAGES/sphinx.po +2231 -2276
- sphinx/locale/ja/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ja/LC_MESSAGES/sphinx.po +2507 -2554
- sphinx/locale/ka/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ka/LC_MESSAGES/sphinx.po +2428 -2474
- sphinx/locale/ko/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ko/LC_MESSAGES/sphinx.po +2516 -2563
- sphinx/locale/lt/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lt/LC_MESSAGES/sphinx.po +2425 -2469
- sphinx/locale/lv/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lv/LC_MESSAGES/sphinx.po +2362 -2407
- sphinx/locale/mk/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/mk/LC_MESSAGES/sphinx.po +2121 -2167
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +2220 -2266
- sphinx/locale/ne/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ne/LC_MESSAGES/sphinx.po +2221 -2267
- sphinx/locale/nl/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nl/LC_MESSAGES/sphinx.po +2240 -2286
- sphinx/locale/pl/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pl/LC_MESSAGES/sphinx.po +2319 -2363
- sphinx/locale/pt/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt/LC_MESSAGES/sphinx.po +2114 -2159
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +2854 -2899
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +2224 -2269
- sphinx/locale/ro/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ro/LC_MESSAGES/sphinx.po +2226 -2271
- sphinx/locale/ru/LC_MESSAGES/sphinx.js +8 -3
- sphinx/locale/ru/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ru/LC_MESSAGES/sphinx.po +2841 -2885
- sphinx/locale/si/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/si/LC_MESSAGES/sphinx.po +2294 -2340
- sphinx/locale/sk/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sk/LC_MESSAGES/sphinx.po +2497 -2541
- sphinx/locale/sl/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sl/LC_MESSAGES/sphinx.po +2331 -2375
- sphinx/locale/sphinx.pot +2121 -2167
- sphinx/locale/sq/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sq/LC_MESSAGES/sphinx.po +2855 -2901
- sphinx/locale/sr/LC_MESSAGES/sphinx.js +5 -1
- sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sr/LC_MESSAGES/sphinx.po +2203 -2248
- sphinx/locale/sr@latin/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sr_RS/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sv/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sv/LC_MESSAGES/sphinx.po +2423 -2469
- sphinx/locale/te/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/te/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/tr/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/tr/LC_MESSAGES/sphinx.po +2443 -2489
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js +6 -1
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +2329 -2373
- sphinx/locale/ur/LC_MESSAGES/sphinx.js +4 -1
- sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ur/LC_MESSAGES/sphinx.po +2113 -2159
- sphinx/locale/vi/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/vi/LC_MESSAGES/sphinx.po +2199 -2246
- sphinx/locale/yue/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/yue/LC_MESSAGES/sphinx.po +2112 -2159
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +2112 -2159
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +2845 -2892
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.js +3 -1
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +2112 -2159
- sphinx/parsers.py +3 -1
- sphinx/project.py +6 -2
- sphinx/pycode/__init__.py +11 -4
- sphinx/pycode/ast.py +58 -58
- sphinx/pycode/parser.py +49 -28
- sphinx/pygments_styles.py +49 -49
- sphinx/registry.py +8 -3
- sphinx/roles.py +133 -13
- sphinx/search/__init__.py +146 -87
- sphinx/search/da.py +2 -4
- sphinx/search/de.py +2 -4
- sphinx/search/en.py +4 -4
- sphinx/search/es.py +2 -4
- sphinx/search/fi.py +2 -4
- sphinx/search/fr.py +2 -4
- sphinx/search/hu.py +2 -4
- sphinx/search/it.py +2 -4
- sphinx/search/ja.py +55 -32
- sphinx/search/nl.py +2 -4
- sphinx/search/no.py +2 -4
- sphinx/search/pt.py +2 -4
- sphinx/search/ro.py +0 -2
- sphinx/search/ru.py +2 -4
- sphinx/search/sv.py +2 -4
- sphinx/search/tr.py +0 -2
- sphinx/search/zh.py +18 -13
- sphinx/templates/graphviz/graphviz.css +0 -7
- sphinx/testing/fixtures.py +6 -5
- sphinx/testing/path.py +7 -5
- sphinx/testing/util.py +63 -29
- sphinx/texinputs/sphinx.sty +107 -39
- sphinx/texinputs/sphinxlatexadmonitions.sty +51 -35
- sphinx/texinputs/sphinxlatexcontainers.sty +1 -1
- sphinx/texinputs/sphinxlatexgraphics.sty +3 -2
- sphinx/texinputs/sphinxlatexindbibtoc.sty +1 -1
- sphinx/texinputs/sphinxlatexlists.sty +1 -1
- sphinx/texinputs/sphinxlatexliterals.sty +4 -1
- sphinx/texinputs/sphinxlatexnumfig.sty +22 -9
- sphinx/texinputs/sphinxlatexobjects.sty +1 -1
- sphinx/texinputs/sphinxlatexshadowbox.sty +72 -10
- sphinx/texinputs/sphinxlatexstyleheadings.sty +7 -2
- sphinx/texinputs/sphinxlatexstylepage.sty +2 -8
- sphinx/texinputs/sphinxlatexstyletext.sty +2 -4
- sphinx/texinputs/sphinxlatextables.sty +1 -1
- sphinx/texinputs/sphinxoptionsgeometry.sty +1 -1
- sphinx/texinputs/sphinxoptionshyperref.sty +1 -1
- sphinx/themes/agogo/layout.html +1 -10
- sphinx/themes/agogo/static/agogo.css.jinja +0 -7
- sphinx/themes/basic/defindex.html +1 -8
- sphinx/themes/basic/domainindex.html +1 -9
- sphinx/themes/basic/genindex-single.html +1 -9
- sphinx/themes/basic/genindex-split.html +1 -9
- sphinx/themes/basic/genindex.html +1 -9
- sphinx/themes/basic/globaltoc.html +1 -9
- sphinx/themes/basic/layout.html +1 -9
- sphinx/themes/basic/localtoc.html +1 -9
- sphinx/themes/basic/page.html +1 -9
- sphinx/themes/basic/relations.html +1 -9
- sphinx/themes/basic/search.html +1 -9
- sphinx/themes/basic/searchbox.html +1 -9
- sphinx/themes/basic/searchfield.html +4 -10
- sphinx/themes/basic/sourcelink.html +1 -9
- sphinx/themes/basic/static/basic.css.jinja +2 -13
- sphinx/themes/basic/static/doctools.js +0 -7
- sphinx/themes/basic/static/language_data.js.jinja +0 -7
- sphinx/themes/basic/static/searchtools.js +25 -13
- sphinx/themes/bizstyle/layout.html +1 -9
- sphinx/themes/bizstyle/static/bizstyle.css.jinja +0 -7
- sphinx/themes/bizstyle/static/bizstyle.js.jinja +5 -11
- sphinx/themes/classic/layout.html +1 -9
- sphinx/themes/classic/static/classic.css.jinja +0 -7
- sphinx/themes/classic/static/sidebar.js.jinja +0 -6
- sphinx/themes/epub/epub-cover.html +1 -9
- sphinx/themes/epub/layout.html +1 -9
- sphinx/themes/epub/static/epub.css.jinja +0 -7
- sphinx/themes/haiku/layout.html +1 -9
- sphinx/themes/haiku/static/haiku.css.jinja +0 -6
- sphinx/themes/nature/static/nature.css.jinja +0 -7
- sphinx/themes/nonav/layout.html +1 -9
- sphinx/themes/nonav/static/nonav.css.jinja +0 -7
- sphinx/themes/pyramid/static/epub.css.jinja +0 -7
- sphinx/themes/pyramid/static/pyramid.css.jinja +0 -7
- sphinx/themes/scrolls/layout.html +1 -10
- sphinx/themes/scrolls/static/scrolls.css.jinja +0 -7
- sphinx/themes/sphinxdoc/static/sphinxdoc.css.jinja +2 -7
- sphinx/themes/traditional/static/traditional.css.jinja +0 -7
- sphinx/theming.py +18 -6
- sphinx/transforms/__init__.py +56 -35
- sphinx/transforms/compact_bullet_list.py +3 -2
- sphinx/transforms/i18n.py +132 -50
- sphinx/transforms/post_transforms/__init__.py +94 -43
- sphinx/transforms/post_transforms/code.py +7 -6
- sphinx/transforms/post_transforms/images.py +71 -54
- sphinx/transforms/references.py +1 -2
- sphinx/util/__init__.py +23 -194
- sphinx/util/_files.py +80 -0
- sphinx/util/_importer.py +27 -0
- sphinx/util/_io.py +1 -2
- sphinx/util/_lines.py +26 -0
- sphinx/util/_pathlib.py +5 -2
- sphinx/util/_serialise.py +53 -0
- sphinx/util/_timestamps.py +2 -1
- sphinx/util/_uri.py +16 -0
- sphinx/util/cfamily.py +48 -25
- sphinx/util/console.py +1 -0
- sphinx/util/display.py +1 -1
- sphinx/util/docfields.py +125 -45
- sphinx/util/docstrings.py +1 -1
- sphinx/util/docutils.py +118 -44
- sphinx/util/exceptions.py +11 -5
- sphinx/util/fileutil.py +53 -32
- sphinx/util/http_date.py +9 -7
- sphinx/util/i18n.py +49 -16
- sphinx/util/images.py +7 -6
- sphinx/util/inspect.py +29 -12
- sphinx/util/inventory.py +47 -29
- sphinx/util/logging.py +58 -85
- sphinx/util/matching.py +3 -3
- sphinx/util/math.py +1 -1
- sphinx/util/nodes.py +176 -108
- sphinx/util/osutil.py +13 -10
- sphinx/util/parallel.py +5 -4
- sphinx/util/parsing.py +5 -3
- sphinx/util/png.py +3 -3
- sphinx/util/requests.py +8 -4
- sphinx/util/rst.py +5 -3
- sphinx/util/tags.py +5 -2
- sphinx/util/template.py +26 -11
- sphinx/util/texescape.py +2 -2
- sphinx/util/typing.py +89 -38
- sphinx/versioning.py +3 -1
- sphinx/writers/html.py +22 -7
- sphinx/writers/html5.py +113 -64
- sphinx/writers/latex.py +408 -221
- sphinx/writers/manpage.py +25 -15
- sphinx/writers/texinfo.py +94 -82
- sphinx/writers/text.py +87 -53
- sphinx/writers/xml.py +5 -4
- sphinx-8.1.0.dist-info/LICENSE.rst +31 -0
- {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/METADATA +13 -11
- sphinx-8.1.0.dist-info/RECORD +598 -0
- sphinx-8.0.1.dist-info/LICENSE.rst +0 -67
- sphinx-8.0.1.dist-info/RECORD +0 -590
- {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/WHEEL +0 -0
- {sphinx-8.0.1.dist-info → sphinx-8.1.0.dist-info}/entry_points.txt +0 -0
sphinx/builders/texinfo.py
CHANGED
|
@@ -25,7 +25,7 @@ from sphinx.util.osutil import SEP, copyfile, ensuredir, make_filename_from_proj
|
|
|
25
25
|
from sphinx.writers.texinfo import TexinfoTranslator, TexinfoWriter
|
|
26
26
|
|
|
27
27
|
if TYPE_CHECKING:
|
|
28
|
-
from collections.abc import Iterable
|
|
28
|
+
from collections.abc import Iterable, Set
|
|
29
29
|
|
|
30
30
|
from docutils.nodes import Node
|
|
31
31
|
|
|
@@ -46,12 +46,13 @@ class TexinfoBuilder(Builder):
|
|
|
46
46
|
format = 'texinfo'
|
|
47
47
|
epilog = __('The Texinfo files are in %(outdir)s.')
|
|
48
48
|
if os.name == 'posix':
|
|
49
|
-
epilog += __(
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
epilog += __(
|
|
50
|
+
"\nRun 'make' in that directory to run these through "
|
|
51
|
+
'makeinfo\n'
|
|
52
|
+
"(use 'make info' here to do that automatically)."
|
|
53
|
+
)
|
|
52
54
|
|
|
53
|
-
supported_image_types = ['image/png', 'image/jpeg',
|
|
54
|
-
'image/gif']
|
|
55
|
+
supported_image_types = ['image/png', 'image/jpeg', 'image/gif']
|
|
55
56
|
default_translator_class = TexinfoTranslator
|
|
56
57
|
|
|
57
58
|
def init(self) -> None:
|
|
@@ -70,28 +71,34 @@ class TexinfoBuilder(Builder):
|
|
|
70
71
|
# ignore source path
|
|
71
72
|
return self.get_target_uri(to, typ)
|
|
72
73
|
|
|
73
|
-
def
|
|
74
|
+
def prepare_writing(self, _docnames: Set[str]) -> None:
|
|
74
75
|
preliminary_document_data = [list(x) for x in self.config.texinfo_documents]
|
|
75
76
|
if not preliminary_document_data:
|
|
76
|
-
logger.warning(
|
|
77
|
-
|
|
77
|
+
logger.warning(
|
|
78
|
+
__(
|
|
79
|
+
'no "texinfo_documents" config value found; no documents '
|
|
80
|
+
'will be written'
|
|
81
|
+
)
|
|
82
|
+
)
|
|
78
83
|
return
|
|
79
84
|
# assign subdirs to titles
|
|
80
85
|
self.titles: list[tuple[str, str]] = []
|
|
81
86
|
for entry in preliminary_document_data:
|
|
82
87
|
docname = entry[0]
|
|
83
88
|
if docname not in self.env.all_docs:
|
|
84
|
-
logger.warning(
|
|
85
|
-
|
|
89
|
+
logger.warning(
|
|
90
|
+
__(
|
|
91
|
+
'"texinfo_documents" config value references unknown '
|
|
92
|
+
'document %s'
|
|
93
|
+
),
|
|
94
|
+
docname,
|
|
95
|
+
)
|
|
86
96
|
continue
|
|
87
97
|
self.document_data.append(entry) # type: ignore[arg-type]
|
|
88
|
-
|
|
89
|
-
docname = docname[:-5]
|
|
98
|
+
docname = docname.removesuffix(SEP + 'index')
|
|
90
99
|
self.titles.append((docname, entry[2]))
|
|
91
100
|
|
|
92
|
-
def
|
|
93
|
-
self.init_document_data()
|
|
94
|
-
self.copy_assets()
|
|
101
|
+
def write_documents(self, _docnames: Set[str]) -> None:
|
|
95
102
|
for entry in self.document_data:
|
|
96
103
|
docname, targetname, title, author = entry[:4]
|
|
97
104
|
targetname += '.texi'
|
|
@@ -102,13 +109,15 @@ class TexinfoBuilder(Builder):
|
|
|
102
109
|
if len(entry) > 7:
|
|
103
110
|
toctree_only = entry[7]
|
|
104
111
|
destination = FileOutput(
|
|
105
|
-
destination_path=path.join(self.outdir, targetname),
|
|
106
|
-
|
|
107
|
-
with progress_message(__(
|
|
112
|
+
destination_path=path.join(self.outdir, targetname), encoding='utf-8'
|
|
113
|
+
)
|
|
114
|
+
with progress_message(__('processing %s') % targetname, nonl=False):
|
|
108
115
|
appendices = self.config.texinfo_appendices or []
|
|
109
|
-
doctree = self.assemble_doctree(
|
|
116
|
+
doctree = self.assemble_doctree(
|
|
117
|
+
docname, toctree_only, appendices=appendices
|
|
118
|
+
)
|
|
110
119
|
|
|
111
|
-
with progress_message(__(
|
|
120
|
+
with progress_message(__('writing')):
|
|
112
121
|
self.post_process_images(doctree)
|
|
113
122
|
docwriter = TexinfoWriter(self)
|
|
114
123
|
with warnings.catch_warnings():
|
|
@@ -118,7 +127,8 @@ class TexinfoBuilder(Builder):
|
|
|
118
127
|
settings: Any = OptionParser(
|
|
119
128
|
defaults=self.env.settings,
|
|
120
129
|
components=(docwriter,),
|
|
121
|
-
read_config_files=True
|
|
130
|
+
read_config_files=True,
|
|
131
|
+
).get_default_values()
|
|
122
132
|
settings.author = author
|
|
123
133
|
settings.title = title
|
|
124
134
|
settings.texinfo_filename = targetname[:-5] + '.info'
|
|
@@ -132,10 +142,13 @@ class TexinfoBuilder(Builder):
|
|
|
132
142
|
self.copy_image_files(targetname[:-5])
|
|
133
143
|
|
|
134
144
|
def assemble_doctree(
|
|
135
|
-
self,
|
|
145
|
+
self,
|
|
146
|
+
indexfile: str,
|
|
147
|
+
toctree_only: bool,
|
|
148
|
+
appendices: list[str],
|
|
136
149
|
) -> nodes.document:
|
|
137
150
|
self.docnames = {indexfile, *appendices}
|
|
138
|
-
logger.info(darkgreen(indexfile)
|
|
151
|
+
logger.info(darkgreen(indexfile))
|
|
139
152
|
tree = self.env.get_doctree(indexfile)
|
|
140
153
|
tree['docname'] = indexfile
|
|
141
154
|
if toctree_only:
|
|
@@ -143,21 +156,21 @@ class TexinfoBuilder(Builder):
|
|
|
143
156
|
# fresh document
|
|
144
157
|
new_tree = new_document('<texinfo output>')
|
|
145
158
|
new_sect = nodes.section()
|
|
146
|
-
new_sect += nodes.title('<Set title in conf.py>',
|
|
147
|
-
'<Set title in conf.py>')
|
|
159
|
+
new_sect += nodes.title('<Set title in conf.py>', '<Set title in conf.py>')
|
|
148
160
|
new_tree += new_sect
|
|
149
161
|
for node in tree.findall(addnodes.toctree):
|
|
150
162
|
new_sect += node
|
|
151
163
|
tree = new_tree
|
|
152
|
-
largetree = inline_all_toctrees(
|
|
153
|
-
|
|
164
|
+
largetree = inline_all_toctrees(
|
|
165
|
+
self, self.docnames, indexfile, tree, darkgreen, [indexfile]
|
|
166
|
+
)
|
|
154
167
|
largetree['docname'] = indexfile
|
|
155
168
|
for docname in appendices:
|
|
156
169
|
appendix = self.env.get_doctree(docname)
|
|
157
170
|
appendix['docname'] = docname
|
|
158
171
|
largetree.append(appendix)
|
|
159
172
|
logger.info('')
|
|
160
|
-
logger.info(__(
|
|
173
|
+
logger.info(__('resolving references...'))
|
|
161
174
|
self.env.resolve_references(largetree, indexfile, self)
|
|
162
175
|
# TODO: add support for external :ref:s
|
|
163
176
|
for pendingnode in largetree.findall(addnodes.pending_xref):
|
|
@@ -183,9 +196,14 @@ class TexinfoBuilder(Builder):
|
|
|
183
196
|
def copy_image_files(self, targetname: str) -> None:
|
|
184
197
|
if self.images:
|
|
185
198
|
stringify_func = ImageAdapter(self.app.env).get_original_image_uri
|
|
186
|
-
for src in status_iterator(
|
|
187
|
-
|
|
188
|
-
|
|
199
|
+
for src in status_iterator(
|
|
200
|
+
self.images,
|
|
201
|
+
__('copying images... '),
|
|
202
|
+
'brown',
|
|
203
|
+
len(self.images),
|
|
204
|
+
self.app.verbosity,
|
|
205
|
+
stringify_func=stringify_func,
|
|
206
|
+
):
|
|
189
207
|
dest = self.images[src]
|
|
190
208
|
try:
|
|
191
209
|
imagedir = self.outdir / f'{targetname}-figures'
|
|
@@ -196,8 +214,11 @@ class TexinfoBuilder(Builder):
|
|
|
196
214
|
force=True,
|
|
197
215
|
)
|
|
198
216
|
except Exception as err:
|
|
199
|
-
logger.warning(
|
|
200
|
-
|
|
217
|
+
logger.warning(
|
|
218
|
+
__('cannot copy image file %r: %s'),
|
|
219
|
+
path.join(self.srcdir, src),
|
|
220
|
+
err,
|
|
221
|
+
)
|
|
201
222
|
|
|
202
223
|
def copy_support_files(self) -> None:
|
|
203
224
|
try:
|
|
@@ -209,7 +230,7 @@ class TexinfoBuilder(Builder):
|
|
|
209
230
|
force=True,
|
|
210
231
|
)
|
|
211
232
|
except OSError as err:
|
|
212
|
-
logger.warning(__(
|
|
233
|
+
logger.warning(__('error writing file Makefile: %s'), err)
|
|
213
234
|
|
|
214
235
|
|
|
215
236
|
def default_texinfo_documents(
|
|
@@ -217,8 +238,17 @@ def default_texinfo_documents(
|
|
|
217
238
|
) -> list[tuple[str, str, str, str, str, str, str]]:
|
|
218
239
|
"""Better default texinfo_documents settings."""
|
|
219
240
|
filename = make_filename_from_project(config.project)
|
|
220
|
-
return [
|
|
221
|
-
|
|
241
|
+
return [
|
|
242
|
+
(
|
|
243
|
+
config.root_doc,
|
|
244
|
+
filename,
|
|
245
|
+
config.project,
|
|
246
|
+
config.author,
|
|
247
|
+
filename,
|
|
248
|
+
'One line description of project',
|
|
249
|
+
'Miscellaneous',
|
|
250
|
+
)
|
|
251
|
+
]
|
|
222
252
|
|
|
223
253
|
|
|
224
254
|
def setup(app: Sphinx) -> ExtensionMetadata:
|
sphinx/builders/text.py
CHANGED
|
@@ -18,9 +18,9 @@ from sphinx.util.osutil import (
|
|
|
18
18
|
from sphinx.writers.text import TextTranslator, TextWriter
|
|
19
19
|
|
|
20
20
|
if TYPE_CHECKING:
|
|
21
|
-
from collections.abc import Iterator
|
|
21
|
+
from collections.abc import Iterator, Set
|
|
22
22
|
|
|
23
|
-
from docutils
|
|
23
|
+
from docutils import nodes
|
|
24
24
|
|
|
25
25
|
from sphinx.application import Sphinx
|
|
26
26
|
from sphinx.util.typing import ExtensionMetadata
|
|
@@ -64,10 +64,10 @@ class TextBuilder(Builder):
|
|
|
64
64
|
def get_target_uri(self, docname: str, typ: str | None = None) -> str:
|
|
65
65
|
return ''
|
|
66
66
|
|
|
67
|
-
def prepare_writing(self, docnames:
|
|
67
|
+
def prepare_writing(self, docnames: Set[str]) -> None:
|
|
68
68
|
self.writer = TextWriter(self)
|
|
69
69
|
|
|
70
|
-
def write_doc(self, docname: str, doctree:
|
|
70
|
+
def write_doc(self, docname: str, doctree: nodes.document) -> None:
|
|
71
71
|
self.current_docname = docname
|
|
72
72
|
self.secnumbers = self.env.toc_secnumbers.get(docname, {})
|
|
73
73
|
destination = StringOutput(encoding='utf-8')
|
|
@@ -78,7 +78,7 @@ class TextBuilder(Builder):
|
|
|
78
78
|
with open(outfilename, 'w', encoding='utf-8') as f:
|
|
79
79
|
f.write(self.writer.output)
|
|
80
80
|
except OSError as err:
|
|
81
|
-
logger.warning(__(
|
|
81
|
+
logger.warning(__('error writing file %s: %s'), outfilename, err)
|
|
82
82
|
|
|
83
83
|
def finish(self) -> None:
|
|
84
84
|
pass
|
sphinx/builders/xml.py
CHANGED
|
@@ -20,9 +20,7 @@ from sphinx.util.osutil import (
|
|
|
20
20
|
from sphinx.writers.xml import PseudoXMLWriter, XMLWriter
|
|
21
21
|
|
|
22
22
|
if TYPE_CHECKING:
|
|
23
|
-
from collections.abc import Iterator
|
|
24
|
-
|
|
25
|
-
from docutils.nodes import Node
|
|
23
|
+
from collections.abc import Iterator, Set
|
|
26
24
|
|
|
27
25
|
from sphinx.application import Sphinx
|
|
28
26
|
from sphinx.util.typing import ExtensionMetadata
|
|
@@ -70,16 +68,15 @@ class XMLBuilder(Builder):
|
|
|
70
68
|
def get_target_uri(self, docname: str, typ: str | None = None) -> str:
|
|
71
69
|
return docname
|
|
72
70
|
|
|
73
|
-
def prepare_writing(self, docnames:
|
|
71
|
+
def prepare_writing(self, docnames: Set[str]) -> None:
|
|
74
72
|
self.writer = self._writer_class(self)
|
|
75
73
|
|
|
76
|
-
def write_doc(self, docname: str, doctree:
|
|
74
|
+
def write_doc(self, docname: str, doctree: nodes.document) -> None:
|
|
77
75
|
# work around multiple string % tuple issues in docutils;
|
|
78
76
|
# replace tuples in attribute values with lists
|
|
79
77
|
doctree = doctree.deepcopy()
|
|
80
|
-
for domain in self.env.domains.
|
|
81
|
-
xmlns =
|
|
82
|
-
doctree[xmlns] = "https://www.sphinx-doc.org/" # type: ignore[index]
|
|
78
|
+
for domain in self.env.domains.sorted():
|
|
79
|
+
doctree[f'xmlns:{domain.name}'] = 'https://www.sphinx-doc.org/'
|
|
83
80
|
for node in doctree.findall(nodes.Element):
|
|
84
81
|
for att, value in node.attributes.items():
|
|
85
82
|
if isinstance(value, tuple):
|
|
@@ -97,7 +94,7 @@ class XMLBuilder(Builder):
|
|
|
97
94
|
with open(outfilename, 'w', encoding='utf-8') as f:
|
|
98
95
|
f.write(self.writer.output)
|
|
99
96
|
except OSError as err:
|
|
100
|
-
logger.warning(__(
|
|
97
|
+
logger.warning(__('error writing file %s: %s'), outfilename, err)
|
|
101
98
|
|
|
102
99
|
def finish(self) -> None:
|
|
103
100
|
pass
|