Sphinx 8.1.2__py3-none-any.whl → 8.2.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 +8 -4
- sphinx/__main__.py +2 -0
- sphinx/_cli/__init__.py +2 -5
- sphinx/_cli/util/colour.py +34 -11
- sphinx/_cli/util/errors.py +128 -61
- sphinx/addnodes.py +51 -35
- sphinx/application.py +362 -230
- sphinx/builders/__init__.py +87 -64
- sphinx/builders/_epub_base.py +65 -56
- sphinx/builders/changes.py +17 -23
- sphinx/builders/dirhtml.py +8 -13
- sphinx/builders/epub3.py +70 -38
- sphinx/builders/gettext.py +93 -73
- sphinx/builders/html/__init__.py +240 -186
- sphinx/builders/html/_assets.py +9 -2
- sphinx/builders/html/_build_info.py +3 -0
- sphinx/builders/latex/__init__.py +64 -54
- sphinx/builders/latex/constants.py +14 -11
- sphinx/builders/latex/nodes.py +2 -0
- sphinx/builders/latex/theming.py +8 -9
- sphinx/builders/latex/transforms.py +7 -5
- sphinx/builders/linkcheck.py +193 -149
- sphinx/builders/manpage.py +17 -17
- sphinx/builders/singlehtml.py +28 -16
- sphinx/builders/texinfo.py +28 -21
- sphinx/builders/text.py +10 -15
- sphinx/builders/xml.py +10 -19
- sphinx/cmd/build.py +49 -119
- sphinx/cmd/make_mode.py +35 -31
- sphinx/cmd/quickstart.py +78 -62
- sphinx/config.py +265 -163
- sphinx/directives/__init__.py +51 -54
- sphinx/directives/admonitions.py +107 -0
- sphinx/directives/code.py +24 -19
- sphinx/directives/other.py +21 -42
- sphinx/directives/patches.py +28 -16
- sphinx/domains/__init__.py +54 -31
- sphinx/domains/_domains_container.py +22 -17
- sphinx/domains/_index.py +5 -8
- sphinx/domains/c/__init__.py +366 -245
- sphinx/domains/c/_ast.py +378 -256
- sphinx/domains/c/_ids.py +89 -31
- sphinx/domains/c/_parser.py +283 -214
- sphinx/domains/c/_symbol.py +269 -198
- sphinx/domains/changeset.py +39 -24
- sphinx/domains/citation.py +54 -24
- sphinx/domains/cpp/__init__.py +517 -362
- sphinx/domains/cpp/_ast.py +999 -682
- sphinx/domains/cpp/_ids.py +133 -65
- sphinx/domains/cpp/_parser.py +746 -588
- sphinx/domains/cpp/_symbol.py +692 -489
- sphinx/domains/index.py +10 -8
- sphinx/domains/javascript.py +152 -74
- sphinx/domains/math.py +50 -40
- sphinx/domains/python/__init__.py +402 -211
- sphinx/domains/python/_annotations.py +134 -61
- sphinx/domains/python/_object.py +155 -68
- sphinx/domains/rst.py +94 -49
- sphinx/domains/std/__init__.py +510 -249
- sphinx/environment/__init__.py +345 -61
- sphinx/environment/adapters/asset.py +7 -1
- sphinx/environment/adapters/indexentries.py +15 -20
- sphinx/environment/adapters/toctree.py +19 -9
- sphinx/environment/collectors/__init__.py +3 -1
- sphinx/environment/collectors/asset.py +18 -15
- sphinx/environment/collectors/dependencies.py +8 -10
- sphinx/environment/collectors/metadata.py +6 -4
- sphinx/environment/collectors/title.py +3 -1
- sphinx/environment/collectors/toctree.py +4 -4
- sphinx/errors.py +1 -3
- sphinx/events.py +4 -4
- sphinx/ext/apidoc/__init__.py +66 -0
- sphinx/ext/apidoc/__main__.py +9 -0
- sphinx/ext/apidoc/_cli.py +356 -0
- sphinx/ext/apidoc/_extension.py +262 -0
- sphinx/ext/apidoc/_generate.py +356 -0
- sphinx/ext/apidoc/_shared.py +99 -0
- sphinx/ext/autodoc/__init__.py +837 -483
- sphinx/ext/autodoc/directive.py +57 -21
- sphinx/ext/autodoc/importer.py +184 -67
- sphinx/ext/autodoc/mock.py +25 -10
- sphinx/ext/autodoc/preserve_defaults.py +17 -9
- sphinx/ext/autodoc/type_comment.py +56 -29
- sphinx/ext/autodoc/typehints.py +49 -26
- sphinx/ext/autosectionlabel.py +28 -11
- sphinx/ext/autosummary/__init__.py +281 -142
- sphinx/ext/autosummary/generate.py +121 -51
- sphinx/ext/coverage.py +152 -91
- sphinx/ext/doctest.py +169 -101
- sphinx/ext/duration.py +12 -6
- sphinx/ext/extlinks.py +33 -21
- sphinx/ext/githubpages.py +8 -8
- sphinx/ext/graphviz.py +175 -109
- sphinx/ext/ifconfig.py +11 -6
- sphinx/ext/imgconverter.py +48 -25
- sphinx/ext/imgmath.py +127 -97
- sphinx/ext/inheritance_diagram.py +177 -103
- sphinx/ext/intersphinx/__init__.py +22 -13
- sphinx/ext/intersphinx/__main__.py +3 -1
- sphinx/ext/intersphinx/_cli.py +18 -14
- sphinx/ext/intersphinx/_load.py +91 -82
- sphinx/ext/intersphinx/_resolve.py +108 -74
- sphinx/ext/intersphinx/_shared.py +2 -2
- sphinx/ext/linkcode.py +28 -12
- sphinx/ext/mathjax.py +60 -29
- sphinx/ext/napoleon/__init__.py +19 -7
- sphinx/ext/napoleon/docstring.py +229 -231
- sphinx/ext/todo.py +44 -49
- sphinx/ext/viewcode.py +105 -57
- sphinx/extension.py +3 -1
- sphinx/highlighting.py +13 -7
- sphinx/io.py +9 -13
- sphinx/jinja2glue.py +29 -26
- sphinx/locale/__init__.py +8 -9
- sphinx/locale/ar/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ar/LC_MESSAGES/sphinx.po +2155 -2050
- sphinx/locale/bg/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bg/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/bn/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/bn/LC_MESSAGES/sphinx.po +2175 -2070
- sphinx/locale/ca/LC_MESSAGES/sphinx.js +3 -3
- sphinx/locale/ca/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ca/LC_MESSAGES/sphinx.po +2690 -2585
- sphinx/locale/ca@valencia/LC_MESSAGES/sphinx.js +63 -0
- sphinx/locale/ca@valencia/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ca@valencia/LC_MESSAGES/sphinx.po +4216 -0
- sphinx/locale/cak/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cak/LC_MESSAGES/sphinx.po +2096 -1991
- sphinx/locale/cs/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cs/LC_MESSAGES/sphinx.po +2248 -2143
- sphinx/locale/cy/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/cy/LC_MESSAGES/sphinx.po +2201 -2096
- sphinx/locale/da/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/da/LC_MESSAGES/sphinx.po +2282 -2177
- sphinx/locale/de/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de/LC_MESSAGES/sphinx.po +2261 -2156
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/de_DE/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/el/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/el/LC_MESSAGES/sphinx.po +2604 -2499
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_DE/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_FR/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_GB/LC_MESSAGES/sphinx.po +2631 -2526
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/en_HK/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/eo/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eo/LC_MESSAGES/sphinx.po +2078 -1973
- sphinx/locale/es/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es/LC_MESSAGES/sphinx.po +2633 -2528
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/es_CO/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/et/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/et/LC_MESSAGES/sphinx.po +2449 -2344
- sphinx/locale/eu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/eu/LC_MESSAGES/sphinx.po +2241 -2136
- sphinx/locale/fa/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fa/LC_MESSAGES/sphinx.po +504 -500
- sphinx/locale/fi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fi/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/fr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr/LC_MESSAGES/sphinx.po +513 -509
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/fr_FR/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/gl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/gl/LC_MESSAGES/sphinx.po +2644 -2539
- sphinx/locale/he/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/he/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/hi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi/LC_MESSAGES/sphinx.po +504 -500
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hi_IN/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/hr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hr/LC_MESSAGES/sphinx.po +501 -497
- sphinx/locale/hu/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/hu/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/id/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/id/LC_MESSAGES/sphinx.po +2609 -2504
- sphinx/locale/is/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/is/LC_MESSAGES/sphinx.po +499 -495
- sphinx/locale/it/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/it/LC_MESSAGES/sphinx.po +2265 -2160
- sphinx/locale/ja/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ja/LC_MESSAGES/sphinx.po +2621 -2516
- sphinx/locale/ka/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ka/LC_MESSAGES/sphinx.po +2567 -2462
- sphinx/locale/ko/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ko/LC_MESSAGES/sphinx.po +2631 -2526
- sphinx/locale/lt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lt/LC_MESSAGES/sphinx.po +2214 -2109
- sphinx/locale/lv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/lv/LC_MESSAGES/sphinx.po +2218 -2113
- sphinx/locale/mk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/mk/LC_MESSAGES/sphinx.po +2088 -1983
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +2247 -2142
- sphinx/locale/ne/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ne/LC_MESSAGES/sphinx.po +2227 -2122
- sphinx/locale/nl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/nl/LC_MESSAGES/sphinx.po +2316 -2211
- sphinx/locale/pl/LC_MESSAGES/sphinx.js +2 -2
- sphinx/locale/pl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pl/LC_MESSAGES/sphinx.po +2442 -2336
- sphinx/locale/pt/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +2657 -2552
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +2243 -2138
- sphinx/locale/ro/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ro/LC_MESSAGES/sphinx.po +2244 -2139
- 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 +2660 -2555
- sphinx/locale/si/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/si/LC_MESSAGES/sphinx.po +2134 -2029
- sphinx/locale/sk/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sk/LC_MESSAGES/sphinx.po +2614 -2509
- sphinx/locale/sl/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sl/LC_MESSAGES/sphinx.po +2167 -2062
- sphinx/locale/sphinx.pot +2069 -1964
- sphinx/locale/sq/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sq/LC_MESSAGES/sphinx.po +2661 -2556
- sphinx/locale/sr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sr/LC_MESSAGES/sphinx.po +2213 -2108
- sphinx/locale/sv/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/sv/LC_MESSAGES/sphinx.po +2229 -2124
- sphinx/locale/te/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/te/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/tr/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/tr/LC_MESSAGES/sphinx.po +2608 -2503
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +2167 -2062
- sphinx/locale/ur/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/ur/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/vi/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/vi/LC_MESSAGES/sphinx.po +2204 -2099
- sphinx/locale/yue/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/yue/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +2659 -2554
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.mo +0 -0
- sphinx/locale/zh_TW.Big5/LC_MESSAGES/sphinx.po +2045 -1940
- sphinx/parsers.py +8 -7
- sphinx/project.py +2 -2
- sphinx/pycode/__init__.py +31 -21
- sphinx/pycode/ast.py +6 -3
- sphinx/pycode/parser.py +14 -8
- sphinx/pygments_styles.py +4 -5
- sphinx/registry.py +192 -92
- sphinx/roles.py +58 -7
- sphinx/search/__init__.py +75 -54
- sphinx/search/en.py +11 -13
- sphinx/search/fi.py +1 -1
- sphinx/search/ja.py +8 -6
- sphinx/search/nl.py +1 -1
- sphinx/search/zh.py +19 -21
- sphinx/testing/fixtures.py +26 -29
- sphinx/testing/path.py +26 -62
- sphinx/testing/restructuredtext.py +14 -8
- sphinx/testing/util.py +21 -19
- sphinx/texinputs/make.bat.jinja +50 -50
- sphinx/texinputs/sphinx.sty +4 -3
- sphinx/texinputs/sphinxlatexadmonitions.sty +1 -1
- sphinx/texinputs/sphinxlatexobjects.sty +29 -10
- sphinx/themes/basic/static/searchtools.js +8 -5
- sphinx/theming.py +49 -61
- sphinx/transforms/__init__.py +17 -38
- sphinx/transforms/compact_bullet_list.py +5 -3
- sphinx/transforms/i18n.py +8 -21
- sphinx/transforms/post_transforms/__init__.py +142 -93
- sphinx/transforms/post_transforms/code.py +5 -5
- sphinx/transforms/post_transforms/images.py +28 -24
- sphinx/transforms/references.py +3 -1
- sphinx/util/__init__.py +109 -60
- sphinx/util/_files.py +39 -23
- sphinx/util/_importer.py +4 -1
- sphinx/util/_inventory_file_reader.py +76 -0
- sphinx/util/_io.py +2 -2
- sphinx/util/_lines.py +6 -3
- sphinx/util/_pathlib.py +40 -2
- sphinx/util/build_phase.py +2 -0
- sphinx/util/cfamily.py +19 -14
- sphinx/util/console.py +44 -179
- sphinx/util/display.py +9 -10
- sphinx/util/docfields.py +140 -122
- sphinx/util/docstrings.py +1 -1
- sphinx/util/docutils.py +118 -77
- sphinx/util/fileutil.py +25 -26
- sphinx/util/http_date.py +2 -0
- sphinx/util/i18n.py +77 -64
- sphinx/util/images.py +8 -6
- sphinx/util/inspect.py +147 -38
- sphinx/util/inventory.py +215 -116
- sphinx/util/logging.py +33 -33
- sphinx/util/matching.py +12 -4
- sphinx/util/nodes.py +18 -13
- sphinx/util/osutil.py +38 -39
- sphinx/util/parallel.py +22 -13
- sphinx/util/parsing.py +2 -1
- sphinx/util/png.py +6 -2
- sphinx/util/requests.py +33 -2
- sphinx/util/rst.py +3 -2
- sphinx/util/tags.py +1 -1
- sphinx/util/template.py +18 -10
- sphinx/util/texescape.py +8 -6
- sphinx/util/typing.py +148 -122
- sphinx/versioning.py +3 -3
- sphinx/writers/html.py +3 -1
- sphinx/writers/html5.py +63 -52
- sphinx/writers/latex.py +83 -67
- sphinx/writers/manpage.py +19 -38
- sphinx/writers/texinfo.py +47 -47
- sphinx/writers/text.py +50 -32
- sphinx/writers/xml.py +11 -8
- {sphinx-8.1.2.dist-info → sphinx-8.2.0.dist-info}/LICENSE.rst +1 -1
- {sphinx-8.1.2.dist-info → sphinx-8.2.0.dist-info}/METADATA +25 -15
- sphinx-8.2.0.dist-info/RECORD +606 -0
- {sphinx-8.1.2.dist-info → sphinx-8.2.0.dist-info}/WHEEL +1 -1
- sphinx/builders/html/transforms.py +0 -90
- sphinx/ext/apidoc.py +0 -721
- sphinx/util/exceptions.py +0 -74
- sphinx-8.1.2.dist-info/RECORD +0 -598
- {sphinx-8.1.2.dist-info → sphinx-8.2.0.dist-info}/entry_points.txt +0 -0
sphinx/domains/changeset.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import TYPE_CHECKING,
|
|
5
|
+
from typing import TYPE_CHECKING, NamedTuple
|
|
6
6
|
|
|
7
7
|
from docutils import nodes
|
|
8
8
|
|
|
@@ -13,6 +13,7 @@ from sphinx.util.docutils import SphinxDirective
|
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
15
|
from collections.abc import Set
|
|
16
|
+
from typing import Any, ClassVar
|
|
16
17
|
|
|
17
18
|
from docutils.nodes import Node
|
|
18
19
|
|
|
@@ -22,17 +23,17 @@ if TYPE_CHECKING:
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
versionlabels = {
|
|
25
|
-
'versionadded':
|
|
26
|
+
'versionadded': _('Added in version %s'),
|
|
26
27
|
'versionchanged': _('Changed in version %s'),
|
|
27
|
-
'deprecated':
|
|
28
|
+
'deprecated': _('Deprecated since version %s'),
|
|
28
29
|
'versionremoved': _('Removed in version %s'),
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
versionlabel_classes = {
|
|
32
|
-
'versionadded':
|
|
33
|
-
'versionchanged':
|
|
34
|
-
'deprecated':
|
|
35
|
-
'versionremoved':
|
|
33
|
+
'versionadded': 'added',
|
|
34
|
+
'versionchanged': 'changed',
|
|
35
|
+
'deprecated': 'deprecated',
|
|
36
|
+
'versionremoved': 'removed',
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
|
|
@@ -41,14 +42,12 @@ class ChangeSet(NamedTuple):
|
|
|
41
42
|
docname: str
|
|
42
43
|
lineno: int
|
|
43
44
|
module: str | None
|
|
44
|
-
descname: str
|
|
45
|
+
descname: str
|
|
45
46
|
content: str
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
class VersionChange(SphinxDirective):
|
|
49
|
-
"""
|
|
50
|
-
Directive to describe a change/addition/deprecation in a specific version.
|
|
51
|
-
"""
|
|
50
|
+
"""Directive to describe a change/addition/deprecation in a specific version."""
|
|
52
51
|
|
|
53
52
|
has_content = True
|
|
54
53
|
required_arguments = 1
|
|
@@ -64,7 +63,9 @@ class VersionChange(SphinxDirective):
|
|
|
64
63
|
node['version'] = self.arguments[0]
|
|
65
64
|
text = versionlabels[self.name] % self.arguments[0]
|
|
66
65
|
if len(self.arguments) == 2:
|
|
67
|
-
inodes, messages = self.parse_inline(
|
|
66
|
+
inodes, messages = self.parse_inline(
|
|
67
|
+
self.arguments[1], lineno=self.lineno + 1
|
|
68
|
+
)
|
|
68
69
|
para = nodes.paragraph(self.arguments[1], '', *inodes, translatable=False)
|
|
69
70
|
self.set_source_info(para)
|
|
70
71
|
node.append(para)
|
|
@@ -81,21 +82,29 @@ class VersionChange(SphinxDirective):
|
|
|
81
82
|
content.source = node[0].source
|
|
82
83
|
content.line = node[0].line
|
|
83
84
|
content += node[0].children
|
|
84
|
-
node[0].replace_self(
|
|
85
|
+
node[0].replace_self(
|
|
86
|
+
nodes.paragraph('', '', content, translatable=False)
|
|
87
|
+
)
|
|
85
88
|
|
|
86
89
|
para = node[0]
|
|
87
90
|
para.insert(0, nodes.inline('', '%s: ' % text, classes=classes))
|
|
88
91
|
elif len(node) > 0:
|
|
89
92
|
# the contents do not starts with a paragraph
|
|
90
|
-
para = nodes.paragraph(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
+
para = nodes.paragraph(
|
|
94
|
+
'',
|
|
95
|
+
'',
|
|
96
|
+
nodes.inline('', '%s: ' % text, classes=classes),
|
|
97
|
+
translatable=False,
|
|
98
|
+
)
|
|
93
99
|
node.insert(0, para)
|
|
94
100
|
else:
|
|
95
101
|
# the contents are empty
|
|
96
|
-
para = nodes.paragraph(
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
para = nodes.paragraph(
|
|
103
|
+
'',
|
|
104
|
+
'',
|
|
105
|
+
nodes.inline('', '%s.' % text, classes=classes),
|
|
106
|
+
translatable=False,
|
|
107
|
+
)
|
|
99
108
|
node.append(para)
|
|
100
109
|
|
|
101
110
|
domain = self.env.domains.changeset_domain
|
|
@@ -113,7 +122,7 @@ class ChangeSetDomain(Domain):
|
|
|
113
122
|
label = 'changeset'
|
|
114
123
|
|
|
115
124
|
initial_data: dict[str, dict[str, list[ChangeSet]]] = {
|
|
116
|
-
'changes': {},
|
|
125
|
+
'changes': {}, # version -> list of ChangeSet
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
@property
|
|
@@ -123,9 +132,15 @@ class ChangeSetDomain(Domain):
|
|
|
123
132
|
def note_changeset(self, node: addnodes.versionmodified) -> None:
|
|
124
133
|
version = node['version']
|
|
125
134
|
module = self.env.ref_context.get('py:module')
|
|
126
|
-
objname = self.env.
|
|
127
|
-
changeset = ChangeSet(
|
|
128
|
-
|
|
135
|
+
objname = self.env.current_document.obj_desc_name
|
|
136
|
+
changeset = ChangeSet(
|
|
137
|
+
node['type'],
|
|
138
|
+
self.env.docname,
|
|
139
|
+
node.line, # type: ignore[arg-type]
|
|
140
|
+
module,
|
|
141
|
+
objname,
|
|
142
|
+
node.astext(),
|
|
143
|
+
)
|
|
129
144
|
self.changesets.setdefault(version, []).append(changeset)
|
|
130
145
|
|
|
131
146
|
def clear_doc(self, docname: str) -> None:
|
|
@@ -143,7 +158,7 @@ class ChangeSetDomain(Domain):
|
|
|
143
158
|
changes.append(changeset)
|
|
144
159
|
|
|
145
160
|
def process_doc(
|
|
146
|
-
self, env: BuildEnvironment, docname: str, document: nodes.document
|
|
161
|
+
self, env: BuildEnvironment, docname: str, document: nodes.document
|
|
147
162
|
) -> None:
|
|
148
163
|
pass # nothing to do here. All changesets are registered on calling directive.
|
|
149
164
|
|
sphinx/domains/citation.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import TYPE_CHECKING,
|
|
5
|
+
from typing import TYPE_CHECKING, cast
|
|
6
6
|
|
|
7
7
|
from docutils import nodes
|
|
8
8
|
|
|
@@ -15,6 +15,7 @@ from sphinx.util.nodes import copy_source_info, make_refnode
|
|
|
15
15
|
|
|
16
16
|
if TYPE_CHECKING:
|
|
17
17
|
from collections.abc import Set
|
|
18
|
+
from typing import Any
|
|
18
19
|
|
|
19
20
|
from docutils.nodes import Element
|
|
20
21
|
|
|
@@ -70,8 +71,14 @@ class CitationDomain(Domain):
|
|
|
70
71
|
label = node[0].astext()
|
|
71
72
|
if label in self.citations:
|
|
72
73
|
path = self.env.doc2path(self.citations[label][0])
|
|
73
|
-
logger.warning(
|
|
74
|
-
|
|
74
|
+
logger.warning(
|
|
75
|
+
__('duplicate citation %s, other instance in %s'),
|
|
76
|
+
label,
|
|
77
|
+
path,
|
|
78
|
+
location=node,
|
|
79
|
+
type='ref',
|
|
80
|
+
subtype='citation',
|
|
81
|
+
)
|
|
75
82
|
self.citations[label] = (node['docname'], node['ids'][0], node.line) # type: ignore[assignment]
|
|
76
83
|
|
|
77
84
|
def note_citation_reference(self, node: pending_xref) -> None:
|
|
@@ -81,23 +88,42 @@ class CitationDomain(Domain):
|
|
|
81
88
|
def check_consistency(self) -> None:
|
|
82
89
|
for name, (docname, _labelid, lineno) in self.citations.items():
|
|
83
90
|
if name not in self.citation_refs:
|
|
84
|
-
logger.warning(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
logger.warning(
|
|
92
|
+
__('Citation [%s] is not referenced.'),
|
|
93
|
+
name,
|
|
94
|
+
type='ref',
|
|
95
|
+
subtype='citation',
|
|
96
|
+
location=(docname, lineno),
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
def resolve_xref(
|
|
100
|
+
self,
|
|
101
|
+
env: BuildEnvironment,
|
|
102
|
+
fromdocname: str,
|
|
103
|
+
builder: Builder,
|
|
104
|
+
typ: str,
|
|
105
|
+
target: str,
|
|
106
|
+
node: pending_xref,
|
|
107
|
+
contnode: Element,
|
|
108
|
+
) -> nodes.reference | None:
|
|
90
109
|
docname, labelid, lineno = self.citations.get(target, ('', '', 0))
|
|
91
110
|
if not docname:
|
|
92
111
|
return None
|
|
93
112
|
|
|
94
|
-
return make_refnode(builder, fromdocname, docname,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
113
|
+
return make_refnode(builder, fromdocname, docname, labelid, contnode)
|
|
114
|
+
|
|
115
|
+
def resolve_any_xref(
|
|
116
|
+
self,
|
|
117
|
+
env: BuildEnvironment,
|
|
118
|
+
fromdocname: str,
|
|
119
|
+
builder: Builder,
|
|
120
|
+
target: str,
|
|
121
|
+
node: pending_xref,
|
|
122
|
+
contnode: Element,
|
|
123
|
+
) -> list[tuple[str, nodes.reference]]:
|
|
124
|
+
refnode = self.resolve_xref(
|
|
125
|
+
env, fromdocname, builder, 'ref', target, node, contnode
|
|
126
|
+
)
|
|
101
127
|
if refnode is None:
|
|
102
128
|
return []
|
|
103
129
|
else:
|
|
@@ -117,13 +143,12 @@ class CitationDefinitionTransform(SphinxTransform):
|
|
|
117
143
|
domain.note_citation(node)
|
|
118
144
|
|
|
119
145
|
# mark citation labels as not smartquoted
|
|
120
|
-
label = cast(nodes.label, node[0])
|
|
146
|
+
label = cast('nodes.label', node[0])
|
|
121
147
|
label['support_smartquotes'] = False
|
|
122
148
|
|
|
123
149
|
|
|
124
150
|
class CitationReferenceTransform(SphinxTransform):
|
|
125
|
-
"""
|
|
126
|
-
Replace citation references by pending_xref nodes before the default
|
|
151
|
+
"""Replace citation references by pending_xref nodes before the default
|
|
127
152
|
docutils transform tries to resolve them.
|
|
128
153
|
"""
|
|
129
154
|
|
|
@@ -133,11 +158,16 @@ class CitationReferenceTransform(SphinxTransform):
|
|
|
133
158
|
domain = self.env.domains.citation_domain
|
|
134
159
|
for node in self.document.findall(nodes.citation_reference):
|
|
135
160
|
target = node.astext()
|
|
136
|
-
ref = pending_xref(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
161
|
+
ref = pending_xref(
|
|
162
|
+
target,
|
|
163
|
+
refdomain='citation',
|
|
164
|
+
reftype='ref',
|
|
165
|
+
reftarget=target,
|
|
166
|
+
refwarn=True,
|
|
167
|
+
support_smartquotes=False,
|
|
168
|
+
ids=node['ids'],
|
|
169
|
+
classes=node.get('classes', []),
|
|
170
|
+
)
|
|
141
171
|
ref += nodes.inline(target, '[%s]' % target)
|
|
142
172
|
copy_source_info(node, ref)
|
|
143
173
|
node.replace_self(ref)
|