Sphinx 7.4.5__py3-none-any.whl → 7.4.7__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/util/fileutil.py CHANGED
@@ -8,12 +8,15 @@ from typing import TYPE_CHECKING, Any, Callable
8
8
 
9
9
  from docutils.utils import relative_path
10
10
 
11
+ from sphinx.util import logging
11
12
  from sphinx.util.osutil import copyfile, ensuredir
12
13
 
13
14
  if TYPE_CHECKING:
14
15
  from sphinx.util.template import BaseRenderer
15
16
  from sphinx.util.typing import PathMatcher
16
17
 
18
+ logger = logging.getLogger(__name__)
19
+
17
20
 
18
21
  def _template_basename(filename: str | os.PathLike[str]) -> str | None:
19
22
  """Given an input filename:
@@ -30,7 +33,8 @@ def _template_basename(filename: str | os.PathLike[str]) -> str | None:
30
33
 
31
34
  def copy_asset_file(source: str | os.PathLike[str], destination: str | os.PathLike[str],
32
35
  context: dict[str, Any] | None = None,
33
- renderer: BaseRenderer | None = None) -> None:
36
+ renderer: BaseRenderer | None = None,
37
+ *, __overwrite_warning__: bool = True) -> None:
34
38
  """Copy an asset file to destination.
35
39
 
36
40
  On copying, it expands the template variables if context argument is given and
@@ -56,17 +60,38 @@ def copy_asset_file(source: str | os.PathLike[str], destination: str | os.PathLi
56
60
  renderer = SphinxRenderer()
57
61
 
58
62
  with open(source, encoding='utf-8') as fsrc:
59
- destination = _template_basename(destination) or destination
60
- with open(destination, 'w', encoding='utf-8') as fdst:
61
- fdst.write(renderer.render_string(fsrc.read(), context))
63
+ template_content = fsrc.read()
64
+ rendered_template = renderer.render_string(template_content, context)
65
+
66
+ if (
67
+ __overwrite_warning__
68
+ and os.path.exists(destination)
69
+ and template_content != rendered_template
70
+ ):
71
+ # Consider raising an error in Sphinx 8.
72
+ # Certainly make overwriting user content opt-in.
73
+ # xref: RemovedInSphinx80Warning
74
+ # xref: https://github.com/sphinx-doc/sphinx/issues/12096
75
+ msg = ('Copying the rendered template %s to %s will overwrite data, '
76
+ 'as a file already exists at the destination path '
77
+ 'and the content does not match.')
78
+ # See https://github.com/sphinx-doc/sphinx/pull/12627#issuecomment-2241144330
79
+ # for the rationale for logger.info().
80
+ logger.info(msg, os.fsdecode(source), os.fsdecode(destination),
81
+ type='misc', subtype='copy_overwrite')
82
+
83
+ destination = _template_basename(destination) or destination
84
+ with open(destination, 'w', encoding='utf-8') as fdst:
85
+ fdst.write(rendered_template)
62
86
  else:
63
- copyfile(source, destination)
87
+ copyfile(source, destination, __overwrite_warning__=__overwrite_warning__)
64
88
 
65
89
 
66
90
  def copy_asset(source: str | os.PathLike[str], destination: str | os.PathLike[str],
67
91
  excluded: PathMatcher = lambda path: False,
68
92
  context: dict[str, Any] | None = None, renderer: BaseRenderer | None = None,
69
- onerror: Callable[[str, Exception], None] | None = None) -> None:
93
+ onerror: Callable[[str, Exception], None] | None = None,
94
+ *, __overwrite_warning__: bool = True) -> None:
70
95
  """Copy asset files to destination recursively.
71
96
 
72
97
  On copying, it expands the template variables if context argument is given and
@@ -88,7 +113,8 @@ def copy_asset(source: str | os.PathLike[str], destination: str | os.PathLike[st
88
113
 
89
114
  ensuredir(destination)
90
115
  if os.path.isfile(source):
91
- copy_asset_file(source, destination, context, renderer)
116
+ copy_asset_file(source, destination, context, renderer,
117
+ __overwrite_warning__=__overwrite_warning__)
92
118
  return
93
119
 
94
120
  for root, dirs, files in os.walk(source, followlinks=True):
@@ -104,7 +130,8 @@ def copy_asset(source: str | os.PathLike[str], destination: str | os.PathLike[st
104
130
  try:
105
131
  copy_asset_file(posixpath.join(root, filename),
106
132
  posixpath.join(destination, reldir),
107
- context, renderer)
133
+ context, renderer,
134
+ __overwrite_warning__=__overwrite_warning__)
108
135
  except Exception as exc:
109
136
  if onerror:
110
137
  onerror(posixpath.join(root, filename), exc)
sphinx/util/inspect.py CHANGED
@@ -652,7 +652,7 @@ def signature(
652
652
  try:
653
653
  # Resolve annotations using ``get_type_hints()`` and type_aliases.
654
654
  localns = TypeAliasNamespace(type_aliases)
655
- annotations = typing.get_type_hints(subject, None, localns)
655
+ annotations = typing.get_type_hints(subject, None, localns, include_extras=True)
656
656
  for i, param in enumerate(parameters):
657
657
  if param.name in annotations:
658
658
  annotation = annotations[param.name]
sphinx/util/inventory.py CHANGED
@@ -172,8 +172,8 @@ class InventoryFile:
172
172
  inv_item: InventoryItem = projname, version, location, dispname
173
173
  invdata.setdefault(type, {})[name] = inv_item
174
174
  for ambiguity in actual_ambiguities:
175
- logger.warning(__("inventory <%s> contains multiple definitions for %s"),
176
- uri, ambiguity, type='intersphinx', subtype='external')
175
+ logger.info(__("inventory <%s> contains multiple definitions for %s"),
176
+ uri, ambiguity, type='intersphinx', subtype='external')
177
177
  return invdata
178
178
 
179
179
  @classmethod
sphinx/util/osutil.py CHANGED
@@ -88,7 +88,12 @@ def copytimes(source: str | os.PathLike[str], dest: str | os.PathLike[str]) -> N
88
88
  os.utime(dest, (st.st_atime, st.st_mtime))
89
89
 
90
90
 
91
- def copyfile(source: str | os.PathLike[str], dest: str | os.PathLike[str]) -> None:
91
+ def copyfile(
92
+ source: str | os.PathLike[str],
93
+ dest: str | os.PathLike[str],
94
+ *,
95
+ __overwrite_warning__: bool = True,
96
+ ) -> None:
92
97
  """Copy a file and its modification times, if possible.
