basedpyright 1.13.1 → 1.13.2

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.
Files changed (148) hide show
  1. package/dist/pyright-langserver.js +1 -1
  2. package/dist/pyright-langserver.js.map +1 -1
  3. package/dist/pyright.js +1 -1
  4. package/dist/pyright.js.map +1 -1
  5. package/dist/typeshed-fallback/commit.txt +1 -1
  6. package/dist/typeshed-fallback/stdlib/VERSIONS +3 -1
  7. package/dist/typeshed-fallback/stdlib/_ast.pyi +1 -1
  8. package/dist/typeshed-fallback/stdlib/_bisect.pyi +221 -221
  9. package/dist/typeshed-fallback/stdlib/_csv.pyi +213 -213
  10. package/dist/typeshed-fallback/stdlib/_curses.pyi +1 -2
  11. package/dist/typeshed-fallback/stdlib/_heapq.pyi +67 -67
  12. package/dist/typeshed-fallback/stdlib/_interpchannels.pyi +84 -0
  13. package/dist/typeshed-fallback/stdlib/_json.pyi +92 -92
  14. package/dist/typeshed-fallback/stdlib/_lsprof.pyi +92 -92
  15. package/dist/typeshed-fallback/stdlib/_random.pyi +30 -30
  16. package/dist/typeshed-fallback/stdlib/_tkinter.pyi +7 -0
  17. package/dist/typeshed-fallback/stdlib/_weakref.pyi +3 -2
  18. package/dist/typeshed-fallback/stdlib/argparse.pyi +6 -2
  19. package/dist/typeshed-fallback/stdlib/array.pyi +281 -281
  20. package/dist/typeshed-fallback/stdlib/asyncio/events.pyi +56 -37
  21. package/dist/typeshed-fallback/stdlib/asyncio/tasks.pyi +4 -1
  22. package/dist/typeshed-fallback/stdlib/asyncio/unix_events.pyi +156 -134
  23. package/dist/typeshed-fallback/stdlib/asyncio/windows_events.pyi +3 -2
  24. package/dist/typeshed-fallback/stdlib/audioop.pyi +95 -95
  25. package/dist/typeshed-fallback/stdlib/binascii.pyi +123 -123
  26. package/dist/typeshed-fallback/stdlib/cmath.pyi +112 -112
  27. package/dist/typeshed-fallback/stdlib/dataclasses.pyi +1 -1
  28. package/dist/typeshed-fallback/stdlib/logging/__init__.pyi +2 -5
  29. package/dist/typeshed-fallback/stdlib/math.pyi +424 -424
  30. package/dist/typeshed-fallback/stdlib/mmap.pyi +160 -154
  31. package/dist/typeshed-fallback/stdlib/multiprocessing/context.pyi +10 -6
  32. package/dist/typeshed-fallback/stdlib/multiprocessing/sharedctypes.pyi +33 -12
  33. package/dist/typeshed-fallback/stdlib/os/__init__.pyi +10 -10
  34. package/dist/typeshed-fallback/stdlib/posixpath.pyi +3 -13
  35. package/dist/typeshed-fallback/stdlib/spwd.pyi +9 -0
  36. package/dist/typeshed-fallback/stdlib/subprocess.pyi +8 -0
  37. package/dist/typeshed-fallback/stdlib/tarfile.pyi +23 -1
  38. package/dist/typeshed-fallback/stdlib/telnetlib.pyi +1 -0
  39. package/dist/typeshed-fallback/stdlib/typing.pyi +21 -2
  40. package/dist/typeshed-fallback/stdlib/weakref.pyi +4 -1
  41. package/dist/typeshed-fallback/stdlib/xml/sax/handler.pyi +1 -1
  42. package/dist/typeshed-fallback/stdlib/zlib.pyi +157 -157
  43. package/dist/typeshed-fallback/stubs/Flask-SocketIO/flask_socketio/__init__.pyi +4 -4
  44. package/dist/typeshed-fallback/stubs/aiofiles/METADATA.toml +1 -1
  45. package/dist/typeshed-fallback/stubs/aiofiles/aiofiles/base.pyi +6 -20
  46. package/dist/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +2 -0
  47. package/dist/typeshed-fallback/stubs/aiofiles/aiofiles/ospath.pyi +5 -3
  48. package/dist/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/__init__.pyi +143 -79
  49. package/dist/typeshed-fallback/stubs/aiofiles/aiofiles/threadpool/__init__.pyi +5 -5
  50. package/dist/typeshed-fallback/stubs/assertpy/assertpy/extracting.pyi +7 -1
  51. package/dist/typeshed-fallback/stubs/docker/docker/_types.pyi +8 -0
  52. package/dist/typeshed-fallback/stubs/docker/docker/api/container.pyi +2 -2
  53. package/dist/typeshed-fallback/stubs/docker/docker/api/image.pyi +3 -2
  54. package/dist/typeshed-fallback/stubs/docker/docker/api/network.pyi +32 -15
  55. package/dist/typeshed-fallback/stubs/docker/docker/models/containers.pyi +36 -7
  56. package/dist/typeshed-fallback/stubs/docker/docker/models/images.pyi +67 -5
  57. package/dist/typeshed-fallback/stubs/docker/docker/models/networks.pyi +20 -3
  58. package/dist/typeshed-fallback/stubs/docker/docker/types/containers.pyi +78 -70
  59. package/dist/typeshed-fallback/stubs/docker/docker/utils/json_stream.pyi +4 -7
  60. package/dist/typeshed-fallback/stubs/flake8/METADATA.toml +1 -1
  61. package/dist/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi +16 -5
  62. package/dist/typeshed-fallback/stubs/fpdf2/fpdf/image_datastructures.pyi +2 -1
  63. package/dist/typeshed-fallback/stubs/fpdf2/fpdf/table.pyi +4 -2
  64. package/dist/typeshed-fallback/stubs/fpdf2/fpdf/text_region.pyi +7 -7
  65. package/dist/typeshed-fallback/stubs/hdbcli/METADATA.toml +1 -1
  66. package/dist/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi +1 -0
  67. package/dist/typeshed-fallback/stubs/hvac/METADATA.toml +1 -1
  68. package/dist/typeshed-fallback/stubs/hvac/hvac/api/system_backend/raft.pyi +9 -0
  69. package/dist/typeshed-fallback/stubs/hvac/hvac/api/system_backend/wrapping.pyi +1 -0
  70. package/dist/typeshed-fallback/stubs/influxdb-client/METADATA.toml +1 -1
  71. package/dist/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/_pages.pyi +37 -0
  72. package/dist/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/bucket_api.pyi +5 -1
  73. package/dist/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/tasks_api.pyi +4 -3
  74. package/dist/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket.pyi +6 -6
  75. package/dist/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task.pyi +6 -6
  76. package/dist/typeshed-fallback/stubs/networkx/METADATA.toml +3 -1
  77. package/dist/typeshed-fallback/stubs/olefile/olefile/olefile.pyi +41 -31
  78. package/dist/typeshed-fallback/stubs/openpyxl/METADATA.toml +1 -1
  79. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi +3 -0
  80. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi +1 -2
  81. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi +1 -1
  82. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/container.pyi +18 -0
  83. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi +20 -12
  84. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi +1 -1
  85. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi +2 -2
  86. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi +6 -11
  87. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi +66 -135
  88. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi +2 -2
  89. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi +0 -1
  90. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi +0 -2
  91. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi +3 -3
  92. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi +5 -10
  93. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/utils/cell.pyi +2 -2
  94. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/utils/indexed_list.pyi +2 -2
  95. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi +2 -2
  96. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi +11 -3
  97. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi +2 -2
  98. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi +6 -3
  99. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi +26 -22
  100. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi +3 -5
  101. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi +5 -2
  102. package/dist/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +4 -2
  103. package/dist/typeshed-fallback/stubs/peewee/METADATA.toml +1 -1
  104. package/dist/typeshed-fallback/stubs/peewee/peewee.pyi +6 -1
  105. package/dist/typeshed-fallback/stubs/protobuf/METADATA.toml +2 -2
  106. package/dist/typeshed-fallback/stubs/protobuf/google/protobuf/descriptor_pb2.pyi +84 -15
  107. package/dist/typeshed-fallback/stubs/psutil/METADATA.toml +1 -1
  108. package/dist/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +3 -1
  109. package/dist/typeshed-fallback/stubs/psutil/psutil/_common.pyi +0 -2
  110. package/dist/typeshed-fallback/stubs/psutil/psutil/_compat.pyi +0 -1
  111. package/dist/typeshed-fallback/stubs/psutil/psutil/_psaix.pyi +1 -1
  112. package/dist/typeshed-fallback/stubs/psutil/psutil/_psbsd.pyi +1 -1
  113. package/dist/typeshed-fallback/stubs/psutil/psutil/_pslinux.pyi +2 -2
  114. package/dist/typeshed-fallback/stubs/psutil/psutil/_psosx.pyi +1 -1
  115. package/dist/typeshed-fallback/stubs/psutil/psutil/_pssunos.pyi +1 -1
  116. package/dist/typeshed-fallback/stubs/psutil/psutil/_psutil_osx.pyi +1 -1
  117. package/dist/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi +1 -1
  118. package/dist/typeshed-fallback/stubs/pyinstaller/METADATA.toml +1 -1
  119. package/dist/typeshed-fallback/stubs/pyinstaller/PyInstaller/__main__.pyi +1 -0
  120. package/dist/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi +0 -2
  121. package/dist/typeshed-fallback/stubs/pyinstaller/PyInstaller/compat.pyi +2 -3
  122. package/dist/typeshed-fallback/stubs/reportlab/METADATA.toml +3 -2
  123. package/dist/typeshed-fallback/stubs/requests/requests/models.pyi +2 -2
  124. package/dist/typeshed-fallback/stubs/seaborn/METADATA.toml +2 -1
  125. package/dist/typeshed-fallback/stubs/setuptools/METADATA.toml +1 -1
  126. package/dist/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi +80 -50
  127. package/dist/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi +2 -4
  128. package/dist/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi +6 -3
  129. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_egg.pyi +3 -9
  130. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_wheel.pyi +61 -0
  131. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi +2 -2
  132. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/build_py.pyi +12 -1
  133. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi +1 -1
  134. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi +4 -4
  135. package/dist/typeshed-fallback/stubs/setuptools/setuptools/command/install_lib.pyi +3 -4
  136. package/dist/typeshed-fallback/stubs/setuptools/setuptools/compat/py311.pyi +1 -1
  137. package/dist/typeshed-fallback/stubs/setuptools/setuptools/config/expand.pyi +0 -1
  138. package/dist/typeshed-fallback/stubs/shapely/METADATA.toml +2 -1
  139. package/dist/typeshed-fallback/stubs/shapely/shapely/_geometry.pyi +3 -3
  140. package/dist/typeshed-fallback/stubs/shapely/shapely/constructive.pyi +6 -6
  141. package/dist/typeshed-fallback/stubs/shapely/shapely/geometry/base.pyi +3 -3
  142. package/dist/typeshed-fallback/stubs/shapely/shapely/io.pyi +2 -2
  143. package/dist/typeshed-fallback/stubs/shapely/shapely/strtree.pyi +9 -9
  144. package/dist/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml +1 -1
  145. package/package.json +1 -1
  146. package/dist/typeshed-fallback/stubs/tree-sitter/METADATA.toml +0 -7
  147. package/dist/typeshed-fallback/stubs/tree-sitter/tree_sitter/__init__.pyi +0 -17
  148. package/dist/typeshed-fallback/stubs/tree-sitter/tree_sitter/binding.pyi +0 -115
