Sphinx 8.1.2__py3-none-any.whl → 8.2.0rc1__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.

Files changed (193) hide show
  1. sphinx/__init__.py +8 -4
  2. sphinx/__main__.py +2 -0
  3. sphinx/_cli/__init__.py +2 -5
  4. sphinx/_cli/util/colour.py +34 -11
  5. sphinx/_cli/util/errors.py +128 -61
  6. sphinx/addnodes.py +51 -35
  7. sphinx/application.py +362 -230
  8. sphinx/builders/__init__.py +87 -64
  9. sphinx/builders/_epub_base.py +65 -56
  10. sphinx/builders/changes.py +17 -23
  11. sphinx/builders/dirhtml.py +8 -13
  12. sphinx/builders/epub3.py +70 -38
  13. sphinx/builders/gettext.py +93 -73
  14. sphinx/builders/html/__init__.py +240 -186
  15. sphinx/builders/html/_assets.py +9 -2
  16. sphinx/builders/html/_build_info.py +3 -0
  17. sphinx/builders/latex/__init__.py +64 -54
  18. sphinx/builders/latex/constants.py +14 -11
  19. sphinx/builders/latex/nodes.py +2 -0
  20. sphinx/builders/latex/theming.py +8 -9
  21. sphinx/builders/latex/transforms.py +7 -5
  22. sphinx/builders/linkcheck.py +193 -149
  23. sphinx/builders/manpage.py +17 -17
  24. sphinx/builders/singlehtml.py +28 -16
  25. sphinx/builders/texinfo.py +28 -21
  26. sphinx/builders/text.py +10 -15
  27. sphinx/builders/xml.py +10 -19
  28. sphinx/cmd/build.py +49 -119
  29. sphinx/cmd/make_mode.py +35 -31
  30. sphinx/cmd/quickstart.py +78 -62
  31. sphinx/config.py +265 -163
  32. sphinx/directives/__init__.py +51 -54
  33. sphinx/directives/admonitions.py +107 -0
  34. sphinx/directives/code.py +24 -19
  35. sphinx/directives/other.py +21 -42
  36. sphinx/directives/patches.py +28 -16
  37. sphinx/domains/__init__.py +54 -31
  38. sphinx/domains/_domains_container.py +22 -17
  39. sphinx/domains/_index.py +5 -8
  40. sphinx/domains/c/__init__.py +366 -245
  41. sphinx/domains/c/_ast.py +378 -256
  42. sphinx/domains/c/_ids.py +89 -31
  43. sphinx/domains/c/_parser.py +283 -214
  44. sphinx/domains/c/_symbol.py +269 -198
  45. sphinx/domains/changeset.py +39 -24
  46. sphinx/domains/citation.py +54 -24
  47. sphinx/domains/cpp/__init__.py +517 -362
  48. sphinx/domains/cpp/_ast.py +999 -682
  49. sphinx/domains/cpp/_ids.py +133 -65
  50. sphinx/domains/cpp/_parser.py +746 -588
  51. sphinx/domains/cpp/_symbol.py +692 -489
  52. sphinx/domains/index.py +10 -8
  53. sphinx/domains/javascript.py +152 -74
  54. sphinx/domains/math.py +48 -40
  55. sphinx/domains/python/__init__.py +402 -211
  56. sphinx/domains/python/_annotations.py +114 -57
  57. sphinx/domains/python/_object.py +151 -67
  58. sphinx/domains/rst.py +94 -49
  59. sphinx/domains/std/__init__.py +510 -249
  60. sphinx/environment/__init__.py +345 -61
  61. sphinx/environment/adapters/asset.py +7 -1
  62. sphinx/environment/adapters/indexentries.py +15 -20
  63. sphinx/environment/adapters/toctree.py +19 -9
  64. sphinx/environment/collectors/__init__.py +3 -1
  65. sphinx/environment/collectors/asset.py +18 -15
  66. sphinx/environment/collectors/dependencies.py +8 -10
  67. sphinx/environment/collectors/metadata.py +6 -4
  68. sphinx/environment/collectors/title.py +3 -1
  69. sphinx/environment/collectors/toctree.py +4 -4
  70. sphinx/errors.py +1 -3
  71. sphinx/events.py +4 -4
  72. sphinx/ext/apidoc/__init__.py +21 -0
  73. sphinx/ext/apidoc/__main__.py +9 -0
  74. sphinx/ext/apidoc/_cli.py +356 -0
  75. sphinx/ext/apidoc/_generate.py +356 -0
  76. sphinx/ext/apidoc/_shared.py +66 -0
  77. sphinx/ext/autodoc/__init__.py +837 -483
  78. sphinx/ext/autodoc/directive.py +57 -21
  79. sphinx/ext/autodoc/importer.py +184 -67
  80. sphinx/ext/autodoc/mock.py +25 -10
  81. sphinx/ext/autodoc/preserve_defaults.py +17 -9
  82. sphinx/ext/autodoc/type_comment.py +56 -29
  83. sphinx/ext/autodoc/typehints.py +49 -26
  84. sphinx/ext/autosectionlabel.py +28 -11
  85. sphinx/ext/autosummary/__init__.py +271 -143
  86. sphinx/ext/autosummary/generate.py +121 -51
  87. sphinx/ext/coverage.py +152 -91
  88. sphinx/ext/doctest.py +169 -101
  89. sphinx/ext/duration.py +12 -6
  90. sphinx/ext/extlinks.py +33 -21
  91. sphinx/ext/githubpages.py +8 -8
  92. sphinx/ext/graphviz.py +175 -109
  93. sphinx/ext/ifconfig.py +11 -6
  94. sphinx/ext/imgconverter.py +48 -25
  95. sphinx/ext/imgmath.py +127 -97
  96. sphinx/ext/inheritance_diagram.py +177 -103
  97. sphinx/ext/intersphinx/__init__.py +22 -13
  98. sphinx/ext/intersphinx/__main__.py +3 -1
  99. sphinx/ext/intersphinx/_cli.py +18 -14
  100. sphinx/ext/intersphinx/_load.py +91 -82
  101. sphinx/ext/intersphinx/_resolve.py +108 -74
  102. sphinx/ext/intersphinx/_shared.py +2 -2
  103. sphinx/ext/linkcode.py +28 -12
  104. sphinx/ext/mathjax.py +60 -29
  105. sphinx/ext/napoleon/__init__.py +19 -7
  106. sphinx/ext/napoleon/docstring.py +229 -231
  107. sphinx/ext/todo.py +44 -49
  108. sphinx/ext/viewcode.py +105 -57
  109. sphinx/extension.py +3 -1
  110. sphinx/highlighting.py +13 -7
  111. sphinx/io.py +9 -13
  112. sphinx/jinja2glue.py +29 -26
  113. sphinx/locale/__init__.py +8 -9
  114. sphinx/parsers.py +8 -7
  115. sphinx/project.py +2 -2
  116. sphinx/pycode/__init__.py +31 -21
  117. sphinx/pycode/ast.py +6 -3
  118. sphinx/pycode/parser.py +14 -8
  119. sphinx/pygments_styles.py +4 -5
  120. sphinx/registry.py +192 -92
  121. sphinx/roles.py +58 -7
  122. sphinx/search/__init__.py +75 -54
  123. sphinx/search/en.py +11 -13
  124. sphinx/search/fi.py +1 -1
  125. sphinx/search/ja.py +8 -6
  126. sphinx/search/nl.py +1 -1
  127. sphinx/search/zh.py +19 -21
  128. sphinx/testing/fixtures.py +26 -29
  129. sphinx/testing/path.py +26 -62
  130. sphinx/testing/restructuredtext.py +14 -8
  131. sphinx/testing/util.py +21 -19
  132. sphinx/texinputs/make.bat.jinja +50 -50
  133. sphinx/texinputs/sphinx.sty +4 -3
  134. sphinx/texinputs/sphinxlatexadmonitions.sty +1 -1
  135. sphinx/texinputs/sphinxlatexobjects.sty +29 -10
  136. sphinx/themes/basic/static/searchtools.js +8 -5
  137. sphinx/theming.py +49 -61
  138. sphinx/transforms/__init__.py +17 -38
  139. sphinx/transforms/compact_bullet_list.py +5 -3
  140. sphinx/transforms/i18n.py +8 -21
  141. sphinx/transforms/post_transforms/__init__.py +142 -93
  142. sphinx/transforms/post_transforms/code.py +5 -5
  143. sphinx/transforms/post_transforms/images.py +28 -24
  144. sphinx/transforms/references.py +3 -1
  145. sphinx/util/__init__.py +109 -60
  146. sphinx/util/_files.py +39 -23
  147. sphinx/util/_importer.py +4 -1
  148. sphinx/util/_inventory_file_reader.py +76 -0
  149. sphinx/util/_io.py +2 -2
  150. sphinx/util/_lines.py +6 -3
  151. sphinx/util/_pathlib.py +40 -2
  152. sphinx/util/build_phase.py +2 -0
  153. sphinx/util/cfamily.py +19 -14
  154. sphinx/util/console.py +44 -179
  155. sphinx/util/display.py +9 -10
  156. sphinx/util/docfields.py +140 -122
  157. sphinx/util/docstrings.py +1 -1
  158. sphinx/util/docutils.py +118 -77
  159. sphinx/util/fileutil.py +25 -26
  160. sphinx/util/http_date.py +2 -0
  161. sphinx/util/i18n.py +77 -64
  162. sphinx/util/images.py +8 -6
  163. sphinx/util/inspect.py +147 -38
  164. sphinx/util/inventory.py +215 -116
  165. sphinx/util/logging.py +33 -33
  166. sphinx/util/matching.py +12 -4
  167. sphinx/util/nodes.py +18 -13
  168. sphinx/util/osutil.py +38 -39
  169. sphinx/util/parallel.py +22 -13
  170. sphinx/util/parsing.py +2 -1
  171. sphinx/util/png.py +6 -2
  172. sphinx/util/requests.py +33 -2
  173. sphinx/util/rst.py +3 -2
  174. sphinx/util/tags.py +1 -1
  175. sphinx/util/template.py +18 -10
  176. sphinx/util/texescape.py +8 -6
  177. sphinx/util/typing.py +148 -122
  178. sphinx/versioning.py +3 -3
  179. sphinx/writers/html.py +3 -1
  180. sphinx/writers/html5.py +61 -50
  181. sphinx/writers/latex.py +80 -65
  182. sphinx/writers/manpage.py +19 -38
  183. sphinx/writers/texinfo.py +44 -45
  184. sphinx/writers/text.py +48 -30
  185. sphinx/writers/xml.py +11 -8
  186. {sphinx-8.1.2.dist-info → sphinx-8.2.0rc1.dist-info}/LICENSE.rst +1 -1
  187. {sphinx-8.1.2.dist-info → sphinx-8.2.0rc1.dist-info}/METADATA +23 -15
  188. {sphinx-8.1.2.dist-info → sphinx-8.2.0rc1.dist-info}/RECORD +190 -186
  189. {sphinx-8.1.2.dist-info → sphinx-8.2.0rc1.dist-info}/WHEEL +1 -1
  190. sphinx/builders/html/transforms.py +0 -90
  191. sphinx/ext/apidoc.py +0 -721
  192. sphinx/util/exceptions.py +0 -74
  193. {sphinx-8.1.2.dist-info → sphinx-8.2.0rc1.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,4 @@
1
- """
2
- Important note on ids
1
+ """Important note on ids
3
2
  ----------------------------------------------------------------------------
4
3
 
5
4
  Multiple id generation schemes are used due to backwards compatibility.
@@ -253,14 +252,22 @@ namespace_object:
253
252
  from __future__ import annotations
254
253
 
255
254
  import re
256
-
257
- udl_identifier_re = re.compile(r'''
258
- [a-zA-Z_][a-zA-Z0-9_]*\b # note, no word boundary in the beginning
259
- ''', re.VERBOSE)
260
- _string_re = re.compile(r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'"
261
- r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.DOTALL)
255
+ from typing import TYPE_CHECKING
256
+
257
+ if TYPE_CHECKING:
258
+ from collections.abc import Sequence, Set
259
+
260
+ udl_identifier_re = re.compile(
261
+ r'[a-zA-Z_][a-zA-Z0-9_]*\b' # note, no word boundary in the beginning
262
+ )
263
+ _string_re = re.compile(
264
+ r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'"
265
+ r'|"([^"\\]*(?:\\.[^"\\]*)*)")',
266
+ re.DOTALL,
267
+ )
262
268
  _visibility_re = re.compile(r'\b(public|private|protected)\b')
263
- _operator_re = re.compile(r'''
269
+ _operator_re = re.compile(
270
+ r"""
264
271
  \[\s*\]
265
272
  | \(\s*\)
266
273
  | \+\+ | --
@@ -269,33 +276,49 @@ _operator_re = re.compile(r'''
269
276
  | <=>
270
277
  | [!<>=/*%+|&^~-]=?
271
278
  | (\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq)\b)
272
- ''', re.VERBOSE)
273
- _fold_operator_re = re.compile(r'''
279
+ """,
280
+ re.VERBOSE,
281
+ )
282
+ _fold_operator_re = re.compile(
283
+ r"""
274
284
  ->\* | \.\* | \,
275
285
  | (<<|>>)=? | && | \|\|
276
286
  | !=
277
287
  | [<>=/*%+|&^~-]=?
278
- ''', re.VERBOSE)
288
+ """,
289
+ re.VERBOSE,
290
+ )
279
291
  # see https://en.cppreference.com/w/cpp/keyword
280
- _keywords = [
281
- 'alignas', 'alignof', 'and', 'and_eq', 'asm', 'auto', 'bitand', 'bitor',
282
- 'bool', 'break', 'case', 'catch', 'char', 'char8_t', 'char16_t', 'char32_t',
283
- 'class', 'compl', 'concept', 'const', 'consteval', 'constexpr', 'constinit',
284
- 'const_cast', 'continue',
285
- 'decltype', 'default', 'delete', 'do', 'double', 'dynamic_cast', 'else',
286
- 'enum', 'explicit', 'export', 'extern', 'false', 'float', 'for', 'friend',
287
- 'goto', 'if', 'inline', 'int', 'long', 'mutable', 'namespace', 'new',
288
- 'noexcept', 'not', 'not_eq', 'nullptr', 'operator', 'or', 'or_eq',
289
- 'private', 'protected', 'public', 'register', 'reinterpret_cast',
290
- 'requires', 'return', 'short', 'signed', 'sizeof', 'static',
291
- 'static_assert', 'static_cast', 'struct', 'switch', 'template', 'this',
292
- 'thread_local', 'throw', 'true', 'try', 'typedef', 'typeid', 'typename',
293
- 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t',
294
- 'while', 'xor', 'xor_eq',
295
- ]
296
-
297
-
298
- _simple_type_specifiers_re = re.compile(r"""
292
+ _keywords: Set[str] = frozenset({
293
+ 'alignas', 'alignof', 'and', 'and_eq', 'asm', 'auto',
294
+ 'bitand', 'bitor', 'bool', 'break',
295
+ 'case', 'catch', 'class', 'compl', 'concept', 'continue',
296
+ 'char', 'char8_t', 'char16_t', 'char32_t',
297
+ 'const', 'const_cast', 'consteval', 'constexpr', 'constinit',
298
+ 'decltype', 'default', 'delete', 'do', 'double', 'dynamic_cast',
299
+ 'else', 'enum', 'explicit', 'export', 'extern',
300
+ 'false', 'float', 'for', 'friend',
301
+ 'goto',
302
+ 'if', 'inline', 'int',
303
+ 'long',
304
+ 'mutable',
305
+ 'namespace', 'new', 'noexcept', 'not', 'not_eq', 'nullptr',
306
+ 'operator', 'or', 'or_eq',
307
+ 'private', 'protected', 'public',
308
+ 'register', 'reinterpret_cast', 'requires', 'return',
309
+ 'short', 'signed', 'sizeof', 'static',
310
+ 'static_assert', 'static_cast', 'struct', 'switch',
311
+ 'template', 'this', 'thread_local', 'throw',
312
+ 'true', 'try', 'typedef', 'typeid', 'typename',
313
+ 'union', 'unsigned', 'using',
314
+ 'virtual', 'void', 'volatile',
315
+ 'wchar_t', 'while',
316
+ 'xor', 'xor_eq',
317
+ }) # fmt: skip
318
+
319
+
320
+ _simple_type_specifiers_re = re.compile(
321
+ r"""
299
322
  \b(
300
323
  auto|void|bool
301
324
  |signed|unsigned
@@ -307,10 +330,12 @@ _simple_type_specifiers_re = re.compile(r"""
307
330
  |__float80|_Float64x|__float128|_Float128 # extension
308
331
  |_Complex|_Imaginary # extension
309
332
  )\b
310
- """, re.VERBOSE)
333
+ """,
334
+ re.VERBOSE,
335
+ )
311
336
 
312
337
  _max_id = 4
313
- _id_prefix = [None, '', '_CPPv2', '_CPPv3', '_CPPv4']
338
+ _id_prefix: Sequence[str] = ('', '', '_CPPv2', '_CPPv3', '_CPPv4')
314
339
  # Ids are used in lookup keys which are used across pickled files,
315
340
  # so when _max_id changes, make sure to update the ENV_VERSION.
316
341
 
@@ -433,8 +458,10 @@ _id_fundamental_v2 = {
433
458
  'float': 'f',
434
459
  'double': 'd',
435
460
  'long double': 'e',
436
- '__float80': 'e', '_Float64x': 'e',
437
- '__float128': 'g', '_Float128': 'g',
461
+ '__float80': 'e',
462
+ '_Float64x': 'e',
463
+ '__float128': 'g',
464
+ '_Float128': 'g',
438
465
  '_Complex float': 'Cf',
439
466
  '_Complex double': 'Cd',
440
467
  '_Complex long double': 'Ce',
@@ -456,38 +483,49 @@ _id_operator_v2 = {
456
483
  # '-(unary)' : 'ng',
457
484
  # '&(unary)' : 'ad',
458
485
  # '*(unary)' : 'de',
459
- '~': 'co', 'compl': 'co',
486
+ '~': 'co',
487
+ 'compl': 'co',
460
488
  '+': 'pl',
461
489
  '-': 'mi',
462
490
  '*': 'ml',
463
491
  '/': 'dv',
464
492
  '%': 'rm',
465
- '&': 'an', 'bitand': 'an',
466
- '|': 'or', 'bitor': 'or',
467
- '^': 'eo', 'xor': 'eo',
493
+ '&': 'an',
494
+ 'bitand': 'an',
495
+ '|': 'or',
496
+ 'bitor': 'or',
497
+ '^': 'eo',
498
+ 'xor': 'eo',
468
499
  '=': 'aS',
469
500
  '+=': 'pL',
470
501
  '-=': 'mI',
471
502
  '*=': 'mL',
472
503
  '/=': 'dV',
473
504
  '%=': 'rM',
474
- '&=': 'aN', 'and_eq': 'aN',
475
- '|=': 'oR', 'or_eq': 'oR',
476
- '^=': 'eO', 'xor_eq': 'eO',
505
+ '&=': 'aN',
506
+ 'and_eq': 'aN',
507
+ '|=': 'oR',
508
+ 'or_eq': 'oR',
509
+ '^=': 'eO',
510
+ 'xor_eq': 'eO',
477
511
  '<<': 'ls',
478
512
  '>>': 'rs',
479
513
  '<<=': 'lS',
480
514
  '>>=': 'rS',
481
515
  '==': 'eq',
482
- '!=': 'ne', 'not_eq': 'ne',
516
+ '!=': 'ne',
517
+ 'not_eq': 'ne',
483
518
  '<': 'lt',
484
519
  '>': 'gt',
485
520
  '<=': 'le',
486
521
  '>=': 'ge',
487
522
  '<=>': 'ss',
488
- '!': 'nt', 'not': 'nt',
489
- '&&': 'aa', 'and': 'aa',
490
- '||': 'oo', 'or': 'oo',
523
+ '!': 'nt',
524
+ 'not': 'nt',
525
+ '&&': 'aa',
526
+ 'and': 'aa',
527
+ '||': 'oo',
528
+ 'or': 'oo',
491
529
  '++': 'pp',
492
530
  '--': 'mm',
493
531
  ',': 'cm',
@@ -505,30 +543,60 @@ _id_operator_unary_v2 = {
505
543
  '&': 'ad',
506
544
  '+': 'ps',
507
545
  '-': 'ng',
508
- '!': 'nt', 'not': 'nt',
509
- '~': 'co', 'compl': 'co',
546
+ '!': 'nt',
547
+ 'not': 'nt',
548
+ '~': 'co',
549
+ 'compl': 'co',
510
550
  }
511
551
  _id_char_from_prefix: dict[str | None, str] = {
512
- None: 'c', 'u8': 'c',
513
- 'u': 'Ds', 'U': 'Di', 'L': 'w',
552
+ None: 'c',
553
+ 'u8': 'c',
554
+ 'u': 'Ds',
555
+ 'U': 'Di',
556
+ 'L': 'w',
514
557
  }
515
558
  # these are ordered by preceedence
516
- _expression_bin_ops = [
517
- ['||', 'or'],
518
- ['&&', 'and'],
519
- ['|', 'bitor'],
520
- ['^', 'xor'],
521
- ['&', 'bitand'],
522
- ['==', '!=', 'not_eq'],
523
- ['<=>', '<=', '>=', '<', '>'],
524
- ['<<', '>>'],
525
- ['+', '-'],
526
- ['*', '/', '%'],
527
- ['.*', '->*'],
559
+ _expression_bin_ops: Sequence[tuple[str, ...]] = [
560
+ ('||', 'or'),
561
+ ('&&', 'and'),
562
+ ('|', 'bitor'),
563
+ ('^', 'xor'),
564
+ ('&', 'bitand'),
565
+ ('==', '!=', 'not_eq'),
566
+ ('<=>', '<=', '>=', '<', '>'),
567
+ ('<<', '>>'),
568
+ ('+', '-'),
569
+ ('*', '/', '%'),
570
+ ('.*', '->*'),
571
+ ]
572
+ _expression_unary_ops: Sequence[str] = [
573
+ '++',
574
+ '--',
575
+ '*',
576
+ '&',
577
+ '+',
578
+ '-',
579
+ '!',
580
+ 'not',
581
+ '~',
582
+ 'compl',
583
+ ]
584
+ _expression_assignment_ops: Sequence[str] = [
585
+ '=',
586
+ '*=',
587
+ '/=',
588
+ '%=',
589
+ '+=',
590
+ '-=',
591
+ '>>=',
592
+ '<<=',
593
+ '&=',
594
+ 'and_eq',
595
+ '^=',
596
+ '|=',
597
+ 'xor_eq',
598
+ 'or_eq',
528
599
  ]
529
- _expression_unary_ops = ["++", "--", "*", "&", "+", "-", "!", "not", "~", "compl"]
530
- _expression_assignment_ops = ["=", "*=", "/=", "%=", "+=", "-=",
531
- ">>=", "<<=", "&=", "and_eq", "^=", "|=", "xor_eq", "or_eq"]
532
600
  _id_explicit_cast = {
533
601
  'dynamic_cast': 'dc',
534
602
  'static_cast': 'sc',