Sphinx 7.3.7__py3-none-any.whl → 7.4.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 +5 -6
- sphinx/_cli/__init__.py +296 -0
- sphinx/_cli/util/__init__.py +0 -0
- sphinx/_cli/util/colour.py +103 -0
- sphinx/_cli/util/errors.py +165 -0
- sphinx/application.py +78 -43
- sphinx/builders/__init__.py +59 -15
- sphinx/builders/_epub_base.py +11 -5
- sphinx/builders/changes.py +2 -2
- sphinx/builders/epub3.py +2 -2
- sphinx/builders/gettext.py +10 -10
- sphinx/builders/html/__init__.py +56 -54
- sphinx/builders/latex/__init__.py +5 -5
- sphinx/builders/latex/constants.py +5 -0
- sphinx/builders/linkcheck.py +73 -38
- sphinx/builders/texinfo.py +1 -1
- sphinx/cmd/build.py +1 -1
- sphinx/cmd/quickstart.py +11 -11
- sphinx/config.py +57 -38
- sphinx/directives/__init__.py +7 -9
- sphinx/directives/code.py +12 -15
- sphinx/directives/other.py +12 -15
- sphinx/directives/patches.py +26 -0
- sphinx/domains/__init__.py +1 -1
- sphinx/domains/c/__init__.py +5 -5
- sphinx/domains/c/_ast.py +436 -12
- sphinx/domains/c/_symbol.py +89 -134
- sphinx/domains/changeset.py +3 -4
- sphinx/domains/cpp/__init__.py +5 -6
- sphinx/domains/cpp/_ast.py +822 -25
- sphinx/domains/cpp/_symbol.py +3 -0
- sphinx/domains/javascript.py +3 -6
- sphinx/domains/math.py +3 -2
- sphinx/domains/python/__init__.py +44 -6
- sphinx/domains/python/_object.py +7 -5
- sphinx/domains/rst.py +2 -2
- sphinx/domains/std/__init__.py +95 -14
- sphinx/environment/__init__.py +35 -15
- sphinx/environment/adapters/indexentries.py +71 -24
- sphinx/environment/adapters/toctree.py +1 -1
- sphinx/environment/collectors/__init__.py +18 -4
- sphinx/environment/collectors/asset.py +4 -4
- sphinx/environment/collectors/toctree.py +27 -14
- sphinx/events.py +7 -6
- sphinx/ext/apidoc.py +377 -170
- sphinx/ext/autodoc/__init__.py +13 -13
- sphinx/ext/autodoc/directive.py +10 -13
- sphinx/ext/autodoc/mock.py +10 -7
- sphinx/ext/autodoc/preserve_defaults.py +1 -1
- sphinx/ext/autodoc/typehints.py +2 -2
- sphinx/ext/autosummary/__init__.py +15 -9
- sphinx/ext/autosummary/generate.py +270 -154
- sphinx/ext/coverage.py +108 -18
- sphinx/ext/duration.py +10 -3
- sphinx/ext/extlinks.py +3 -2
- sphinx/ext/graphviz.py +3 -3
- sphinx/ext/ifconfig.py +1 -2
- sphinx/ext/imgconverter.py +1 -0
- sphinx/ext/imgmath.py +7 -6
- sphinx/ext/inheritance_diagram.py +3 -3
- sphinx/ext/intersphinx/__init__.py +81 -0
- sphinx/ext/intersphinx/__main__.py +10 -0
- sphinx/ext/intersphinx/_cli.py +44 -0
- sphinx/ext/intersphinx/_load.py +253 -0
- sphinx/ext/{intersphinx.py → intersphinx/_resolve.py} +17 -368
- sphinx/ext/intersphinx/_shared.py +53 -0
- sphinx/ext/mathjax.py +1 -1
- sphinx/ext/todo.py +2 -2
- sphinx/io.py +2 -6
- sphinx/locale/__init__.py +1 -5
- sphinx/locale/ar/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ar/LC_MESSAGES/sphinx.po +678 -471
- sphinx/locale/bg/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bg/LC_MESSAGES/sphinx.po +684 -476
- sphinx/locale/bn/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bn/LC_MESSAGES/sphinx.po +679 -472
- sphinx/locale/ca/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ca/LC_MESSAGES/sphinx.po +681 -474
- sphinx/locale/cak/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cak/LC_MESSAGES/sphinx.po +678 -471
- sphinx/locale/cs/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cs/LC_MESSAGES/sphinx.po +679 -472
- sphinx/locale/cy/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cy/LC_MESSAGES/sphinx.po +679 -472
- sphinx/locale/da/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/da/LC_MESSAGES/sphinx.po +679 -472
- sphinx/locale/de/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de/LC_MESSAGES/sphinx.po +679 -472
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +678 -471
- sphinx/locale/el/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/el/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/eo/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eo/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/es/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/et/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/et/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/eu/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eu/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/fa/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fa/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/fi/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fi/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/fr/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr/LC_MESSAGES/sphinx.po +725 -518
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/gl/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/gl/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/he/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/he/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/hi/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/hr/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hr/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/hu/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hu/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/id/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/id/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/is/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/is/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/it/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/it/LC_MESSAGES/sphinx.po +708 -500
- sphinx/locale/ja/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ja/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ka/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ka/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/ko/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ko/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/lt/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lt/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/lv/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lv/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/mk/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/mk/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ne/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ne/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/nl/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nl/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/pl/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pl/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/pt/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +705 -498
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ro/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ro/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ru/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ru/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ru/LC_MESSAGES/sphinx.po +890 -680
- sphinx/locale/si/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/si/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/sk/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sk/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/sl/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sl/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/sphinx.pot +702 -494
- sphinx/locale/sq/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sq/LC_MESSAGES/sphinx.po +704 -497
- sphinx/locale/sr/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sr/LC_MESSAGES/sphinx.po +700 -493
- 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 +1 -1
- sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sv/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ta/LC_MESSAGES/sphinx.po +1016 -808
- sphinx/locale/te/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/te/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/tr/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/tr/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/ur/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ur/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/vi/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/vi/LC_MESSAGES/sphinx.po +701 -494
- sphinx/locale/yue/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/yue/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po +704 -496
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +700 -493
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +729 -522
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.js +1 -1
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +700 -493
- sphinx/roles.py +1 -1
- sphinx/search/__init__.py +17 -9
- sphinx/templates/quickstart/{root_doc.rst_t → root_doc.rst.jinja} +7 -10
- sphinx/testing/fixtures.py +22 -20
- sphinx/testing/path.py +6 -2
- sphinx/testing/util.py +8 -13
- sphinx/texinputs/sphinx.sty +449 -332
- sphinx/texinputs/sphinxlatexadmonitions.sty +209 -66
- sphinx/texinputs/sphinxlatexliterals.sty +9 -16
- sphinx/texinputs/sphinxlatexstyletext.sty +4 -38
- sphinx/texinputs/sphinxlatextables.sty +6 -14
- sphinx/texinputs/sphinxpackageboxes.sty +15 -42
- sphinx/texinputs/sphinxpackagefootnote.sty +4 -3
- sphinx/themes/agogo/layout.html +3 -3
- sphinx/themes/basic/genindex-single.html +2 -1
- sphinx/themes/basic/layout.html +3 -6
- sphinx/themes/basic/static/searchtools.js +4 -3
- sphinx/themes/haiku/layout.html +4 -4
- sphinx/themes/pyramid/layout.html +1 -1
- sphinx/themes/scrolls/layout.html +2 -2
- sphinx/theming.py +3 -3
- sphinx/transforms/__init__.py +34 -20
- sphinx/transforms/i18n.py +8 -7
- sphinx/transforms/post_transforms/__init__.py +1 -1
- sphinx/transforms/post_transforms/images.py +7 -10
- sphinx/util/_pathlib.py +2 -2
- sphinx/util/cfamily.py +52 -30
- sphinx/util/console.py +1 -1
- sphinx/util/display.py +16 -11
- sphinx/util/docutils.py +88 -40
- sphinx/util/fileutil.py +15 -3
- sphinx/util/images.py +1 -0
- sphinx/util/inspect.py +66 -22
- sphinx/util/inventory.py +15 -0
- sphinx/util/logging.py +14 -21
- sphinx/util/math.py +3 -1
- sphinx/util/nodes.py +9 -12
- sphinx/util/osutil.py +5 -5
- sphinx/util/parsing.py +93 -0
- sphinx/util/tags.py +71 -47
- sphinx/util/typing.py +265 -143
- sphinx/versioning.py +17 -17
- sphinx/writers/html5.py +26 -19
- sphinx/writers/latex.py +60 -30
- sphinx/writers/manpage.py +4 -3
- sphinx/writers/texinfo.py +19 -14
- {sphinx-7.3.7.dist-info → sphinx-7.4.1.dist-info}/METADATA +21 -20
- sphinx-7.4.1.dist-info/RECORD +591 -0
- sphinx-7.3.7.dist-info/RECORD +0 -581
- /sphinx/templates/apidoc/{module.rst_t → module.rst.jinja} +0 -0
- /sphinx/templates/apidoc/{package.rst_t → package.rst.jinja} +0 -0
- /sphinx/templates/apidoc/{toc.rst_t → toc.rst.jinja} +0 -0
- /sphinx/templates/epub3/{content.opf_t → content.opf.jinja} +0 -0
- /sphinx/templates/epub3/{nav.xhtml_t → nav.xhtml.jinja} +0 -0
- /sphinx/templates/epub3/{toc.ncx_t → toc.ncx.jinja} +0 -0
- /sphinx/templates/gettext/{message.pot_t → message.pot.jinja} +0 -0
- /sphinx/templates/imgmath/{preview.tex_t → preview.tex.jinja} +0 -0
- /sphinx/templates/imgmath/{template.tex_t → template.tex.jinja} +0 -0
- /sphinx/templates/latex/{latex.tex_t → latex.tex.jinja} +0 -0
- /sphinx/templates/latex/{longtable.tex_t → longtable.tex.jinja} +0 -0
- /sphinx/templates/latex/{sphinxmessages.sty_t → sphinxmessages.sty.jinja} +0 -0
- /sphinx/templates/latex/{tabular.tex_t → tabular.tex.jinja} +0 -0
- /sphinx/templates/latex/{tabulary.tex_t → tabulary.tex.jinja} +0 -0
- /sphinx/templates/quickstart/{Makefile_t → Makefile.jinja} +0 -0
- /sphinx/templates/quickstart/{Makefile.new_t → Makefile.new.jinja} +0 -0
- /sphinx/templates/quickstart/{conf.py_t → conf.py.jinja} +0 -0
- /sphinx/templates/quickstart/{make.bat_t → make.bat.jinja} +0 -0
- /sphinx/templates/quickstart/{make.bat.new_t → make.bat.new.jinja} +0 -0
- /sphinx/texinputs/{Makefile_t → Makefile.jinja} +0 -0
- /sphinx/texinputs/{latexmkjarc_t → latexmkjarc.jinja} +0 -0
- /sphinx/texinputs/{latexmkrc_t → latexmkrc.jinja} +0 -0
- /sphinx/texinputs/{make.bat_t → make.bat.jinja} +0 -0
- /sphinx/texinputs_win/{Makefile_t → Makefile.jinja} +0 -0
- /sphinx/themes/agogo/static/{agogo.css_t → agogo.css.jinja} +0 -0
- /sphinx/themes/basic/static/{basic.css_t → basic.css.jinja} +0 -0
- /sphinx/themes/basic/static/{documentation_options.js_t → documentation_options.js.jinja} +0 -0
- /sphinx/themes/basic/static/{language_data.js_t → language_data.js.jinja} +0 -0
- /sphinx/themes/bizstyle/static/{bizstyle.css_t → bizstyle.css.jinja} +0 -0
- /sphinx/themes/bizstyle/static/{bizstyle.js_t → bizstyle.js.jinja} +0 -0
- /sphinx/themes/classic/static/{classic.css_t → classic.css.jinja} +0 -0
- /sphinx/themes/classic/static/{sidebar.js_t → sidebar.js.jinja} +0 -0
- /sphinx/themes/epub/static/{epub.css_t → epub.css.jinja} +0 -0
- /sphinx/themes/haiku/static/{haiku.css_t → haiku.css.jinja} +0 -0
- /sphinx/themes/nature/static/{nature.css_t → nature.css.jinja} +0 -0
- /sphinx/themes/nonav/static/{nonav.css_t → nonav.css.jinja} +0 -0
- /sphinx/themes/pyramid/static/{epub.css_t → epub.css.jinja} +0 -0
- /sphinx/themes/pyramid/static/{pyramid.css_t → pyramid.css.jinja} +0 -0
- /sphinx/themes/scrolls/static/{scrolls.css_t → scrolls.css.jinja} +0 -0
- /sphinx/themes/sphinxdoc/static/{sphinxdoc.css_t → sphinxdoc.css.jinja} +0 -0
- /sphinx/themes/traditional/static/{traditional.css_t → traditional.css.jinja} +0 -0
- {sphinx-7.3.7.dist-info → sphinx-7.4.1.dist-info}/LICENSE.rst +0 -0
- {sphinx-7.3.7.dist-info → sphinx-7.4.1.dist-info}/WHEEL +0 -0
- {sphinx-7.3.7.dist-info → sphinx-7.4.1.dist-info}/entry_points.txt +0 -0
sphinx/domains/c/_symbol.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
3
|
+
from typing import TYPE_CHECKING, Any
|
|
4
4
|
|
|
5
5
|
from sphinx.domains.c._ast import (
|
|
6
6
|
ASTDeclaration,
|
|
@@ -11,7 +11,7 @@ from sphinx.locale import __
|
|
|
11
11
|
from sphinx.util import logging
|
|
12
12
|
|
|
13
13
|
if TYPE_CHECKING:
|
|
14
|
-
from collections.abc import Iterator
|
|
14
|
+
from collections.abc import Callable, Iterable, Iterator, Sequence
|
|
15
15
|
|
|
16
16
|
from typing_extensions import Self
|
|
17
17
|
|
|
@@ -32,7 +32,7 @@ class _DuplicateSymbolError(Exception):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class SymbolLookupResult:
|
|
35
|
-
def __init__(self, symbols:
|
|
35
|
+
def __init__(self, symbols: Sequence[Symbol], parentSymbol: Symbol,
|
|
36
36
|
ident: ASTIdentifier) -> None:
|
|
37
37
|
self.symbols = symbols
|
|
38
38
|
self.parentSymbol = parentSymbol
|
|
@@ -102,18 +102,44 @@ class Symbol:
|
|
|
102
102
|
self.isRedeclaration = False
|
|
103
103
|
self._assert_invariants()
|
|
104
104
|
|
|
105
|
-
#
|
|
106
|
-
|
|
107
|
-
self.
|
|
108
|
-
|
|
105
|
+
# These properties store the same children for different access patterns.
|
|
106
|
+
# ``_add_child()`` and ``_remove_child()`` should be used for modifying them.
|
|
107
|
+
self._children_by_name: dict[str, Symbol] = {}
|
|
108
|
+
self._children_by_docname: dict[str, dict[str, Symbol]] = {}
|
|
109
|
+
self._anon_children: set[Symbol] = set()
|
|
110
|
+
|
|
109
111
|
if self.parent:
|
|
110
|
-
self.parent.
|
|
112
|
+
self.parent._add_child(self)
|
|
111
113
|
if self.declaration:
|
|
112
114
|
self.declaration.symbol = self
|
|
113
115
|
|
|
114
116
|
# Do symbol addition after self._children has been initialised.
|
|
115
117
|
self._add_function_params()
|
|
116
118
|
|
|
119
|
+
def __repr__(self) -> str:
|
|
120
|
+
return f'<Symbol {self.to_string(indent=0)!r}>'
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def _children(self) -> Iterable[Symbol]:
|
|
124
|
+
return self._children_by_name.values()
|
|
125
|
+
|
|
126
|
+
def _add_child(self, child: Symbol) -> None:
|
|
127
|
+
name = child.ident.name
|
|
128
|
+
if name in self._children_by_name:
|
|
129
|
+
# Duplicate so don't add - will be reported in _add_symbols()
|
|
130
|
+
return
|
|
131
|
+
self._children_by_name[name] = child
|
|
132
|
+
self._children_by_docname.setdefault(child.docname, {})[name] = child
|
|
133
|
+
if child.ident.is_anonymous:
|
|
134
|
+
self._anon_children.add(child)
|
|
135
|
+
|
|
136
|
+
def _remove_child(self, child: Symbol) -> None:
|
|
137
|
+
name = child.ident.name
|
|
138
|
+
self._children_by_name.pop(name, None)
|
|
139
|
+
self._children_by_docname.get(child.docname, {}).pop(name, None)
|
|
140
|
+
if child.ident.is_anonymous:
|
|
141
|
+
self._anon_children.discard(child)
|
|
142
|
+
|
|
117
143
|
def _fill_empty(self, declaration: ASTDeclaration, docname: str, line: int) -> None:
|
|
118
144
|
self._assert_invariants()
|
|
119
145
|
assert self.declaration is None
|
|
@@ -154,25 +180,28 @@ class Symbol:
|
|
|
154
180
|
Symbol.debug_indent -= 1
|
|
155
181
|
|
|
156
182
|
def remove(self) -> None:
|
|
157
|
-
if self.parent
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
self.parent._children.remove(self)
|
|
161
|
-
self.parent = None
|
|
183
|
+
if self.parent:
|
|
184
|
+
self.parent._remove_child(self)
|
|
185
|
+
self.parent = None
|
|
162
186
|
|
|
163
187
|
def clear_doc(self, docname: str) -> None:
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
188
|
+
if docname not in self._children_by_docname:
|
|
189
|
+
for child in self._children:
|
|
190
|
+
child.clear_doc(docname)
|
|
191
|
+
return
|
|
192
|
+
|
|
193
|
+
children: dict[str, Symbol] = self._children_by_docname.pop(docname)
|
|
194
|
+
for child in children.values():
|
|
195
|
+
child.declaration = None
|
|
196
|
+
child.docname = None
|
|
197
|
+
child.line = None
|
|
198
|
+
if child.siblingAbove is not None:
|
|
199
|
+
child.siblingAbove.siblingBelow = child.siblingBelow
|
|
200
|
+
if child.siblingBelow is not None:
|
|
201
|
+
child.siblingBelow.siblingAbove = child.siblingAbove
|
|
202
|
+
child.siblingAbove = None
|
|
203
|
+
child.siblingBelow = None
|
|
204
|
+
self._remove_child(child)
|
|
176
205
|
|
|
177
206
|
def get_all_symbols(self) -> Iterator[Symbol]:
|
|
178
207
|
yield self
|
|
@@ -183,14 +212,6 @@ class Symbol:
|
|
|
183
212
|
def children(self) -> Iterator[Symbol]:
|
|
184
213
|
yield from self._children
|
|
185
214
|
|
|
186
|
-
@property
|
|
187
|
-
def children_recurse_anon(self) -> Iterator[Symbol]:
|
|
188
|
-
for c in self._children:
|
|
189
|
-
yield c
|
|
190
|
-
if not c.ident.is_anon():
|
|
191
|
-
continue
|
|
192
|
-
yield from c.children_recurse_anon
|
|
193
|
-
|
|
194
215
|
def get_lookup_key(self) -> LookupKey:
|
|
195
216
|
# The pickle files for the environment and for each document are distinct.
|
|
196
217
|
# The environment has all the symbols, but the documents has xrefs that
|
|
@@ -221,68 +242,6 @@ class Symbol:
|
|
|
221
242
|
names = [s.ident for s in symbols]
|
|
222
243
|
return ASTNestedName(names, rooted=False)
|
|
223
244
|
|
|
224
|
-
def _find_first_named_symbol(self, ident: ASTIdentifier,
|
|
225
|
-
matchSelf: bool, recurseInAnon: bool) -> Symbol | None:
|
|
226
|
-
# TODO: further simplification from C++ to C
|
|
227
|
-
if Symbol.debug_lookup:
|
|
228
|
-
Symbol.debug_print("_find_first_named_symbol ->")
|
|
229
|
-
res = self._find_named_symbols(ident, matchSelf, recurseInAnon,
|
|
230
|
-
searchInSiblings=False)
|
|
231
|
-
try:
|
|
232
|
-
return next(res)
|
|
233
|
-
except StopIteration:
|
|
234
|
-
return None
|
|
235
|
-
|
|
236
|
-
def _find_named_symbols(self, ident: ASTIdentifier,
|
|
237
|
-
matchSelf: bool, recurseInAnon: bool,
|
|
238
|
-
searchInSiblings: bool) -> Iterator[Symbol]:
|
|
239
|
-
# TODO: further simplification from C++ to C
|
|
240
|
-
if Symbol.debug_lookup:
|
|
241
|
-
Symbol.debug_indent += 1
|
|
242
|
-
Symbol.debug_print("_find_named_symbols:")
|
|
243
|
-
Symbol.debug_indent += 1
|
|
244
|
-
Symbol.debug_print("self:")
|
|
245
|
-
logger.debug(self.to_string(Symbol.debug_indent + 1, addEndNewline=False))
|
|
246
|
-
Symbol.debug_print("ident: ", ident)
|
|
247
|
-
Symbol.debug_print("matchSelf: ", matchSelf)
|
|
248
|
-
Symbol.debug_print("recurseInAnon: ", recurseInAnon)
|
|
249
|
-
Symbol.debug_print("searchInSiblings: ", searchInSiblings)
|
|
250
|
-
|
|
251
|
-
def candidates() -> Iterator[Symbol]:
|
|
252
|
-
s = self
|
|
253
|
-
if Symbol.debug_lookup:
|
|
254
|
-
Symbol.debug_print("searching in self:")
|
|
255
|
-
logger.debug(s.to_string(Symbol.debug_indent + 1, addEndNewline=False))
|
|
256
|
-
while True:
|
|
257
|
-
if matchSelf:
|
|
258
|
-
yield s
|
|
259
|
-
if recurseInAnon:
|
|
260
|
-
yield from s.children_recurse_anon
|
|
261
|
-
else:
|
|
262
|
-
yield from s._children
|
|
263
|
-
|
|
264
|
-
if s.siblingAbove is None:
|
|
265
|
-
break
|
|
266
|
-
s = s.siblingAbove
|
|
267
|
-
if Symbol.debug_lookup:
|
|
268
|
-
Symbol.debug_print("searching in sibling:")
|
|
269
|
-
logger.debug(s.to_string(Symbol.debug_indent + 1, addEndNewline=False))
|
|
270
|
-
|
|
271
|
-
for s in candidates():
|
|
272
|
-
if Symbol.debug_lookup:
|
|
273
|
-
Symbol.debug_print("candidate:")
|
|
274
|
-
logger.debug(s.to_string(Symbol.debug_indent + 1, addEndNewline=False))
|
|
275
|
-
if s.ident == ident:
|
|
276
|
-
if Symbol.debug_lookup:
|
|
277
|
-
Symbol.debug_indent += 1
|
|
278
|
-
Symbol.debug_print("matches")
|
|
279
|
-
Symbol.debug_indent -= 3
|
|
280
|
-
yield s
|
|
281
|
-
if Symbol.debug_lookup:
|
|
282
|
-
Symbol.debug_indent += 2
|
|
283
|
-
if Symbol.debug_lookup:
|
|
284
|
-
Symbol.debug_indent -= 2
|
|
285
|
-
|
|
286
245
|
def _symbol_lookup(
|
|
287
246
|
self,
|
|
288
247
|
nestedName: ASTNestedName,
|
|
@@ -311,16 +270,14 @@ class Symbol:
|
|
|
311
270
|
# find the right starting point for lookup
|
|
312
271
|
parentSymbol = self
|
|
313
272
|
if nestedName.rooted:
|
|
314
|
-
while parentSymbol.parent:
|
|
273
|
+
while parentSymbol.parent is not None:
|
|
315
274
|
parentSymbol = parentSymbol.parent
|
|
275
|
+
|
|
316
276
|
if ancestorLookupType is not None:
|
|
317
277
|
# walk up until we find the first identifier
|
|
318
278
|
firstName = names[0]
|
|
319
279
|
while parentSymbol.parent:
|
|
320
|
-
if parentSymbol.
|
|
321
|
-
matchSelf=matchSelf,
|
|
322
|
-
recurseInAnon=recurseInAnon,
|
|
323
|
-
searchInSiblings=searchInSiblings):
|
|
280
|
+
if firstName.name in parentSymbol._children_by_name:
|
|
324
281
|
break
|
|
325
282
|
parentSymbol = parentSymbol.parent
|
|
326
283
|
|
|
@@ -330,18 +287,15 @@ class Symbol:
|
|
|
330
287
|
|
|
331
288
|
# and now the actual lookup
|
|
332
289
|
for ident in names[:-1]:
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
290
|
+
name = ident.name
|
|
291
|
+
if name in parentSymbol._children_by_name:
|
|
292
|
+
symbol = parentSymbol._children_by_name[name]
|
|
293
|
+
else:
|
|
336
294
|
symbol = onMissingQualifiedSymbol(parentSymbol, ident)
|
|
337
295
|
if symbol is None:
|
|
338
296
|
if Symbol.debug_lookup:
|
|
339
297
|
Symbol.debug_indent -= 2
|
|
340
298
|
return None
|
|
341
|
-
# We have now matched part of a nested name, and need to match more
|
|
342
|
-
# so even if we should matchSelf before, we definitely shouldn't
|
|
343
|
-
# even more. (see also issue #2666)
|
|
344
|
-
matchSelf = False
|
|
345
299
|
parentSymbol = symbol
|
|
346
300
|
|
|
347
301
|
if Symbol.debug_lookup:
|
|
@@ -350,15 +304,19 @@ class Symbol:
|
|
|
350
304
|
|
|
351
305
|
# handle the last name
|
|
352
306
|
ident = names[-1]
|
|
307
|
+
name = ident.name
|
|
308
|
+
symbol = parentSymbol._children_by_name.get(name)
|
|
309
|
+
if not symbol and recurseInAnon:
|
|
310
|
+
for child in parentSymbol._anon_children:
|
|
311
|
+
if name in child._children_by_name:
|
|
312
|
+
symbol = child._children_by_name[name]
|
|
313
|
+
break
|
|
353
314
|
|
|
354
|
-
symbols = parentSymbol._find_named_symbols(
|
|
355
|
-
ident, matchSelf=matchSelf,
|
|
356
|
-
recurseInAnon=recurseInAnon,
|
|
357
|
-
searchInSiblings=searchInSiblings)
|
|
358
315
|
if Symbol.debug_lookup:
|
|
359
|
-
symbols = list(symbols) # type: ignore[assignment]
|
|
360
316
|
Symbol.debug_indent -= 2
|
|
361
|
-
|
|
317
|
+
|
|
318
|
+
result = [symbol] if symbol else []
|
|
319
|
+
return SymbolLookupResult(result, parentSymbol, ident)
|
|
362
320
|
|
|
363
321
|
def _add_symbols(
|
|
364
322
|
self,
|
|
@@ -532,17 +490,17 @@ class Symbol:
|
|
|
532
490
|
if Symbol.debug_lookup:
|
|
533
491
|
Symbol.debug_indent += 1
|
|
534
492
|
Symbol.debug_print("merge_with:")
|
|
493
|
+
|
|
535
494
|
assert other is not None
|
|
536
495
|
for otherChild in other._children:
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
recurseInAnon=False)
|
|
540
|
-
if ourChild is None:
|
|
496
|
+
otherName = otherChild.ident.name
|
|
497
|
+
if otherName not in self._children_by_name:
|
|
541
498
|
# TODO: hmm, should we prune by docnames?
|
|
542
|
-
self._children.append(otherChild)
|
|
543
499
|
otherChild.parent = self
|
|
500
|
+
self._add_child(otherChild)
|
|
544
501
|
otherChild._assert_invariants()
|
|
545
502
|
continue
|
|
503
|
+
ourChild = self._children_by_name[otherName]
|
|
546
504
|
if otherChild.declaration and otherChild.docname in docnames:
|
|
547
505
|
if not ourChild.declaration:
|
|
548
506
|
ourChild._fill_empty(otherChild.declaration,
|
|
@@ -560,6 +518,7 @@ class Symbol:
|
|
|
560
518
|
# just ignore it, right?
|
|
561
519
|
pass
|
|
562
520
|
ourChild.merge_with(otherChild, docnames, env)
|
|
521
|
+
|
|
563
522
|
if Symbol.debug_lookup:
|
|
564
523
|
Symbol.debug_indent -= 1
|
|
565
524
|
|
|
@@ -608,10 +567,13 @@ class Symbol:
|
|
|
608
567
|
Symbol.debug_indent -= 2
|
|
609
568
|
if matchSelf and current.ident == ident:
|
|
610
569
|
return current
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
570
|
+
name = ident.name
|
|
571
|
+
if name in current._children_by_name:
|
|
572
|
+
return current._children_by_name[name]
|
|
573
|
+
if recurseInAnon:
|
|
574
|
+
for child in current._anon_children:
|
|
575
|
+
if name in child._children_by_name:
|
|
576
|
+
return child._children_by_name[name]
|
|
615
577
|
if not searchInSiblings:
|
|
616
578
|
break
|
|
617
579
|
current = current.siblingAbove
|
|
@@ -623,24 +585,17 @@ class Symbol:
|
|
|
623
585
|
Symbol.debug_print("direct_lookup:")
|
|
624
586
|
Symbol.debug_indent += 1
|
|
625
587
|
s = self
|
|
626
|
-
for
|
|
627
|
-
|
|
628
|
-
for cand in s._children:
|
|
629
|
-
if cand.ident == name:
|
|
630
|
-
res = cand
|
|
631
|
-
break
|
|
632
|
-
s = res
|
|
588
|
+
for ident, id_ in key.data:
|
|
589
|
+
s = s._children_by_name.get(ident.name)
|
|
633
590
|
if Symbol.debug_lookup:
|
|
634
|
-
Symbol.debug_print("name: ", name)
|
|
591
|
+
Symbol.debug_print("name: ", ident.name)
|
|
635
592
|
Symbol.debug_print("id: ", id_)
|
|
636
593
|
if s is not None:
|
|
637
594
|
logger.debug(s.to_string(Symbol.debug_indent + 1, addEndNewline=False))
|
|
638
595
|
else:
|
|
639
596
|
Symbol.debug_print("not found")
|
|
640
597
|
if s is None:
|
|
641
|
-
|
|
642
|
-
Symbol.debug_indent -= 2
|
|
643
|
-
return None
|
|
598
|
+
break
|
|
644
599
|
if Symbol.debug_lookup:
|
|
645
600
|
Symbol.debug_indent -= 2
|
|
646
601
|
return s
|
|
@@ -680,7 +635,7 @@ class Symbol:
|
|
|
680
635
|
res.append('::')
|
|
681
636
|
else:
|
|
682
637
|
if self.ident:
|
|
683
|
-
res.append(
|
|
638
|
+
res.append(self.ident.name)
|
|
684
639
|
else:
|
|
685
640
|
res.append(str(self.declaration))
|
|
686
641
|
if self.declaration:
|
sphinx/domains/changeset.py
CHANGED
|
@@ -62,15 +62,14 @@ class VersionChange(SphinxDirective):
|
|
|
62
62
|
node['version'] = self.arguments[0]
|
|
63
63
|
text = versionlabels[self.name] % self.arguments[0]
|
|
64
64
|
if len(self.arguments) == 2:
|
|
65
|
-
inodes, messages = self.
|
|
66
|
-
self.lineno + 1)
|
|
65
|
+
inodes, messages = self.parse_inline(self.arguments[1], lineno=self.lineno + 1)
|
|
67
66
|
para = nodes.paragraph(self.arguments[1], '', *inodes, translatable=False)
|
|
68
67
|
self.set_source_info(para)
|
|
69
68
|
node.append(para)
|
|
70
69
|
else:
|
|
71
70
|
messages = []
|
|
72
71
|
if self.content:
|
|
73
|
-
self.
|
|
72
|
+
node += self.parse_content_to_nodes()
|
|
74
73
|
classes = ['versionmodified', versionlabel_classes[self.name]]
|
|
75
74
|
if len(node) > 0 and isinstance(node[0], nodes.paragraph):
|
|
76
75
|
# the contents start with a paragraph
|
|
@@ -111,7 +110,7 @@ class ChangeSetDomain(Domain):
|
|
|
111
110
|
name = 'changeset'
|
|
112
111
|
label = 'changeset'
|
|
113
112
|
|
|
114
|
-
initial_data: dict[str,
|
|
113
|
+
initial_data: dict[str, dict[str, list[ChangeSet]]] = {
|
|
115
114
|
'changes': {}, # version -> list of ChangeSet
|
|
116
115
|
}
|
|
117
116
|
|
sphinx/domains/cpp/__init__.py
CHANGED
|
@@ -705,7 +705,7 @@ class AliasTransform(SphinxTransform):
|
|
|
705
705
|
signode.clear()
|
|
706
706
|
signode += addnodes.desc_name(sig, sig)
|
|
707
707
|
|
|
708
|
-
logger.warning("Can not find C++ declaration for alias '%s'."
|
|
708
|
+
logger.warning("Can not find C++ declaration for alias '%s'.", ast,
|
|
709
709
|
location=node)
|
|
710
710
|
node.replace_self(signode)
|
|
711
711
|
else:
|
|
@@ -763,10 +763,9 @@ class CPPAliasObject(ObjectDescription):
|
|
|
763
763
|
for sig in signatures:
|
|
764
764
|
node.append(AliasNode(sig, aliasOptions, env=self.env))
|
|
765
765
|
|
|
766
|
-
contentnode = addnodes.desc_content()
|
|
767
|
-
node.append(contentnode)
|
|
768
766
|
self.before_content()
|
|
769
|
-
|
|
767
|
+
content_node = addnodes.desc_content('', *self.parse_content_to_nodes())
|
|
768
|
+
node.append(content_node)
|
|
770
769
|
self.env.temp_data['object'] = None
|
|
771
770
|
self.after_content()
|
|
772
771
|
return [node]
|
|
@@ -1158,8 +1157,8 @@ class CPPDomain(Domain):
|
|
|
1158
1157
|
def setup(app: Sphinx) -> ExtensionMetadata:
|
|
1159
1158
|
app.add_domain(CPPDomain)
|
|
1160
1159
|
app.add_config_value("cpp_index_common_prefix", [], 'env')
|
|
1161
|
-
app.add_config_value("cpp_id_attributes", [], 'env')
|
|
1162
|
-
app.add_config_value("cpp_paren_attributes", [], 'env')
|
|
1160
|
+
app.add_config_value("cpp_id_attributes", [], 'env', types={list, tuple})
|
|
1161
|
+
app.add_config_value("cpp_paren_attributes", [], 'env', types={list, tuple})
|
|
1163
1162
|
app.add_config_value("cpp_maximum_signature_line_length", None, 'env', types={int, None})
|
|
1164
1163
|
app.add_post_transform(AliasTransform)
|
|
1165
1164
|
|