@@ -4,8 +4,8 @@ import io
4
4
  import logging
5
5
  import traceback
6
6
  from collections.abc import Sequence
7
- from typing import IO
8
- from typing_extensions import Self
7
+ from typing import IO, AnyStr, Generic
8
+ from typing_extensions import Self, TypeAlias
9
9
 
10
10
  __date__: str
11
11
  __version__: str
@@ -137,7 +137,7 @@ class OleMetadata:
137
137
  DOCSUM_ATTRIBS: list[str]
138
138
 
139
139
  def __init__(self) -> None: ...
140
- def parse_properties(self, ole_file: OleFileIO) -> None: ...
140
+ def parse_properties(self, ole_file: OleFileIO[AnyStr]) -> None: ...
141
141
  def dump(self) -> None: ...
142
142
 
143
143
  class OleFileIONotClosed(RuntimeWarning):
@@ -153,29 +153,34 @@ class OleStream(io.BytesIO):
153
153
  sectorsize: int,
154
154
  fat: list[int],
155
155
  filesize: int,
156
- olefileio: OleFileIO,
156
+ olefileio: OleFileIO[AnyStr],
157
157
  ) -> None: ...
158
158
 
159
- class OleDirectoryEntry:
159
+ class OleDirectoryEntry(Generic[AnyStr]):
160
160
  STRUCT_DIRENTRY: str