93
98
 
94
99
  :param source: An existing source to copy.
@@ -101,7 +106,24 @@ def copyfile(source: str | os.PathLike[str], dest: str | os.PathLike[str]) -> No
101
106
  msg = f'{os.fsdecode(source)} does not exist'
102
107
  raise FileNotFoundError(msg)
103
108
 
104
- if not path.exists(dest) or not filecmp.cmp(source, dest):
109
+ if (
110
+ not (dest_exists := path.exists(dest)) or
111
+ # comparison must be done using shallow=False since
112
+ # two different files might have the same size
113
+ not filecmp.cmp(source, dest, shallow=False)
114
+ ):
115
+ if __overwrite_warning__ and dest_exists:
116
+ # sphinx.util.logging imports sphinx.util.osutil,
117
+ # so use a local import to avoid circular imports
118
+ from sphinx.util import logging
119
+ logger = logging.getLogger(__name__)
120
+
121
+ msg = ('Copying the source path %s to %s will overwrite data, '
122
+ 'as a file already exists at the destination path '
123
+ 'and the content does not match.')
124
+ logger.info(msg, os.fsdecode(source), os.fsdecode(dest),
125
+ type='misc', subtype='copy_overwrite')
126
+
105
127
  shutil.copyfile(source, dest)
106
128
  with contextlib.suppress(OSError):
107
129
  # don't do full copystat because the source may be read-only
sphinx/util/typing.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import dataclasses
5
6
  import sys
6
7
  import types
7
8
  import typing
@@ -157,6 +158,7 @@ def get_type_hints(
157
158
  obj: Any,
158
159
  globalns: dict[str, Any] | None = None,
159
160
  localns: dict[str, Any] | None = None,
161
+ include_extras: bool = False,
160
162
  ) -> dict[str, Any]:
161
163
  """Return a dictionary containing type hints for a function, method, module or class
162
164
  object.
@@ -167,7 +169,7 @@ def get_type_hints(
167
169
  from sphinx.util.inspect import safe_getattr # lazy loading
168
170
 
169
171
  try:
170
- return typing.get_type_hints(obj, globalns, localns)
172
+ return typing.get_type_hints(obj, globalns, localns, include_extras=include_extras)
171
173
  except NameError:
172
174
  # Failed to evaluate ForwardRef (maybe TYPE_CHECKING)
173
175
  return safe_getattr(obj, '__annotations__', {})
@@ -267,7 +269,20 @@ def restify(cls: Any, mode: _RestifyMode = 'fully-qualified-except-typing') -> s
267
269
  return f':py:class:`{module_prefix}{_INVALID_BUILTIN_CLASSES[cls]}`'
268
270
  elif _is_annotated_form(cls):
269
271
  args = restify(cls.__args__[0], mode)
270
- meta = ', '.join(map(repr, cls.__metadata__))
272
+ meta_args = []
273
+ for m in cls.__metadata__:
274
+ if isinstance(m, type):
275
+ meta_args.append(restify(m, mode))
276
+ elif dataclasses.is_dataclass(m):
277
+ # use restify for the repr of field values rather than repr
278
+ d_fields = ', '.join([
279
+ fr"{f.name}=\ {restify(getattr(m, f.name), mode)}"
280
+ for f in dataclasses.fields(m) if f.repr
281
+ ])
282
+ meta_args.append(fr'{restify(type(m), mode)}\ ({d_fields})')
283
+ else:
284
+ meta_args.append(repr(m))
285
+ meta = ', '.join(meta_args)
271
286
  if sys.version_info[:2] <= (3, 11):
272
287
  # Hardcoded to fix errors on Python 3.11 and earlier.
273
288
  return fr':py:class:`~typing.Annotated`\ [{args}, {meta}]'
@@ -510,7 +525,25 @@ def stringify_annotation(
510
525
  return f'{module_prefix}Literal[{args}]'
511
526
  elif _is_annotated_form(annotation): # for py39+
512
527
  args = stringify_annotation(annotation_args[0], mode)
513
- meta = ', '.join(map(repr, annotation.__metadata__))
528
+ meta_args = []
529
+ for m in annotation.__metadata__:
530
+ if isinstance(m, type):
531
+ meta_args.append(stringify_annotation(m, mode))
532
+ elif dataclasses.is_dataclass(m):
533
+ # use stringify_annotation for the repr of field values rather than repr
534
+ d_fields = ', '.join([
535
+ f"{f.name}={stringify_annotation(getattr(m, f.name), mode)}"
536
+ for f in dataclasses.fields(m) if f.repr
537
+ ])
538
+ meta_args.append(f'{stringify_annotation(type(m), mode)}({d_fields})')
539
+ else:
540
+ meta_args.append(repr(m))
541
+ meta = ', '.join(meta_args)
542
+ if sys.version_info[:2] <= (3, 9):
543
+ if mode == 'smart':
544
+ return f'~typing.Annotated[{args}, {meta}]'
545
+ if mode == 'fully-qualified':
546
+ return f'typing.Annotated[{args}, {meta}]'
514
547
  if sys.version_info[:2] <= (3, 11):
515
548
  if mode == 'fully-qualified-except-typing':
516
549
  return f'Annotated[{args}, {meta}]'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Sphinx
3
- Version: 7.4.5
3
+ Version: 7.4.7
4
4
  Summary: Python documentation generator
5
5
  Author-email: Georg Brandl <georg@python.org>
6
6
  Requires-Python: >=3.9
@@ -1,4 +1,4 @@
1
- sphinx/__init__.py,sha256=TqYrt2tp3rjs1RkaHALTKgB-3G0yAjYd6Jpp5JDsPgs,1690
1
+ sphinx/__init__.py,sha256=n_3UX2bosIUYD6ZrQj7qrFlxFUMGyoi3yjcppOJ6NqI,1690
2
2
  sphinx/__main__.py,sha256=wIifwXlZHdi4gtQmkJ6KF0BsflvD9o0Wd5nARTdJc8A,127
3
3
  sphinx/addnodes.py,sha256=EQTIi9Zta6DaNa-2WGE3l9AVjdp7WzwwrfwRnax8vXE,18707
4
4
  sphinx/application.py,sha256=5QXM7tYRt1s4q00GHPtAK2EIxu6G_UkzMB3MOKOkuUI,57793
@@ -35,7 +35,7 @@ sphinx/builders/singlehtml.py,sha256=mYsB_J5AOi7wEswNbH0v5XXZnmZkBmLRHJaQtz_nB-c
35
35
  sphinx/builders/texinfo.py,sha256=cROws1DmYPp4-_uD62Ryu7Vn5Kv-JYIH1YCCm-_SRWU,9804
36
36
  sphinx/builders/text.py,sha256=YCNWggEL5GCjh5lQLT8z_NgVZdMYAHtAHfGAoUAvT0w,2996
37
37
  sphinx/builders/xml.py,sha256=SIblnQLGGzTPTv4xnFFy-Sf66YxP9q1n-28yoVajWhA,3901
38
- sphinx/builders/html/__init__.py,sha256=6xiPEQD9dlUZnnrEr7pJnwCPBxqlyZ-Jf9QjJ4f9LKk,59861
38
+ sphinx/builders/html/__init__.py,sha256=kOffuQXanz5_vJghdp4hb3t0QLDHeLHxx3BRQaO84qM,59920
39
39
  sphinx/builders/html/_assets.py,sha256=9GhVCpJDTD17WzZavhONH9kqOEGS9glD62kBQ16jLeA,5599
40
40
  sphinx/builders/html/transforms.py,sha256=DhIabbXbvZM8lrT9AvKJb9JoawsmEt__DhpoeXA8Yvw,2597
41
41
  sphinx/builders/latex/__init__.py,sha256=fQvWHt7EuFFQBghaD2_TCwEBaheQKkFbxKu9GIP4lWU,24497
@@ -48,7 +48,7 @@ sphinx/cmd/__init__.py,sha256=X5XI0lk1-VMeBM6fjCLYc-a_094wd9KyOSKIjpXwge4,44
48
48
  sphinx/cmd/build.py,sha256=Ysqb1Bw16t3pFQQYTE1MubuDgMU9jgNSyNLglGobLhU,15814
49
49
  sphinx/cmd/make_mode.py,sha256=zyQrCH8tWPT2ifwDB5_Wm_H8MSwpQnh1Wg-F-LNrmco,7057
50
50
  sphinx/cmd/quickstart.py,sha256=XxF1hMsn7H0VZGy64yLEbTTSFc9ZANZHWIvEk21GOUE,24247
51
- sphinx/directives/__init__.py,sha256=PnsmKvTOcRgfwzp8NFfhmdVJfbcDktcHD7sd1fnddNE,15100
51
+ sphinx/directives/__init__.py,sha256=ql28VHzQ6qisUHIuuTrnJmsFZo_U3OXwvUmlhhmOxug,15335
52
52
  sphinx/directives/code.py,sha256=yTy4GsZZ6PYKdnhysJpEj3eYRIpDEoYIsWtm9io59p8,18264
53
53
  sphinx/directives/other.py,sha256=IMVRQyPT_zkU34V4A9pdsR8S4HnryoJutYCpt4LnFh8,16492
54
54
  sphinx/directives/patches.py,sha256=cK4KPUe1U7MOOxQzXshAJEMPKnpG5_T-7Ch5pOB5PXs,7801
@@ -56,7 +56,7 @@ sphinx/domains/__init__.py,sha256=LLaAZAn0984o2LSYH_UZcEdndE9azmNUDALae74nuRE,15
56
56
  sphinx/domains/changeset.py,sha256=J9LWgh2dtBAXbX6L3a4J8YB3-wA62AMS1GolKTQsWJ0,5692
57
57
  sphinx/domains/citation.py,sha256=G9i8IYsR1tsGfAln7Z9Z_wNL2FDM2sXbWgTojxN_77I,5767
58
58
  sphinx/domains/index.py,sha256=3eHbatgPlpfeEbJtqQ6HfBQlEFSem9rYG8fdMUExypU,4266
59
- sphinx/domains/javascript.py,sha256=Wi6V3B0TykHGfLYcLqDhSmUxalBVntXEJtzzdFArsy4,19223
59
+ sphinx/domains/javascript.py,sha256=LzjdqMlC8Bwz_x_buCiV7wERVKkfhXGlGe1kJ1ZjCTY,19194
60
60
  sphinx/domains/math.py,sha256=OJF3eKEZWGtR4zIQha3l_txUBUxEsrD1nHQc-HDDqNk,5728
61
61
  sphinx/domains/rst.py,sha256=HEd973tJlD8OXrg1Mmyufq9eed9M_W4utwtCHwDnhDY,10693
62
62
  sphinx/domains/c/__init__.py,sha256=xa8hn_dBre4oL9UD7VIVOLEEKwQwcmyGMv0u1ksxzG0,32679
@@ -69,8 +69,8 @@ sphinx/domains/cpp/_ast.py,sha256=GeM5V5UobeKgmycesZqwcZqSoWmTxWk3h_g8rFQA2lI,16
69
69
  sphinx/domains/cpp/_ids.py,sha256=-h42RrmFnuq4AyZ0EVHtAk_H_9Umrca24Tu-w73TKCw,18028
70
70
  sphinx/domains/cpp/_parser.py,sha256=EaKoUzpUgZnAFKZYfOBl_-Iw8z2LdYxfZtdWglpSE3Q,88250
71
71
  sphinx/domains/cpp/_symbol.py,sha256=0aiZMW2Lsn4Fiw3PCMT42u6zb9JZ52JbaGuAspp9DQk,48863
72
- sphinx/domains/python/__init__.py,sha256=mWEy28rgBrk1hBGoN5SOTw9PptIg58ghby_1iuLEVvA,35444
73
- sphinx/domains/python/_annotations.py,sha256=bLay4nHo1L7KxfX2exE2ttTLqwOnMBDVEg7r6v_YeSY,22302
72
+ sphinx/domains/python/__init__.py,sha256=bOD71LelNZKkgutWktS8ju7qoz714__cv1VpPTGlvmM,35415
73
+ sphinx/domains/python/_annotations.py,sha256=cO7U8JvRcKX1CObNlZrO57UcuhfTNRnczOHmVZiMixo,23388
74
74
  sphinx/domains/python/_object.py,sha256=5DjvYfjQwmJToudJQNSogfP4LIAMU8fp6rd-Xe6nhzY,17011
75
75
  sphinx/domains/std/__init__.py,sha256=gXNUycqNBSeFBXg89WStSk9pZsvaS6BuDtTBee-DWoM,49514
76
76
  sphinx/environment/__init__.py,sha256=8078TrLXUERa0RbBBLZxwPDndYqhqTZNrwlL2zwzj6A,32545
@@ -101,18 +101,18 @@ sphinx/ext/linkcode.py,sha256=x4Ku-cssPT771pj5Rp966kPSK20hq06O9pf03asl2lk,2352
101
101
  sphinx/ext/mathjax.py,sha256=ezbvP5pqDlTHhNwhGHj_sbquVLLqM2_8Th5YMIqIOWU,5408
102
102
  sphinx/ext/todo.py,sha256=xjoaguKakr0Xe6IMZASlCRD7YAlqCaHnK8KYtNL7Z-U,8327
103
103
  sphinx/ext/viewcode.py,sha256=KwmggBvSO0OK9w-WHDPKzG3SLsYNdN9xuJkb7xl8goQ,13792
104
- sphinx/ext/autodoc/__init__.py,sha256=aGYSAMwuGYQvIDNp365m7DM839yhn4wu-NfKEKzgktQ,116920
104
+ sphinx/ext/autodoc/__init__.py,sha256=ue4kKqh6KkS9UinsnM_Ld-UwXuL0m0lH4YRsRO0K37s,117180
105
105
  sphinx/ext/autodoc/directive.py,sha256=IqDLJnc91_SxqlQkBR2yGoK_ewTzCjGwozCY0eP5HHY,5833
106
106
  sphinx/ext/autodoc/importer.py,sha256=RM8dL4e3dcXIooTg2guvEBcjYzd5lak8_QrGNiHgjEI,15841
107
107
  sphinx/ext/autodoc/mock.py,sha256=qMGXSS0-s4ODVC8u0Ao9-TSTqbw2Nhcg3ZuQhBcl9dc,6049
108
108
  sphinx/ext/autodoc/preserve_defaults.py,sha256=eimSeG8656Z9KpCTuOKmbbASWLIDLbVUkverJDqOHJM,7121
109
109
  sphinx/ext/autodoc/type_comment.py,sha256=FclaU566JP0ly2k0XupMi9efnBKWiW1Zoc9L1cQdliI,5422
110
110
  sphinx/ext/autodoc/typehints.py,sha256=LIO8sgLCCdvJAnmM5OSPQQHStwUa5igjZgnu803Fy4Q,7973
111
- sphinx/ext/autosummary/__init__.py,sha256=L3EoGQX_URQRh-ap_Kde6d6oGrByYqkSn5uBCAdWWpo,31862
112
- sphinx/ext/autosummary/generate.py,sha256=Eal-e67qHkJTlt6oAkTr-9LnorMujJIB8pqkYxkWHy8,28415
111
+ sphinx/ext/autosummary/__init__.py,sha256=ZjH15H5z4auCQ45CsgvUiCUN1lQKXlOCtnUHlxSI9_g,32094
112
+ sphinx/ext/autosummary/generate.py,sha256=q0n46AAiwCAwELSZ-pecEvL8OJFpLp3CISDKlXMMQkU,28199
113
113
  sphinx/ext/autosummary/templates/autosummary/base.rst,sha256=AfG9oeDMTKBsBf2lUKr-NolOeV7ImT_JrKG3KQkEGzE,106
114
114
  sphinx/ext/autosummary/templates/autosummary/class.rst,sha256=1uu4SSX9KRCeNlcr7FMRZ-DrPuW7E6tQ7QZC1asnAL0,553
115
- sphinx/ext/autosummary/templates/autosummary/module.rst,sha256=vF13Kh9MiXnAoqer8SWcKjY9TutSm7nEcUerqEAMtdo,1071
115
+ sphinx/ext/autosummary/templates/autosummary/module.rst,sha256=HuEHeghiPzJ5jgDNy3_3vZ7De-AtWZjgYx_57LrP9tM,1085
116
116
  sphinx/ext/intersphinx/__init__.py,sha256=olSC7q5eSOaQ_hFv_YRMlUd4fVFzMaotspUCfc198_U,2675
117
117
  sphinx/ext/intersphinx/__main__.py,sha256=zapvRzIUEUskvRfaYkf0okrNxPVL2rMWso4NvHOsz7g,218
118
118
  sphinx/ext/intersphinx/_cli.py,sha256=pcq57fnqtKa_MO3Hl4KbvkKsaDhyJofYqrKVcQh_WeQ,1440
@@ -292,9 +292,9 @@ sphinx/locale/sr_RS/LC_MESSAGES/sphinx.po,sha256=3CiWkDY6uvDbOc2qo5qXVVzVFVGJssJ
292
292
  sphinx/locale/sv/LC_MESSAGES/sphinx.js,sha256=sYbEozwp12g5BpvZ1epVdXQeVsBOe4crC7AXxg8VWqI,3261
293
293
  sphinx/locale/sv/LC_MESSAGES/sphinx.mo,sha256=gOy1O97wEJUf700KSm0C59hRdvzEwMT1h0JEzSexsi8,6376
294
294
  sphinx/locale/sv/LC_MESSAGES/sphinx.po,sha256=yZgPt7EzTRmzeX99MVDj14pzZ8T2tatS6ti_YjOP76I,93284
295
- sphinx/locale/ta/LC_MESSAGES/sphinx.js,sha256=lEF6xR0-WOr0rIGIZnvNZuJQbCCa2Rnpb-G_X2atfDM,10644
296
- sphinx/locale/ta/LC_MESSAGES/sphinx.mo,sha256=CaBJ88S-xWhr7lIKA598i8GVtB1MabDo56vEhK25-1A,137491
297
- sphinx/locale/ta/LC_MESSAGES/sphinx.po,sha256=bfh-Ef-H_shQ-tgYsnlc7xAGSWuAEBehwru_O5gqoIg,183430
295
+ sphinx/locale/ta/LC_MESSAGES/sphinx.js,sha256=Z_VSkp6AQYsRsJceRKXMWp8pxxizmTbxCMbU3GLrxH0,2300
296
+ sphinx/locale/ta/LC_MESSAGES/sphinx.mo,sha256=ZNLx56n-dKayAnZvnUqT4UhZ2IIvTYFv-ajKZ-LYKkw,647
297
+ sphinx/locale/ta/LC_MESSAGES/sphinx.po,sha256=tuMT-0MUfi38EobuWb79Cn-e98FXinhM6yyf-tT6Uz8,84381
298
298
  sphinx/locale/te/LC_MESSAGES/sphinx.js,sha256=Xla07Tz_nhkxy7nQ7LRuL4dbA7KYk73gmACHGJSYwSI,2301
299
299
  sphinx/locale/te/LC_MESSAGES/sphinx.mo,sha256=aaMwmnaL4ZhtTvJ_eI-hgQNljSOEti12Y-Zzp270Cew,489
300
300
  sphinx/locale/te/LC_MESSAGES/sphinx.po,sha256=GSQ70s6Jal4YQdXr57R2qIYyaWxpsjdLejW-BUgOQ04,91440
@@ -315,7 +315,7 @@ sphinx/locale/yue/LC_MESSAGES/sphinx.mo,sha256=Qz2gEm8_iqiOU6t-MdRSpSWzchwb1IbFv
315
315
  sphinx/locale/yue/LC_MESSAGES/sphinx.po,sha256=fTInWiPcbMOzTkNCgpMxdHvuDoUZnortWl1VX5tcYu8,91438
316
316
  sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js,sha256=Ms4qOciN2sxV8xmIBFKsXOQEfcXf-GfhQ6kHsbkHPVs,4318
317
317
  sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo,sha256=I7m3GDvtssnuSn4veCuX9tEOqnI_b6NZcMwbhB9XyNE,73260
318
- sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po,sha256=45I8IgSvg4nXPVNYj2DPw4PmIwqS-8UN8mUaWme5Fzk,122030
318
+ sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po,sha256=w8pU8agHA3FVklqO64Vap5vP6eiJXWGfQOOr1tvenGM,116867
319
319
  sphinx/locale/zh_HK/LC_MESSAGES/sphinx.js,sha256=ZbQAiim_q3ynWkqeCt0-eZART7CoNZXDi4URAaJFyzo,2302
320
320
  sphinx/locale/zh_HK/LC_MESSAGES/sphinx.mo,sha256=HOnr3tkv1EyLcegD9C0Xs03SYmACPjzAStcts7WjbN4,501
321
321
  sphinx/locale/zh_HK/LC_MESSAGES/sphinx.po,sha256=eTObc-T9K2fT825zwk9xpwCxERDYT_IbwzLCQCpLUGQ,91452
@@ -555,18 +555,18 @@ sphinx/util/docfields.py,sha256=WIrmB3z4B1fsE7IGoRU9f7fB526HnOHFuBTb27Qz4m8,1697
555
555
  sphinx/util/docstrings.py,sha256=g__pCkpIBjCew6rP6ytJAYXgTKMKxjTdUDOaF2EDqCs,2944
556
556
  sphinx/util/docutils.py,sha256=A-msKRFgAD7UD-D6F-w4o9nKegHF0cX7fLuaF5MFsM0,24180
557
557
  sphinx/util/exceptions.py,sha256=_ZcjI6sTQv0bLlkBu5XsD_QwUHphjKKq17391azKs7c,2010
558
- sphinx/util/fileutil.py,sha256=J-R7g3nI6CywRpXk1iWEzL7BqFCwH5Ecus3eBfaOP6w,4328
558
+ sphinx/util/fileutil.py,sha256=2JhqHXuNucc9lQB0siM51b-Dcrpc16PDmh5mdw1G4rI,5663
559
559
  sphinx/util/http_date.py,sha256=j9jvARRJrYjuIK_oR4H4dLyeCeZIDaOGCQz-8FDpufg,1626
560
560
  sphinx/util/i18n.py,sha256=K5smw0FQ3Hkr4Bp17o2BQRMK-8s76edJPsdWgLT5AFM,10542
561
561
  sphinx/util/images.py,sha256=Y5Oy1M_BD6HRsUyWFQ2DvvCL4VDOFHDPZxtYnO8QEfM,3701
562
562
  sphinx/util/index_entries.py,sha256=wEa55m_tez3UFNFEVuIesEQKWavANQ2O-l86k1If0sY,986
563
- sphinx/util/inspect.py,sha256=BdltEA-0lZKhCcCa3DmS7kIV7Xf5KZS6d8VKf6uLNMI,33077
564
- sphinx/util/inventory.py,sha256=qjbSlk51LQY2gXZW_d8i3-pyUewisaFpj955jf2IFz0,7973
563
+ sphinx/util/inspect.py,sha256=QfyFfg7OwDEG8PnvxROOJAUYDQFJtLgdDqBep91Mh4w,33098
564
+ sphinx/util/inventory.py,sha256=Mo9JGfs-4hFv8l94-w53L5uarrSMdWiagPCWjCeafI4,7967
565
565
  sphinx/util/logging.py,sha256=WokXNrpfjX7kekEE6N59MitS23DzdCpyEw0GTiQovug,20542
566
566
  sphinx/util/matching.py,sha256=pywT5EKjUUJ-PX4H6mm-LA3f37AvYfxwEpraHHrhVsI,5368
567
567
  sphinx/util/math.py,sha256=GuBqbvunQfOE2JpxjFsUoWwujDhWaYELczJIyNGzLhE,1984
568
568
  sphinx/util/nodes.py,sha256=X9mpo0MiLEWcYYDIDY5zUWnQwBIQYzfGj-TgP5loQMM,24638
569
- sphinx/util/osutil.py,sha256=hyqgVweL0QT7Lv402nZ-VaBWjXaUSNtfwe8nj0ww5WI,7005
569
+ sphinx/util/osutil.py,sha256=JdPBSyyHMfBQ_X8yWnRtYBg7UGfx8hqyj8o46A7XzGE,7836
570
570
  sphinx/util/parallel.py,sha256=PActfjRJU0-NNqAgfuuVsyQc7mXiowuPLYwXYaAa7HI,5272
571
571
  sphinx/util/parsing.py,sha256=3F3mbV2OjHLUnrU2trwQxKabfk_x0c8_onCKGNDNUJk,3321
572
572
  sphinx/util/png.py,sha256=78SpKyEuQTlaHXIpnHZ3kDaTQZqhNivGcW7KXbrG7Ns,1445
@@ -575,7 +575,7 @@ sphinx/util/rst.py,sha256=YY2Wk4Pn1vNQAi1iDjUCYeBYGutYYo4curTpdsVcyKE,3585
575
575
  sphinx/util/tags.py,sha256=K6tiZhx-V60aKZ4Z3ie5kasMYGGV_WPUTq8ncWlWnJM,3927
576
576
  sphinx/util/template.py,sha256=jxQgY24NYYfMc1M951DKQn2oSk0-wxEGqKBPR98eRbc,5146
577
577
  sphinx/util/texescape.py,sha256=eGHE_GX732SVeSHcmprXbOa2euwNh37kREwWPTY1hvY,5442
578
- sphinx/util/typing.py,sha256=nSZtWgMw4IqRkjplxPANTlTd7Nj5hvUrT6VLVqThO9M,22617
578
+ sphinx/util/typing.py,sha256=mkIMB6zhULCUUomUJ0E-2sZGecY10sJWoj1c_y1FA-w,24259
579
579
  sphinx/writers/__init__.py,sha256=efGdnx4MWlPEDzXACf4Q18Oi3GTyY5Ob14I_j3XXtXc,31
580
580
  sphinx/writers/html.py,sha256=ptitqWUkA4wnY0HuPIjy1GuKG4cOPCuPlAdH7aMRhyg,1604
581
581
  sphinx/writers/html5.py,sha256=KmE-WAPcIX1laEHXBX2H8zRwCDC66vGzys_32UV5yM4,37671
@@ -584,8 +584,8 @@ sphinx/writers/manpage.py,sha256=iLoC4i81W52dTl8Kpug65CV1M7cCz1buGgsN7FhazYo,162
584
584
  sphinx/writers/texinfo.py,sha256=UU3Zrt-zBgdwYgqj4BJFNthggzMr_Gllx2ewBeWrkcI,53451
585
585
  sphinx/writers/text.py,sha256=HEiYXsWXO9QVOazg2V3D0ehGTnK38dAtYP9v0rst684,42964
586
586
  sphinx/writers/xml.py,sha256=NyDl82hCFSRiHrCZV6vBfn4AsAyXH6khtSJEfhOX8a0,1502
587
- sphinx-7.4.5.dist-info/entry_points.txt,sha256=KU_c9jqXj7yyZylSz11XRIXG3gAZApQa0d5DmcfyA7M,188
588
- sphinx-7.4.5.dist-info/LICENSE.rst,sha256=HdZPUFcmQaLySBc9fKvRC5aOUNkxL9Gz5py0p6XGDk4,3135
589
- sphinx-7.4.5.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
590
- sphinx-7.4.5.dist-info/METADATA,sha256=qyoEdApSTAM6yq2wEt_NxjmWIEDKGjjtN5bBR6O1xiQ,6113
591
- sphinx-7.4.5.dist-info/RECORD,,
587
+ sphinx-7.4.7.dist-info/entry_points.txt,sha256=KU_c9jqXj7yyZylSz11XRIXG3gAZApQa0d5DmcfyA7M,188
588
+ sphinx-7.4.7.dist-info/LICENSE.rst,sha256=HdZPUFcmQaLySBc9fKvRC5aOUNkxL9Gz5py0p6XGDk4,3135
589
+ sphinx-7.4.7.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
590
+ sphinx-7.4.7.dist-info/METADATA,sha256=_w_jjP5ymKO_Z-vyWP8OKaEexA863gpcsZrd0-roucI,6113
591
+ sphinx-7.4.7.dist-info/RECORD,,
File without changes