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