161
161
  DIRENTRY_SIZE: int
162
+ clsid: str
162
163
 
163
- def __init__(self, entry: bytes, sid: int, ole_file: OleFileIO) -> None: ...
164
- def build_sect_chain(self, ole_file: OleFileIO) -> None: ...
164
+ def __init__(self, entry: bytes, sid: int, ole_file: OleFileIO[AnyStr]) -> None: ...
165
+ def build_sect_chain(self, ole_file: OleFileIO[AnyStr]) -> None: ...
165
166
  def build_storage_tree(self) -> None: ...
166
167
  def append_kids(self, child_sid: int) -> None: ...
167
- def __eq__(self, other: OleDirectoryEntry) -> bool: ... # type: ignore[override]
168
- def __lt__(self, other: OleDirectoryEntry) -> bool: ... # type: ignore[override]
169
- def __ne__(self, other: OleDirectoryEntry) -> bool: ... # type: ignore[override]
170
- def __le__(self, other: OleDirectoryEntry) -> bool: ... # type: ignore[override]
168
+ def __eq__(self, other: OleDirectoryEntry[AnyStr]) -> bool: ... # type: ignore[override]
169
+ def __lt__(self, other: OleDirectoryEntry[AnyStr]) -> bool: ... # type: ignore[override]
170
+ def __ne__(self, other: OleDirectoryEntry[AnyStr]) -> bool: ... # type: ignore[override]
171
+ def __le__(self, other: OleDirectoryEntry[AnyStr]) -> bool: ... # type: ignore[override]
171
172
  def dump(self, tab: int = 0) -> None: ...
