Sphinx 8.0.2__py3-none-any.whl → 8.1.1__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 +202 -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 +9 -2
- 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 +136 -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 +115 -50
- sphinx/texinputs/sphinxlatexadmonitions.sty +56 -38
- 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.1.dist-info/LICENSE.rst +31 -0
- {sphinx-8.0.2.dist-info → sphinx-8.1.1.dist-info}/METADATA +13 -11
- sphinx-8.1.1.dist-info/RECORD +598 -0
- sphinx-8.0.2.dist-info/LICENSE.rst +0 -67
- sphinx-8.0.2.dist-info/RECORD +0 -590
- {sphinx-8.0.2.dist-info → sphinx-8.1.1.dist-info}/WHEEL +0 -0
- {sphinx-8.0.2.dist-info → sphinx-8.1.1.dist-info}/entry_points.txt +0 -0
sphinx/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""The Sphinx documentation toolchain."""
|
|
2
2
|
|
|
3
|
-
__version__ = '8.
|
|
3
|
+
__version__ = '8.1.1'
|
|
4
4
|
__display_version__ = __version__ # used for command line version
|
|
5
5
|
|
|
6
6
|
# Keep this file executable as-is in Python 3!
|
|
@@ -16,7 +16,10 @@ if 'PYTHONWARNINGS' not in os.environ:
|
|
|
16
16
|
|
|
17
17
|
warnings.filterwarnings('default', category=RemovedInNextVersionWarning)
|
|
18
18
|
warnings.filterwarnings(
|
|
19
|
-
'ignore',
|
|
19
|
+
'ignore',
|
|
20
|
+
'The frontend.Option class .*',
|
|
21
|
+
DeprecationWarning,
|
|
22
|
+
module='docutils.frontend',
|
|
20
23
|
)
|
|
21
24
|
|
|
22
25
|
#: Version info for better programmatic use.
|
|
@@ -27,7 +30,7 @@ warnings.filterwarnings(
|
|
|
27
30
|
#:
|
|
28
31
|
#: .. versionadded:: 1.2
|
|
29
32
|
#: Before version 1.2, check the string ``sphinx.__version__``.
|
|
30
|
-
version_info = (8,
|
|
33
|
+
version_info = (8, 1, 1, 'final', 0)
|
|
31
34
|
|
|
32
35
|
package_dir = os.path.abspath(os.path.dirname(__file__))
|
|
33
36
|
|
sphinx/_cli/__init__.py
CHANGED
|
@@ -38,7 +38,9 @@ if TYPE_CHECKING:
|
|
|
38
38
|
from collections.abc import Callable, Iterable, Iterator, Sequence
|
|
39
39
|
from typing import NoReturn, TypeAlias
|
|
40
40
|
|
|
41
|
-
_PARSER_SETUP: TypeAlias = Callable[
|
|
41
|
+
_PARSER_SETUP: TypeAlias = Callable[
|
|
42
|
+
[argparse.ArgumentParser], argparse.ArgumentParser
|
|
43
|
+
]
|
|
42
44
|
_RUNNER: TypeAlias = Callable[[argparse.Namespace], int]
|
|
43
45
|
|
|
44
46
|
from typing import Protocol
|
|
@@ -50,8 +52,7 @@ if TYPE_CHECKING:
|
|
|
50
52
|
|
|
51
53
|
|
|
52
54
|
# Map of command name to import path.
|
|
53
|
-
_COMMANDS: dict[str, str] = {
|
|
54
|
-
}
|
|
55
|
+
_COMMANDS: dict[str, str] = {}
|
|
55
56
|
|
|
56
57
|
|
|
57
58
|
def _load_subcommand_descriptions() -> Iterator[tuple[str, str]]:
|
|
@@ -61,7 +62,7 @@ def _load_subcommand_descriptions() -> Iterator[tuple[str, str]]:
|
|
|
61
62
|
description = module.parser_description
|
|
62
63
|
except AttributeError:
|
|
63
64
|
# log an error here, but don't fail the full enumeration
|
|
64
|
-
print(f
|
|
65
|
+
print(f'Failed to load the description for {command}', file=sys.stderr)
|
|
65
66
|
else:
|
|
66
67
|
yield command, description.split('\n\n', 1)[0]
|
|
67
68
|
|
|
@@ -79,7 +80,8 @@ class _RootArgumentParser(argparse.ArgumentParser):
|
|
|
79
80
|
]
|
|
80
81
|
|
|
81
82
|
if commands := list(_load_subcommand_descriptions()):
|
|
82
|
-
|
|
83
|
+
command_lengths = map(len, next(zip(*commands, strict=True), ()))
|
|
84
|
+
command_max_length = min(max(command_lengths), 22)
|
|
83
85
|
help_fragments += [
|
|
84
86
|
'\n',
|
|
85
87
|
bold(underline(__('Commands:'))),
|
|
@@ -95,8 +97,11 @@ class _RootArgumentParser(argparse.ArgumentParser):
|
|
|
95
97
|
# Uppercase the title of the Optionals group
|
|
96
98
|
self._optionals.title = __('Options')
|
|
97
99
|
for argument_group in self._action_groups[1:]:
|
|
98
|
-
if arguments := [
|
|
99
|
-
|
|
100
|
+
if arguments := [
|
|
101
|
+
action
|
|
102
|
+
for action in argument_group._group_actions
|
|
103
|
+
if action.help != argparse.SUPPRESS
|
|
104
|
+
]:
|
|
100
105
|
help_fragments += self._format_optional_arguments(
|
|
101
106
|
arguments,
|
|
102
107
|
argument_group.title or '',
|
|
@@ -104,7 +109,9 @@ class _RootArgumentParser(argparse.ArgumentParser):
|
|
|
104
109
|
|
|
105
110
|
help_fragments += [
|
|
106
111
|
'\n',
|
|
107
|
-
__(
|
|
112
|
+
__(
|
|
113
|
+
'For more information, visit https://www.sphinx-doc.org/en/master/man/.'
|
|
114
|
+
),
|
|
108
115
|
'\n',
|
|
109
116
|
]
|
|
110
117
|
return ''.join(help_fragments)
|
|
@@ -123,7 +130,7 @@ class _RootArgumentParser(argparse.ArgumentParser):
|
|
|
123
130
|
opt = prefix + ' ' + ', '.join(map(bold, action.option_strings))
|
|
124
131
|
if action.nargs != 0:
|
|
125
132
|
opt += ' ' + self._format_metavar(
|
|
126
|
-
action.nargs, action.metavar, action.choices, action.dest
|
|
133
|
+
action.nargs, action.metavar, action.choices, action.dest
|
|
127
134
|
)
|
|
128
135
|
yield opt
|
|
129
136
|
yield '\n'
|
|
@@ -161,10 +168,11 @@ class _RootArgumentParser(argparse.ArgumentParser):
|
|
|
161
168
|
raise ValueError(msg)
|
|
162
169
|
|
|
163
170
|
def error(self, message: str) -> NoReturn:
|
|
164
|
-
sys.stderr.write(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
171
|
+
sys.stderr.write(
|
|
172
|
+
__(
|
|
173
|
+
'{0}: error: {1}\n' "Run '{0} --help' for information" # NoQA: COM812
|
|
174
|
+
).format(self.prog, message)
|
|
175
|
+
)
|
|
168
176
|
raise SystemExit(2)
|
|
169
177
|
|
|
170
178
|
|
|
@@ -172,18 +180,23 @@ def _create_parser() -> _RootArgumentParser:
|
|
|
172
180
|
parser = _RootArgumentParser(
|
|
173
181
|
prog='sphinx',
|
|
174
182
|
description=__(' Manage documentation with Sphinx.'),
|
|
175
|
-
epilog=__(
|
|
183
|
+
epilog=__(
|
|
184
|
+
'For more information, visit https://www.sphinx-doc.org/en/master/man/.'
|
|
185
|
+
),
|
|
176
186
|
add_help=False,
|
|
177
187
|
allow_abbrev=False,
|
|
178
188
|
)
|
|
179
189
|
parser.add_argument(
|
|
180
|
-
'-V',
|
|
190
|
+
'-V',
|
|
191
|
+
'--version',
|
|
181
192
|
action='store_true',
|
|
182
193
|
default=argparse.SUPPRESS,
|
|
183
194
|
help=__('Show the version and exit.'),
|
|
184
195
|
)
|
|
185
196
|
parser.add_argument(
|
|
186
|
-
'-h',
|
|
197
|
+
'-h',
|
|
198
|
+
'-?',
|
|
199
|
+
'--help',
|
|
187
200
|
action='store_true',
|
|
188
201
|
default=argparse.SUPPRESS,
|
|
189
202
|
help=__('Show this message and exit.'),
|
|
@@ -192,14 +205,16 @@ def _create_parser() -> _RootArgumentParser:
|
|
|
192
205
|
# logging control
|
|
193
206
|
log_control = parser.add_argument_group(__('Logging'))
|
|
194
207
|
log_control.add_argument(
|
|
195
|
-
'-v',
|
|
208
|
+
'-v',
|
|
209
|
+
'--verbose',
|
|
196
210
|
action='count',
|
|
197
211
|
dest='verbosity',
|
|
198
212
|
default=0,
|
|
199
213
|
help=__('Increase verbosity (can be repeated)'),
|
|
200
214
|
)
|
|
201
215
|
log_control.add_argument(
|
|
202
|
-
'-q',
|
|
216
|
+
'-q',
|
|
217
|
+
'--quiet',
|
|
203
218
|
action='store_const',
|
|
204
219
|
dest='verbosity',
|
|
205
220
|
const=-1,
|
|
@@ -235,6 +250,7 @@ def _parse_command(argv: Sequence[str] = ()) -> tuple[str, Sequence[str]]:
|
|
|
235
250
|
# Handle '--version' or '-V' passed to the main command or any subcommand
|
|
236
251
|
if 'version' in args or {'-V', '--version'}.intersection(command_argv):
|
|
237
252
|
from sphinx import __display_version__
|
|
253
|
+
|
|
238
254
|
sys.stderr.write(f'sphinx {__display_version__}\n')
|
|
239
255
|
raise SystemExit(0)
|
|
240
256
|
|
|
@@ -245,8 +261,12 @@ def _parse_command(argv: Sequence[str] = ()) -> tuple[str, Sequence[str]]:
|
|
|
245
261
|
raise SystemExit(0)
|
|
246
262
|
|
|
247
263
|
if command_name not in _COMMANDS:
|
|
248
|
-
sys.stderr.write(
|
|
249
|
-
|
|
264
|
+
sys.stderr.write(
|
|
265
|
+
__(
|
|
266
|
+
f'sphinx: {command_name!r} is not a sphinx command. '
|
|
267
|
+
"See 'sphinx --help'.\n"
|
|
268
|
+
)
|
|
269
|
+
)
|
|
250
270
|
raise SystemExit(2)
|
|
251
271
|
|
|
252
272
|
return command_name, command_argv
|
sphinx/_cli/util/colour.py
CHANGED
|
@@ -17,6 +17,8 @@ def terminal_supports_colour() -> bool:
|
|
|
17
17
|
"""Return True if coloured terminal output is supported."""
|
|
18
18
|
if 'NO_COLOUR' in os.environ or 'NO_COLOR' in os.environ:
|
|
19
19
|
return False
|
|
20
|
+
if sys.platform == 'win32':
|
|
21
|
+
colorama.just_fix_windows_console()
|
|
20
22
|
if 'FORCE_COLOUR' in os.environ or 'FORCE_COLOR' in os.environ:
|
|
21
23
|
return True
|
|
22
24
|
|
|
@@ -35,15 +37,11 @@ def terminal_supports_colour() -> bool:
|
|
|
35
37
|
def disable_colour() -> None:
|
|
36
38
|
global _COLOURING_DISABLED
|
|
37
39
|
_COLOURING_DISABLED = True
|
|
38
|
-
if sys.platform == 'win32':
|
|
39
|
-
colorama.deinit()
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def enable_colour() -> None:
|
|
43
43
|
global _COLOURING_DISABLED
|
|
44
44
|
_COLOURING_DISABLED = False
|
|
45
|
-
if sys.platform == 'win32':
|
|
46
|
-
colorama.init()
|
|
47
45
|
|
|
48
46
|
|
|
49
47
|
def colourise(colour_name: str, text: str, /) -> str:
|
|
@@ -57,6 +55,7 @@ def _create_colour_func(escape_code: str, /) -> Callable[[str], str]:
|
|
|
57
55
|
if _COLOURING_DISABLED:
|
|
58
56
|
return text
|
|
59
57
|
return f'\x1b[{escape_code}m{text}\x1b[39;49;00m'
|
|
58
|
+
|
|
60
59
|
return inner
|
|
61
60
|
|
|
62
61
|
|
|
@@ -69,11 +68,13 @@ def _create_colour_func(escape_code: str, /) -> Callable[[str], str]:
|
|
|
69
68
|
if sys.platform == 'win32':
|
|
70
69
|
_create_input_mode_colour_func = _create_colour_func
|
|
71
70
|
else:
|
|
71
|
+
|
|
72
72
|
def _create_input_mode_colour_func(escape_code: str, /) -> Callable[[str], str]:
|
|
73
73
|
def inner(text: str) -> str:
|
|
74
74
|
if _COLOURING_DISABLED:
|
|
75
75
|
return text
|
|
76
76
|
return f'\x01\x1b[{escape_code}m\x02{text}\x01\x1b[39;49;00m\x02'
|
|
77
|
+
|
|
77
78
|
return inner
|
|
78
79
|
|
|
79
80
|
|
sphinx/_cli/util/errors.py
CHANGED
|
@@ -72,10 +72,15 @@ def save_traceback(app: Sphinx | None, exc: BaseException) -> str:
|
|
|
72
72
|
if app is not None:
|
|
73
73
|
extensions = app.extensions.values()
|
|
74
74
|
last_msgs = '\n'.join(f'* {strip_colors(s)}' for s in app.messagelog)
|
|
75
|
-
exts_list = '\n'.join(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
exts_list = '\n'.join(
|
|
76
|
+
f'* {ext.name} ({ext.version})'
|
|
77
|
+
for ext in extensions
|
|
78
|
+
if ext.version != 'builtin'
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
with tempfile.NamedTemporaryFile(
|
|
82
|
+
suffix='.log', prefix='sphinx-err-', delete=False
|
|
83
|
+
) as f:
|
|
79
84
|
f.write(error_info(last_msgs, exts_list, exc_format).encode('utf-8'))
|
|
80
85
|
|
|
81
86
|
return f.name
|
|
@@ -143,9 +148,13 @@ def handle_exception(
|
|
|
143
148
|
print_red(__('Recursion error:'))
|
|
144
149
|
print_err(str(exception))
|
|
145
150
|
print_err()
|
|
146
|
-
print_err(
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
print_err(
|
|
152
|
+
__(
|
|
153
|
+
'This can happen with very large or deeply nested source '
|
|
154
|
+
'files. You can carefully increase the default Python '
|
|
155
|
+
'recursion limit of 1000 in conf.py with e.g.:'
|
|
156
|
+
)
|
|
157
|
+
)
|
|
149
158
|
print_err('\n import sys\n sys.setrecursionlimit(1_500)\n')
|
|
150
159
|
return
|
|
151
160
|
|
|
@@ -159,7 +168,15 @@ def handle_exception(
|
|
|
159
168
|
print_err(__('The full traceback has been saved in:'))
|
|
160
169
|
print_err(traceback_info_path)
|
|
161
170
|
print_err()
|
|
162
|
-
print_err(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
171
|
+
print_err(
|
|
172
|
+
__(
|
|
173
|
+
'To report this error to the developers, please open an issue '
|
|
174
|
+
'at <https://github.com/sphinx-doc/sphinx/issues/>. Thanks!'
|
|
175
|
+
)
|
|
176
|
+
)
|
|
177
|
+
print_err(
|
|
178
|
+
__(
|
|
179
|
+
'Please also report this if it was a user error, so '
|
|
180
|
+
'that a better error message can be provided next time.'
|
|
181
|
+
)
|
|
182
|
+
)
|