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/directives/other.py
CHANGED
|
@@ -78,17 +78,19 @@ class TocTree(SphinxDirective):
|
|
|
78
78
|
subnode['numbered'] = self.options.get('numbered', 0)
|
|
79
79
|
subnode['titlesonly'] = 'titlesonly' in self.options
|
|
80
80
|
self.set_source_info(subnode)
|
|
81
|
+
self.parse_content(subnode)
|
|
82
|
+
|
|
81
83
|
wrappernode = nodes.compound(
|
|
82
84
|
classes=['toctree-wrapper', *self.options.get('class', ())],
|
|
83
85
|
)
|
|
84
86
|
wrappernode.append(subnode)
|
|
85
87
|
self.add_name(wrappernode)
|
|
88
|
+
return [wrappernode]
|
|
86
89
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def parse_content(self, toctree: addnodes.toctree) -> list[Node]:
|
|
90
|
+
def parse_content(self, toctree: addnodes.toctree) -> None:
|
|
91
|
+
"""
|
|
92
|
+
Populate ``toctree['entries']`` and ``toctree['includefiles']`` from content.
|
|
93
|
+
"""
|
|
92
94
|
generated_docnames = frozenset(StandardDomain._virtual_doc_names)
|
|
93
95
|
suffixes = self.config.source_suffix
|
|
94
96
|
current_docname = self.env.docname
|
|
@@ -99,7 +101,6 @@ class TocTree(SphinxDirective):
|
|
|
99
101
|
all_docnames.remove(current_docname) # remove current document
|
|
100
102
|
frozen_all_docnames = frozenset(all_docnames)
|
|
101
103
|
|
|
102
|
-
ret: list[Node] = []
|
|
103
104
|
excluded = Matcher(self.config.exclude_patterns)
|
|
104
105
|
for entry in self.content:
|
|
105
106
|
if not entry:
|
|
@@ -110,17 +111,23 @@ class TocTree(SphinxDirective):
|
|
|
110
111
|
url_match = url_re.match(entry) is not None
|
|
111
112
|
if glob and glob_re.match(entry) and not explicit and not url_match:
|
|
112
113
|
pat_name = docname_join(current_docname, entry)
|
|
113
|
-
doc_names = sorted(
|
|
114
|
+
doc_names = sorted(
|
|
115
|
+
docname
|
|
116
|
+
for docname in patfilter(all_docnames, pat_name)
|
|
117
|
+
# don't include generated documents in globs
|
|
118
|
+
if docname not in generated_docnames
|
|
119
|
+
)
|
|
120
|
+
if not doc_names:
|
|
121
|
+
logger.warning(
|
|
122
|
+
__("toctree glob pattern %r didn't match any documents"),
|
|
123
|
+
entry,
|
|
124
|
+
location=toctree,
|
|
125
|
+
)
|
|
126
|
+
|
|
114
127
|
for docname in doc_names:
|
|
115
|
-
if docname in generated_docnames:
|
|
116
|
-
# don't include generated documents in globs
|
|
117
|
-
continue
|
|
118
128
|
all_docnames.remove(docname) # don't include it again
|
|
119
129
|
toctree['entries'].append((None, docname))
|
|
120
130
|
toctree['includefiles'].append(docname)
|
|
121
|
-
if not doc_names:
|
|
122
|
-
logger.warning(__("toctree glob pattern %r didn't match any documents"),
|
|
123
|
-
entry, location=toctree)
|
|
124
131
|
continue
|
|
125
132
|
|
|
126
133
|
if explicit:
|
|
@@ -145,22 +152,26 @@ class TocTree(SphinxDirective):
|
|
|
145
152
|
|
|
146
153
|
if docname not in frozen_all_docnames:
|
|
147
154
|
if excluded(str(self.env.doc2path(docname, False))):
|
|
148
|
-
|
|
155
|
+
msg = __('toctree contains reference to excluded document %r')
|
|
149
156
|
subtype = 'excluded'
|
|
150
157
|
else:
|
|
151
|
-
|
|
158
|
+
msg = __('toctree contains reference to nonexisting document %r')
|
|
152
159
|
subtype = 'not_readable'
|
|
153
160
|
|
|
154
|
-
logger.warning(
|
|
155
|
-
|
|
161
|
+
logger.warning(
|
|
162
|
+
msg, docname, type='toc', subtype=subtype, location=toctree
|
|
163
|
+
)
|
|
156
164
|
self.env.note_reread()
|
|
157
165
|
continue
|
|
158
166
|
|
|
159
167
|
if docname in all_docnames:
|
|
160
168
|
all_docnames.remove(docname)
|
|
161
169
|
else:
|
|
162
|
-
logger.warning(
|
|
163
|
-
|
|
170
|
+
logger.warning(
|
|
171
|
+
__('duplicated entry found in toctree: %s'),
|
|
172
|
+
docname,
|
|
173
|
+
location=toctree,
|
|
174
|
+
)
|
|
164
175
|
|
|
165
176
|
toctree['entries'].append((title, docname))
|
|
166
177
|
toctree['includefiles'].append(docname)
|
|
@@ -170,8 +181,6 @@ class TocTree(SphinxDirective):
|
|
|
170
181
|
toctree['entries'] = list(reversed(toctree['entries']))
|
|
171
182
|
toctree['includefiles'] = list(reversed(toctree['includefiles']))
|
|
172
183
|
|
|
173
|
-
return ret
|
|
174
|
-
|
|
175
184
|
|
|
176
185
|
class Author(SphinxDirective):
|
|
177
186
|
"""
|
|
@@ -208,7 +217,7 @@ class Author(SphinxDirective):
|
|
|
208
217
|
return ret
|
|
209
218
|
|
|
210
219
|
|
|
211
|
-
class SeeAlso(BaseAdmonition):
|
|
220
|
+
class SeeAlso(BaseAdmonition):
|
|
212
221
|
"""
|
|
213
222
|
An admonition mentioning things to look at as reference.
|
|
214
223
|
"""
|
|
@@ -271,8 +280,10 @@ class Acks(SphinxDirective):
|
|
|
271
280
|
def run(self) -> list[Node]:
|
|
272
281
|
children = self.parse_content_to_nodes()
|
|
273
282
|
if len(children) != 1 or not isinstance(children[0], nodes.bullet_list):
|
|
274
|
-
logger.warning(
|
|
275
|
-
|
|
283
|
+
logger.warning(
|
|
284
|
+
__('.. acks content is not a list'),
|
|
285
|
+
location=(self.env.docname, self.lineno),
|
|
286
|
+
)
|
|
276
287
|
return []
|
|
277
288
|
return [addnodes.acks('', *children)]
|
|
278
289
|
|
|
@@ -294,8 +305,10 @@ class HList(SphinxDirective):
|
|
|
294
305
|
ncolumns = self.options.get('columns', 2)
|
|
295
306
|
children = self.parse_content_to_nodes()
|
|
296
307
|
if len(children) != 1 or not isinstance(children[0], nodes.bullet_list):
|
|
297
|
-
logger.warning(
|
|
298
|
-
|
|
308
|
+
logger.warning(
|
|
309
|
+
__('.. hlist content is not a list'),
|
|
310
|
+
location=(self.env.docname, self.lineno),
|
|
311
|
+
)
|
|
299
312
|
return []
|
|
300
313
|
fulllist = children[0]
|
|
301
314
|
# create a hlist node where the items are distributed
|
|
@@ -337,13 +350,16 @@ class Only(SphinxDirective):
|
|
|
337
350
|
memo.title_styles = []
|
|
338
351
|
memo.section_level = 0
|
|
339
352
|
try:
|
|
340
|
-
self.state.nested_parse(
|
|
341
|
-
|
|
353
|
+
self.state.nested_parse(
|
|
354
|
+
self.content, self.content_offset, node, match_titles=True
|
|
355
|
+
)
|
|
342
356
|
title_styles = memo.title_styles
|
|
343
|
-
if (
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
357
|
+
if (
|
|
358
|
+
not surrounding_title_styles
|
|
359
|
+
or not title_styles
|
|
360
|
+
or title_styles[0] not in surrounding_title_styles
|
|
361
|
+
or not self.state.parent
|
|
362
|
+
):
|
|
347
363
|
# No nested sections so no special handling needed.
|
|
348
364
|
return [node]
|
|
349
365
|
# Calculate the depths of the current and nested sections.
|
|
@@ -378,7 +394,6 @@ class Include(BaseInclude, SphinxDirective):
|
|
|
378
394
|
"""
|
|
379
395
|
|
|
380
396
|
def run(self) -> Sequence[Node]:
|
|
381
|
-
|
|
382
397
|
# To properly emit "include-read" events from included RST text,
|
|
383
398
|
# we must patch the ``StateMachine.insert_input()`` method.
|
|
384
399
|
# In the future, docutils will hopefully offer a way for Sphinx
|
|
@@ -390,7 +405,7 @@ class Include(BaseInclude, SphinxDirective):
|
|
|
390
405
|
# In docutils 0.18 and later, there are two lines at the end
|
|
391
406
|
# that act as markers.
|
|
392
407
|
# We must preserve them and leave them out of the include-read event:
|
|
393
|
-
text =
|
|
408
|
+
text = '\n'.join(include_lines[:-2])
|
|
394
409
|
|
|
395
410
|
path = Path(relpath(abspath(source), start=self.env.srcdir))
|
|
396
411
|
docname = self.env.docname
|
|
@@ -413,8 +428,7 @@ class Include(BaseInclude, SphinxDirective):
|
|
|
413
428
|
# See https://github.com/python/mypy/issues/2427 for details on the mypy issue
|
|
414
429
|
self.state_machine.insert_input = _insert_input
|
|
415
430
|
|
|
416
|
-
if self.arguments[0].startswith('<') and
|
|
417
|
-
self.arguments[0].endswith('>'):
|
|
431
|
+
if self.arguments[0].startswith('<') and self.arguments[0].endswith('>'):
|
|
418
432
|
# docutils "standard" includes, do not do path processing
|
|
419
433
|
return super().run()
|
|
420
434
|
rel_filename, filename = self.env.relfn2path(self.arguments[0])
|
sphinx/directives/patches.py
CHANGED
|
@@ -12,7 +12,6 @@ from docutils.parsers.rst.directives.misc import Meta
|
|
|
12
12
|
from docutils.parsers.rst.roles import set_classes
|
|
13
13
|
|
|
14
14
|
from sphinx.directives import optional_int
|
|
15
|
-
from sphinx.domains.math import MathDomain
|
|
16
15
|
from sphinx.locale import __
|
|
17
16
|
from sphinx.util import logging
|
|
18
17
|
from sphinx.util.docutils import SphinxDirective
|
|
@@ -63,10 +62,14 @@ class CSVTable(tables.CSVTable): # type: ignore[misc]
|
|
|
63
62
|
env = self.state.document.settings.env
|
|
64
63
|
filename = self.options['file']
|
|
65
64
|
if path.exists(filename):
|
|
66
|
-
logger.warning(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
logger.warning(
|
|
66
|
+
__(
|
|
67
|
+
'":file:" option for csv-table directive now recognizes '
|
|
68
|
+
'an absolute path as a relative path from source directory. '
|
|
69
|
+
'Please update your document.'
|
|
70
|
+
),
|
|
71
|
+
location=(env.docname, self.lineno),
|
|
72
|
+
)
|
|
70
73
|
else:
|
|
71
74
|
abspath = path.join(env.srcdir, os_path(self.options['file'][1:]))
|
|
72
75
|
docdir = path.dirname(env.doc2path(env.docname))
|
|
@@ -95,10 +98,13 @@ class Code(SphinxDirective):
|
|
|
95
98
|
|
|
96
99
|
set_classes(self.options)
|
|
97
100
|
code = '\n'.join(self.content)
|
|
98
|
-
node = nodes.literal_block(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
node = nodes.literal_block(
|
|
102
|
+
code,
|
|
103
|
+
code,
|
|
104
|
+
classes=self.options.get('classes', []),
|
|
105
|
+
force='force' in self.options,
|
|
106
|
+
highlight_args={},
|
|
107
|
+
)
|
|
102
108
|
self.add_name(node)
|
|
103
109
|
set_source_info(self, node)
|
|
104
110
|
|
|
@@ -109,8 +115,9 @@ class Code(SphinxDirective):
|
|
|
109
115
|
# no highlight language specified. Then this directive refers the current
|
|
110
116
|
# highlight setting via ``highlight`` directive or ``highlight_language``
|
|
111
117
|
# configuration.
|
|
112
|
-
node['language'] = self.env.temp_data.get(
|
|
113
|
-
|
|
118
|
+
node['language'] = self.env.temp_data.get(
|
|
119
|
+
'highlight_language', self.config.highlight_language
|
|
120
|
+
)
|
|
114
121
|
|
|
115
122
|
if 'number-lines' in self.options:
|
|
116
123
|
node['linenos'] = True
|
|
@@ -139,12 +146,15 @@ class MathDirective(SphinxDirective):
|
|
|
139
146
|
if self.arguments and self.arguments[0]:
|
|
140
147
|
latex = self.arguments[0] + '\n\n' + latex
|
|
141
148
|
label = self.options.get('label', self.options.get('name'))
|
|
142
|
-
node = nodes.math_block(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
node = nodes.math_block(
|
|
150
|
+
latex,
|
|
151
|
+
latex,
|
|
152
|
+
classes=self.options.get('class', []),
|
|
153
|
+
docname=self.env.docname,
|
|
154
|
+
number=None,
|
|
155
|
+
label=label,
|
|
156
|
+
nowrap='nowrap' in self.options,
|
|
157
|
+
)
|
|
148
158
|
self.add_name(node)
|
|
149
159
|
self.set_source_info(node)
|
|
150
160
|
|
|
@@ -158,14 +168,14 @@ class MathDirective(SphinxDirective):
|
|
|
158
168
|
# assign label automatically if math_number_all enabled
|
|
159
169
|
if node['label'] == '' or (self.config.math_number_all and not node['label']):
|
|
160
170
|
seq = self.env.new_serialno('sphinx.ext.math#equations')
|
|
161
|
-
node['label'] =
|
|
171
|
+
node['label'] = f'{self.env.docname}:{seq}'
|
|
162
172
|
|
|
163
173
|
# no targets and numbers are needed
|
|
164
174
|
if not node['label']:
|
|
165
175
|
return
|
|
166
176
|
|
|
167
177
|
# register label to domain
|
|
168
|
-
domain =
|
|
178
|
+
domain = self.env.domains.math_domain
|
|
169
179
|
domain.note_equation(self.env.docname, node['label'], location=node)
|
|
170
180
|
node['number'] = domain.get_equation_number_for(node['label'])
|
|
171
181
|
|
sphinx/domains/__init__.py
CHANGED
|
@@ -7,20 +7,17 @@ and roles describing e.g. constructs of one programming language.
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
import copy
|
|
10
|
-
from
|
|
11
|
-
from collections.abc import Callable
|
|
12
|
-
from typing import TYPE_CHECKING, Any, NamedTuple, cast
|
|
10
|
+
from typing import TYPE_CHECKING
|
|
13
11
|
|
|
14
|
-
from
|
|
15
|
-
|
|
16
|
-
from sphinx.errors import SphinxError
|
|
12
|
+
from sphinx.domains._index import Index, IndexEntry
|
|
17
13
|
from sphinx.locale import _
|
|
18
14
|
|
|
19
15
|
if TYPE_CHECKING:
|
|
20
|
-
from collections.abc import Iterable, Sequence
|
|
21
|
-
from typing import
|
|
16
|
+
from collections.abc import Callable, Iterable, Sequence, Set
|
|
17
|
+
from typing import Any
|
|
22
18
|
|
|
23
19
|
from docutils import nodes
|
|
20
|
+
from docutils.nodes import Element, Node
|
|
24
21
|
from docutils.parsers.rst import Directive
|
|
25
22
|
from docutils.parsers.rst.states import Inliner
|
|
26
23
|
|
|
@@ -28,7 +25,14 @@ if TYPE_CHECKING:
|
|
|
28
25
|
from sphinx.builders import Builder
|
|
29
26
|
from sphinx.environment import BuildEnvironment
|
|
30
27
|
from sphinx.roles import XRefRole
|
|
31
|
-
from sphinx.util.typing import RoleFunction
|
|
28
|
+
from sphinx.util.typing import RoleFunction, TitleGetter
|
|
29
|
+
|
|
30
|
+
__all__ = (
|
|
31
|
+
'Domain',
|
|
32
|
+
'Index',
|
|
33
|
+
'IndexEntry',
|
|
34
|
+
'ObjType',
|
|
35
|
+
)
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
class ObjType:
|
|
@@ -50,112 +54,10 @@ class ObjType:
|
|
|
50
54
|
'searchprio': 1,
|
|
51
55
|
}
|
|
52
56
|
|
|
53
|
-
def __init__(self, lname: str, *roles: Any, **attrs: Any) -> None:
|
|
54
|
-
self.lname = lname
|
|
55
|
-
self.roles: tuple = roles
|
|
56
|
-
self.attrs: dict = self.known_attrs
|
|
57
|
-
self.attrs.update(attrs)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class IndexEntry(NamedTuple):
|
|
61
|
-
name: str
|
|
62
|
-
subtype: int
|
|
63
|
-
docname: str
|
|
64
|
-
anchor: str
|
|
65
|
-
extra: str
|
|
66
|
-
qualifier: str
|
|
67
|
-
descr: str
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
class Index(ABC):
|
|
71
|
-
"""
|
|
72
|
-
An Index is the description for a domain-specific index. To add an index to
|
|
73
|
-
a domain, subclass Index, overriding the three name attributes:
|
|
74
|
-
|
|
75
|
-
* `name` is an identifier used for generating file names.
|
|
76
|
-
It is also used for a hyperlink target for the index. Therefore, users can
|
|
77
|
-
refer the index page using ``ref`` role and a string which is combined
|
|
78
|
-
domain name and ``name`` attribute (ex. ``:ref:`py-modindex```).
|
|
79
|
-
* `localname` is the section title for the index.
|
|
80
|
-
* `shortname` is a short name for the index, for use in the relation bar in
|
|
81
|
-
HTML output. Can be empty to disable entries in the relation bar.
|
|
82
|
-
|
|
83
|
-
and providing a :meth:`generate()` method. Then, add the index class to
|
|
84
|
-
your domain's `indices` list. Extensions can add indices to existing
|
|
85
|
-
domains using :meth:`~sphinx.application.Sphinx.add_index_to_domain()`.
|
|
86
|
-
|
|
87
|
-
.. versionchanged:: 3.0
|
|
88
|
-
|
|
89
|
-
Index pages can be referred by domain name and index name via
|
|
90
|
-
:rst:role:`ref` role.
|
|
91
|
-
"""
|
|
92
|
-
|
|
93
|
-
name: str
|
|
94
|
-
localname: str
|
|
95
|
-
shortname: str | None = None
|
|
96
|
-
|
|
97
|
-
def __init__(self, domain: Domain) -> None:
|
|
98
|
-
if not self.name or self.localname is None:
|
|
99
|
-
raise SphinxError('Index subclass %s has no valid name or localname'
|
|
100
|
-
% self.__class__.__name__)
|
|
101
|
-
self.domain = domain
|
|
102
|
-
|
|
103
|
-
@abstractmethod
|
|
104
|
-
def generate(self, docnames: Iterable[str] | None = None,
|
|
105
|
-
) -> tuple[list[tuple[str, list[IndexEntry]]], bool]:
|
|
106
|
-
"""Get entries for the index.
|
|
107
|
-
|
|
108
|
-
If ``docnames`` is given, restrict to entries referring to these
|
|
109
|
-
docnames.
|
|
110
|
-
|
|
111
|
-
The return value is a tuple of ``(content, collapse)``:
|
|
112
|
-
|
|
113
|
-
``collapse``
|
|
114
|
-
A boolean that determines if sub-entries should start collapsed (for
|
|
115
|
-
output formats that support collapsing sub-entries).
|
|
116
|
-
|
|
117
|
-
``content``:
|
|
118
|
-
A sequence of ``(letter, entries)`` tuples, where ``letter`` is the
|
|
119
|
-
"heading" for the given ``entries``, usually the starting letter, and
|
|
120
|
-
``entries`` is a sequence of single entries. Each entry is a sequence
|
|
121
|
-
``[name, subtype, docname, anchor, extra, qualifier, descr]``. The
|
|
122
|
-
items in this sequence have the following meaning:
|
|
123
|
-
|
|
124
|
-
``name``
|
|
125
|
-
The name of the index entry to be displayed.
|
|
126
|
-
|
|
127
|
-
``subtype``
|
|
128
|
-
The sub-entry related type. One of:
|
|
129
|
-
|
|
130
|
-
``0``
|
|
131
|
-
A normal entry.
|
|
132
|
-
``1``
|
|
133
|
-
An entry with sub-entries.
|
|
134
|
-
``2``
|
|
135
|
-
A sub-entry.
|
|
136
|
-
|
|
137
|
-
``docname``
|
|
138
|
-
*docname* where the entry is located.
|
|
139
|
-
|
|
140
|
-
``anchor``
|
|
141
|
-
Anchor for the entry within ``docname``
|
|
142
|
-
|
|
143
|
-
``extra``
|
|
144
|
-
Extra info for the entry.
|
|
145
|
-
|
|
146
|
-
``qualifier``
|
|
147
|
-
Qualifier for the description.
|
|
148
|
-
|
|
149
|
-
``descr``
|
|
150
|
-
Description for the entry.
|
|
151
|
-
|
|
152
|
-
Qualifier and description are not rendered for some output formats such
|
|
153
|
-
as LaTeX.
|
|
154
|
-
"""
|
|
155
|
-
raise NotImplementedError
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
TitleGetter: TypeAlias = Callable[[Node], str | None]
|
|
57
|
+
def __init__(self, lname: str, /, *roles: Any, **attrs: Any) -> None:
|
|
58
|
+
self.lname: str = lname
|
|
59
|
+
self.roles: tuple[Any, ...] = roles
|
|
60
|
+
self.attrs: dict[str, Any] = self.known_attrs | attrs
|
|
159
61
|
|
|
160
62
|
|
|
161
63
|
class Domain:
|
|
@@ -235,10 +137,8 @@ class Domain:
|
|
|
235
137
|
|
|
236
138
|
def setup(self) -> None:
|
|
237
139
|
"""Set up domain object."""
|
|
238
|
-
from sphinx.domains.std import StandardDomain
|
|
239
|
-
|
|
240
140
|
# Add special hyperlink target for index pages (ex. py-modindex)
|
|
241
|
-
std =
|
|
141
|
+
std = self.env.domains.standard_domain
|
|
242
142
|
for index in self.indices:
|
|
243
143
|
if index.name and index.localname:
|
|
244
144
|
docname = f"{self.name}-{index.name}"
|
|
@@ -268,7 +168,7 @@ class Domain:
|
|
|
268
168
|
def role_adapter(typ: str, rawtext: str, text: str, lineno: int,
|
|
269
169
|
inliner: Inliner, options: dict | None = None,
|
|
270
170
|
content: Sequence[str] = (),
|
|
271
|
-
) -> tuple[list[Node], list[system_message]]:
|
|
171
|
+
) -> tuple[list[Node], list[nodes.system_message]]:
|
|
272
172
|
return self.roles[name](fullname, rawtext, text, lineno,
|
|
273
173
|
inliner, options or {}, content)
|
|
274
174
|
self._role_cache[name] = role_adapter
|
|
@@ -298,7 +198,7 @@ class Domain:
|
|
|
298
198
|
"""Remove traces of a document in the domain-specific inventories."""
|
|
299
199
|
pass
|
|
300
200
|
|
|
301
|
-
def merge_domaindata(self, docnames:
|
|
201
|
+
def merge_domaindata(self, docnames: Set[str], otherdata: dict[str, Any]) -> None:
|
|
302
202
|
"""Merge in data regarding *docnames* from a different domaindata
|
|
303
203
|
inventory (coming from a subprocess in parallel builds).
|
|
304
204
|
"""
|