172
173
  def getmtime(self) -> datetime.datetime | None: ...
173
174
  def getctime(self) -> datetime.datetime | None: ...
174
175
 
175
- class OleFileIO:
176
+ _Property: TypeAlias = int | str | bytes | bool | None
177
+
178
+ class OleFileIO(Generic[AnyStr]):
179
+ root: OleDirectoryEntry[AnyStr] | None
180
+
176
181
  def __init__(
177
182
  self,
178
- filename: IO[bytes] | bytes | str | None = None,
183
+ filename: IO[bytes] | AnyStr | None = None,
179
184
  raise_defects: int = 40,
180
185
  write_mode: bool = False,
181
186
  debug: bool = False,
@@ -187,8 +192,8 @@ class OleFileIO:
187
192
  def _raise_defect(
188
193
  self, defect_level: int, message: str, exception_type: type[Exception] = OleFileError # noqa: Y011
189
194
  ) -> None: ...
190
- def _decode_utf16_str(self, utf16_str: bytes, errors: str = "replace") -> bytes: ...
191
- def open(self, filename: IO[bytes] | bytes | str, write_mode: bool = False) -> None: ...
195
+ def _decode_utf16_str(self, utf16_str: bytes, errors: str = "replace") -> str | bytes: ...
196
+ def open(self, filename: IO[bytes] | AnyStr, write_mode: bool = False) -> None: ...
192
197
  def close(self) -> None: ...
193
198
  def _close(self, warn: bool = False) -> None: ...
194
199
  def _check_duplicate_stream(self, first_sect: int, minifat: bool = False) -> None: ...
@@ -202,36 +207,41 @@ class OleFileIO:
202
207
  def write_sect(self, sect: int, data: bytes, padding: bytes = b"\x00") -> None: ...
203
208
  def _write_mini_sect(self, fp_pos: int, data: bytes, padding: bytes = b"\x00") -> None: ...
204
209
  def loaddirectory(self, sect: int) -> None: ...
205
- def _load_direntry(self, sid: int) -> OleDirectoryEntry: ...
210
+ def _load_direntry(self, sid: int) -> OleDirectoryEntry[AnyStr]: ...
206
211
  def dumpdirectory(self) -> None: ...
207
212
  def _open(self, start: int, size: int = 0x7FFFFFFF, force_FAT: bool = False) -> OleStream: ...
208
213
  def _list(
209
- self, files: list[list[bytes]], prefix: list[bytes], node: OleDirectoryEntry, streams: bool = True, storages: bool = False
214
+ self,
215
+ files: list[list[AnyStr]],
216
+ prefix: list[AnyStr],
217
+ node: OleDirectoryEntry[AnyStr],
218
+ streams: bool = True,
219
+ storages: bool = False,
210
220
  ) -> None: ...
211
- def listdir(self, streams: bool = True, storages: bool = False) -> list[list[bytes]]: ...
221
+ def listdir(self, streams: bool = True, storages: bool = False) -> list[list[AnyStr]]: ...
212
222
  def _find(self, filename: str | Sequence[str]) -> int: ...
213
- def openstream(self, filename: str | Sequence[str]) -> OleStream: ...
214
- def _write_mini_stream(self, entry: OleDirectoryEntry, data_to_write: bytes) -> None: ...
223
+ def openstream(self, filename: AnyStr | Sequence[AnyStr]) -> OleStream: ...
224
+ def _write_mini_stream(self, entry: OleDirectoryEntry[AnyStr], data_to_write: bytes) -> None: ...
215
225
  def write_stream(self, stream_name: str | Sequence[str], data: bytes) -> None: ...
216
- def get_type(self, filename: str | Sequence[str]) -> bool | int: ...
217
- def getclsid(self, filename: str | Sequence[str]) -> str: ...
218
- def getmtime(self, filename: str | Sequence[str]) -> datetime.datetime | None: ...
219
- def getctime(self, filename: str | Sequence[str]) -> datetime.datetime | None: ...
220
- def exists(self, filename: str | Sequence[str]) -> bool: ...
221
- def get_size(self, filename: str | Sequence[str]) -> int: ...
226
+ def get_type(self, filename: AnyStr | Sequence[AnyStr]) -> bool | int: ...
227
+ def getclsid(self, filename: AnyStr | Sequence[AnyStr]) -> str: ...
228
+ def getmtime(self, filename: AnyStr | Sequence[AnyStr]) -> datetime.datetime | None: ...
229
+ def getctime(self, filename: AnyStr | Sequence[AnyStr]) -> datetime.datetime | None: ...
230
+ def exists(self, filename: AnyStr | Sequence[AnyStr]) -> bool: ...
231
+ def get_size(self, filename: AnyStr | Sequence[AnyStr]) -> int: ...
222
232
  def get_rootentry_name(self) -> bytes: ...
223
233
  def getproperties(
224
- self, filename: str | Sequence[str], convert_time: bool = False, no_conversion: list[int] | None = None
225
- ) -> dict[int, list[int | str | bytes | bool | None]]: ...
234
+ self, filename: AnyStr | Sequence[AnyStr], convert_time: bool = False, no_conversion: list[int] | None = None
235
+ ) -> dict[int, list[_Property] | _Property]: ...
226
236
  def _parse_property(
227
237
  self, s: bytes, offset: int, property_id: int, property_type: int, convert_time: bool, no_conversion: list[int]
228
- ) -> list[int | str | bytes | bool | None] | None: ...
238
+ ) -> list[_Property] | _Property: ...
229
239
  def _parse_property_basic(
230
240
  self, s: bytes, offset: int, property_id: int, property_type: int, convert_time: bool, no_conversion: list[int]
231
- ) -> tuple[int | str | bytes | bool | None, int]: ...
241
+ ) -> tuple[_Property, int]: ...
232
242
  def get_metadata(self) -> OleMetadata: ...
233
243
  def get_userdefined_properties(
234
- self, filename: str | Sequence[str], convert_time: bool = False, no_conversion: list[int] | None = None
244
+ self, filename: AnyStr | Sequence[AnyStr], convert_time: bool = False, no_conversion: list[int] | None = None
235
245
  ) -> list[dict[str, bytes | int | None]]: ...
236
246
 
237
247
  def main() -> None: ...
@@ -1,2 +1,2 @@
1
- version = "3.1.2"
1
+ version = "3.1.4"
2
2
  upstream_repository = "https://foss.heptapod.net/openpyxl/openpyxl"
@@ -5,6 +5,7 @@ from typing_extensions import Self
5
5
  from openpyxl.cell.text import InlineFont
6
6
  from openpyxl.descriptors import Strict, String, Typed
7
7
  from openpyxl.descriptors.serialisable import _ChildSerialisableTreeElement
8
+ from openpyxl.xml.functions import Element
8
9
 
9
10
  class TextBlock(Strict):
10
11
  font: Typed[InlineFont, Literal[False]]
@@ -12,6 +13,7 @@ class TextBlock(Strict):
12
13
 
13
14
  def __init__(self, font: InlineFont, text: str) -> None: ...
14
15
  def __eq__(self, other: TextBlock) -> bool: ... # type: ignore[override]
16
+ def to_tree(self) -> Element: ...
15
17
 
16
18
  class CellRichText(list[str | TextBlock]):
17
19
  @overload
@@ -24,3 +26,4 @@ class CellRichText(list[str | TextBlock]):
24
26
  def append(self, arg: str | TextBlock) -> None: ...
25
27
  def extend(self, arg: Iterable[str | TextBlock]) -> None: ...
26
28
  def as_list(self) -> list[str]: ...
29
+ def to_tree(self) -> Element: ...
@@ -10,8 +10,7 @@ from openpyxl.descriptors.base import Alias, String, Typed, _ConvertibleToBool
10
10
  from openpyxl.descriptors.excel import ExtensionList
11
11
  from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedInteger, NestedSet
12
12
  from openpyxl.descriptors.serialisable import Serialisable
13
-
14
- from ..xml._functions_overloads import _HasTagAndGet
13
+ from openpyxl.xml._functions_overloads import _HasTagAndGet
15
14
 
16
15
  _TrendlineTrendlineType: TypeAlias = Literal["exp", "linear", "log", "movingAvg", "poly", "power"]
17
16
 
@@ -12,7 +12,7 @@ from openpyxl.worksheet.cell_range import CellRange, MultiCellRange
12
12
 
13
13
  _T = TypeVar("_T")
14
14
  _P = TypeVar("_P", str, ReadableBuffer)
15
- _N = TypeVar("_N", bound=bool)
15
+ _N = TypeVar("_N", bound=bool, default=Literal[False])
16
16
  _L = TypeVar("_L", bound=Sized)
17
17
  _M = TypeVar("_M", int, float)
18
18
 
@@ -0,0 +1,18 @@
1
+ from typing import TypeVar
2
+ from typing_extensions import Self
3
+
4
+ from openpyxl.descriptors.serialisable import Serialisable
5
+ from openpyxl.xml.functions import Element
6
+
7
+ _T = TypeVar("_T", bound=Serialisable)
8
+
9
+ # Abstract base class.
10
+ class ElementList(list[_T]):
11
+ @property
12
+ def tagname(self) -> str: ... # abstract
13
+ @property
14
+ def expected_type(self) -> type[_T]: ... # abstract
15
+ @classmethod
16
+ def from_tree(cls, tree: Element) -> Self: ...
17
+ def to_tree(self) -> Element: ...
18
+ def append(self, value: _T) -> None: ...
@@ -11,6 +11,7 @@ from openpyxl.xml.functions import Element
11
11
  from .base import Alias, Descriptor
12
12
 
13
13
  _T = TypeVar("_T")
14
+ _ContainerT = TypeVar("_ContainerT")
14
15
 
15
16
  class _SupportsFromTree(Protocol):
16
17
  @classmethod
@@ -19,22 +20,27 @@ class _SupportsFromTree(Protocol):
19
20
  class _SupportsToTree(Protocol):
20
21
  def to_tree(self) -> Element: ...
21
22
 
22
- class Sequence(Descriptor[Incomplete]):
23
- expected_type: type[Incomplete]
24
- seq_types: tuple[type, ...]
23
+ # `_ContainerT` is the internal container type (which defaults to `list`), or
24
+ # `IndexedList` if unique is `True`.
25
+ class Sequence(Descriptor[_ContainerT]):
26
+ expected_type: type[Any] # expected type of the sequence elements
27
+ seq_types: tuple[type, ...] # allowed settable sequence types, defaults to `list`, `tuple`
25
28
  idx_base: int
26
29
  unique: bool
27
- container: type
28
- def __set__(self, instance: Serialisable | Strict, seq) -> None: ...
30
+ container: type # internal container type, defaults to `list`
31
+ # seq must be an instance of any of the declared `seq_types`.
32
+ def __set__(self, instance: Serialisable | Strict, seq: Any) -> None: ...
29
33
  def to_tree(
30
34
  self, tagname: str | None, obj: Iterable[object], namespace: str | None = None
31
35
  ) -> Generator[Element, None, None]: ...
32
36
 
33
- class UniqueSequence(Sequence):
34
- seq_types: tuple[type, ...]
35
- container: type
37
+ # `_T` is the type of the elements in the sequence.
38
+ class UniqueSequence(Sequence[set[_T]]):
39
+ seq_types: tuple[type[list[_T]], type[tuple[_T, ...]], type[set[_T]]]
40
+ container: type[set[_T]]
36
41
 
37
- class ValueSequence(Sequence):
42
+ # See `Sequence` for the meaning of `_ContainerT`.
43
+ class ValueSequence(Sequence[_ContainerT]):
38
44
  attribute: str
39
45
  def to_tree(
40
46
  self, tagname: str, obj: Iterable[object], namespace: str | None = None # type: ignore[override]
@@ -43,7 +49,8 @@ class ValueSequence(Sequence):
43
49
 
44
50
  class _NestedSequenceToTreeObj(Sized, Iterable[_SupportsToTree], Protocol): ...
45
51
 
46
- class NestedSequence(Sequence):
52
+ # See `Sequence` for the meaning of `_ContainerT`.
53
+ class NestedSequence(Sequence[_ContainerT]):
47
54
  count: bool
48
55
  expected_type: type[_SupportsFromTree]
49
56
  def to_tree( # type: ignore[override]
@@ -53,8 +60,9 @@ class NestedSequence(Sequence):
53
60
  # Which can really be anything given the wildly different, and sometimes generic, from_tree return types
54
61
  def from_tree(self, node: Iterable[_SerialisableTreeElement]) -> list[Any]: ...
55
62
 
56
- class MultiSequence(Sequence):
57
- def __set__(self, instance: Serialisable | Strict, seq) -> None: ...
63
+ # `_T` is the type of the elements in the sequence.
64
+ class MultiSequence(Sequence[list[_T]]):
65
+ def __set__(self, instance: Serialisable | Strict, seq: tuple[_T, ...] | list[_T]) -> None: ...
58
66
  def to_tree(
59
67
  self, tagname: Unused, obj: Iterable[_SupportsToTree], namespace: str | None = None # type: ignore[override]
60
68
  ) -> Generator[Element, None, None]: ...
@@ -52,7 +52,7 @@ CLASS_MAPPING: Final[dict[type[_MappingPropertyType], str]]
52
52
  XML_MAPPING: Final[dict[str, type[_MappingPropertyType]]]
53
53
 
54
54
  class CustomPropertyList(Strict, Generic[_T]):
55
- props: Sequence
55
+ props: Sequence[list[_TypedProperty[_T]]]
56
56
  def __init__(self) -> None: ...
57
57
  @classmethod
58
58
  def from_tree(cls, tree: _ChildSerialisableTreeElement) -> Self: ...
@@ -76,8 +76,8 @@ class ExtendedProperties(Serialisable):
76
76
  HLinks: Unused = None,
77
77
  HyperlinksChanged: object = None,
78
78
  DigSig: Unused = None,
79
- Application: object = "Microsoft Excel",
80
- AppVersion: object = None,
79
+ Application: Unused = None,
80
+ AppVersion: str | None = None,
81
81
  DocSecurity: ConvertibleToInt | None = None,
82
82
  ) -> None: ...
83
83
  def to_tree(self) -> Element: ... # type: ignore[override]
@@ -4,11 +4,11 @@ from typing import ClassVar, Literal, TypeVar, overload
4
4
  from zipfile import ZipFile
5
5
 
6
6
  from openpyxl.descriptors.base import Alias, String
7
+ from openpyxl.descriptors.container import ElementList
7
8
  from openpyxl.descriptors.serialisable import Serialisable
8
9
  from openpyxl.pivot.cache import CacheDefinition
9
10
  from openpyxl.pivot.record import RecordList
10
11
  from openpyxl.pivot.table import TableDefinition
11
- from openpyxl.xml.functions import Element
12
12
 
13
13
  _SerialisableT = TypeVar("_SerialisableT", bound=Serialisable)
14
14
  _SerialisableRelTypeT = TypeVar("_SerialisableRelTypeT", bound=CacheDefinition | RecordList | TableDefinition)
@@ -32,16 +32,11 @@ class Relationship(Serialisable):
32
32
  self, Id: str, Type: str, type: None = None, Target: str | None = None, TargetMode: str | None = None
33
33
  ) -> None: ...
34
34
 
35
- class RelationshipList(Serialisable):
36
- tagname: ClassVar[str]
37
- Relationship: Incomplete
38
- def __init__(self, Relationship=()) -> None: ...
39
- def append(self, value) -> None: ...
40
- def __len__(self) -> int: ...
41
- def __bool__(self) -> bool: ...
42
- def find(self, content_type) -> Generator[Incomplete, None, None]: ...
43
- def __getitem__(self, key): ...
44
- def to_tree(self) -> Element: ... # type: ignore[override]
35
+ class RelationshipList(ElementList[Relationship]):
36
+ expected_type: type[Relationship]
37
+ def find(self, content_type: str) -> Generator[Relationship, None, None]: ...
38
+ def get(self, key: str) -> Relationship: ...
39
+ def to_dict(self) -> dict[Incomplete, Relationship]: ...
45
40
 
46
41
  def get_rels_path(path): ...
47
42
  def get_dependents(archive: ZipFile, filename: str) -> RelationshipList: ...