Skip to content

Commit 9d798dc

Browse files
KevinRK29cdce8phauntsaninjailevkivskyiAlexWaygood
authored
Sync typeshed (#22054)
Source commit: python/typeshed@6d045a9 --------- Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Co-authored-by: Ivan Levkivskyi <levkivskyi@gmail.com> Co-authored-by: hauntsaninja <hauntsaninja@gmail.com> Co-authored-by: AlexWaygood <alex.waygood@gmail.com>
1 parent 0861bb6 commit 9d798dc

62 files changed

Lines changed: 682 additions & 282 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎misc/typeshed_patches/0001-Revert-operator-changes.patch‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
From 5ab958030bd7d4ed9cb3e2afa656b68ea5a07901 Mon Sep 17 00:00:00 2001
1+
From aedc9789b31650f3564d1c4ca6003d3c1b2c02af Mon Sep 17 00:00:00 2001
22
From: hauntsaninja <hauntsaninja@gmail.com>
33
Date: Wed, 6 May 2026 19:49:41 -0700
44
Subject: [PATCH] Revert operator changes
55

66
---
7-
mypy/typeshed/stdlib/_operator.pyi | 58 ++++++++----------------------
8-
1 file changed, 14 insertions(+), 44 deletions(-)
7+
mypy/typeshed/stdlib/_operator.pyi | 59 +++++++-----------------------
8+
1 file changed, 14 insertions(+), 45 deletions(-)
99

1010
diff --git a/mypy/typeshed/stdlib/_operator.pyi b/mypy/typeshed/stdlib/_operator.pyi
11-
index 04dae79dc..29a6d7057 100644
11+
index 565bb4169..ff419842e 100644
1212
--- a/mypy/typeshed/stdlib/_operator.pyi
1313
+++ b/mypy/typeshed/stdlib/_operator.pyi
14-
@@ -1,15 +1,5 @@
14+
@@ -1,16 +1,5 @@
1515
import sys
1616
-from _typeshed import (
17+
- ReadableBuffer,
1718
- SupportsAdd,
1819
- SupportsGetItem,
1920
- SupportsMod,
@@ -24,19 +25,19 @@ index 04dae79dc..29a6d7057 100644
2425
- SupportsRSub,
2526
- SupportsSub,
2627
-)
27-
+from _typeshed import SupportsGetItem
28+
+from _typeshed import ReadableBuffer, SupportsGetItem
2829
from collections.abc import Callable, Container, Iterable, MutableMapping, MutableSequence, Sequence
2930
from operator import attrgetter as attrgetter, itemgetter as itemgetter, methodcaller as methodcaller
30-
from typing import Any, AnyStr, ParamSpec, Protocol, SupportsAbs, SupportsIndex, TypeAlias, TypeVar, overload, type_check_only
31-
@@ -18,7 +8,6 @@ from typing_extensions import TypeIs
31+
from typing import Any, ParamSpec, Protocol, SupportsAbs, SupportsIndex, TypeAlias, TypeVar, overload, type_check_only
32+
@@ -19,7 +8,6 @@ from typing_extensions import TypeIs
3233
_R = TypeVar("_R")
3334
_T = TypeVar("_T")
3435
_T_co = TypeVar("_T_co", covariant=True)
3536
-_T_contra = TypeVar("_T_contra", contravariant=True)
3637
_K = TypeVar("_K")
3738
_V = TypeVar("_V")
3839
_P = ParamSpec("_P")
39-
@@ -69,43 +58,24 @@ def truth(a: object, /) -> bool: ...
40+
@@ -70,43 +58,24 @@ def truth(a: object, /) -> bool: ...
4041
def is_(a: object, b: object, /) -> bool: ...
4142
def is_not(a: object, b: object, /) -> bool: ...
4243
def abs(a: SupportsAbs[_T], /) -> _T: ...
@@ -94,5 +95,5 @@ index 04dae79dc..29a6d7057 100644
9495
def contains(a: Container[object], b: object, /) -> bool: ...
9596
def countOf(a: Iterable[object], b: object, /) -> int: ...
9697
--
97-
2.54.0
98+
2.46.0.dropbox.17
9899

‎mypy/typeshed/stdlib/_codecs.pyi‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import codecs
22
import sys
3-
from _typeshed import ReadableBuffer
3+
from _typeshed import ReadableBuffer, SupportsGetItem
44
from collections.abc import Callable
55
from typing import Literal, TypeAlias, final, overload, type_check_only
66

@@ -11,7 +11,8 @@ from typing import Literal, TypeAlias, final, overload, type_check_only
1111
class _EncodingMap:
1212
def size(self) -> int: ...
1313

14-
_CharMap: TypeAlias = dict[int, int] | _EncodingMap
14+
_DecodeCharMap: TypeAlias = SupportsGetItem[int, str | int | None]
15+
_EncodeCharMap: TypeAlias = SupportsGetItem[int, bytes | int | None] | _EncodingMap
1516
_Handler: TypeAlias = Callable[[UnicodeError], tuple[str | bytes, int]]
1617
_SearchFunction: TypeAlias = Callable[[str], codecs.CodecInfo | None]
1718

@@ -70,11 +71,13 @@ def decode(obj: str, encoding: Literal["hex", "hex_codec"], errors: str = "stric
7071
def decode(obj: ReadableBuffer, encoding: str = "utf-8", errors: str = "strict") -> str: ...
7172

7273
def lookup(encoding: str, /) -> codecs.CodecInfo: ...
73-
def charmap_build(map: str, /) -> _CharMap: ...
74+
def charmap_build(map: str, /) -> dict[int, int] | _EncodingMap: ...
7475
def ascii_decode(data: ReadableBuffer, errors: str | None = None, /) -> tuple[str, int]: ...
7576
def ascii_encode(str: str, errors: str | None = None, /) -> tuple[bytes, int]: ...
76-
def charmap_decode(data: ReadableBuffer, errors: str | None = None, mapping: _CharMap | None = None, /) -> tuple[str, int]: ...
77-
def charmap_encode(str: str, errors: str | None = None, mapping: _CharMap | None = None, /) -> tuple[bytes, int]: ...
77+
def charmap_decode(
78+
data: ReadableBuffer, errors: str | None = None, mapping: _DecodeCharMap | None = None, /
79+
) -> tuple[str, int]: ...
80+
def charmap_encode(str: str, errors: str | None = None, mapping: _EncodeCharMap | None = None, /) -> tuple[bytes, int]: ...
7881

7982
# Docs say this accepts a bytes-like object, but in practice it also accepts str.
8083
def escape_decode(data: str | ReadableBuffer, errors: str | None = None, /) -> tuple[bytes, int]: ...

‎mypy/typeshed/stdlib/_frozen_importlib.pyi‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def __import__(
1616
fromlist: Sequence[str] | None = (),
1717
level: int = 0,
1818
) -> ModuleType: ...
19+
20+
# TODO: Revise the protocol for 'loader' param
1921
def spec_from_loader(
2022
name: str, loader: LoaderProtocol | None, *, origin: str | None = None, is_package: bool | None = None
2123
) -> importlib.machinery.ModuleSpec | None: ...
@@ -61,11 +63,13 @@ class BuiltinImporter(importlib.abc.MetaPathFinder, importlib.abc.InspectLoader)
6163
@classmethod
6264
def is_package(cls, fullname: str) -> bool: ...
6365
@classmethod
64-
def load_module(cls, fullname: str) -> types.ModuleType: ...
65-
@classmethod
6666
def get_code(cls, fullname: str) -> None: ...
6767
@classmethod
6868
def get_source(cls, fullname: str) -> None: ...
69+
if sys.version_info < (3, 15):
70+
@classmethod
71+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
72+
def load_module(cls, fullname: str) -> types.ModuleType: ...
6973
# Loader
7074
if sys.version_info < (3, 12):
7175
@staticmethod
@@ -95,11 +99,13 @@ class FrozenImporter(importlib.abc.MetaPathFinder, importlib.abc.InspectLoader):
9599
@classmethod
96100
def is_package(cls, fullname: str) -> bool: ...
97101
@classmethod
98-
def load_module(cls, fullname: str) -> types.ModuleType: ...
99-
@classmethod
100102
def get_code(cls, fullname: str) -> None: ...
101103
@classmethod
102104
def get_source(cls, fullname: str) -> None: ...
105+
if sys.version_info < (3, 15):
106+
@classmethod
107+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
108+
def load_module(cls, fullname: str) -> types.ModuleType: ...
103109
# Loader
104110
if sys.version_info < (3, 12):
105111
@staticmethod

‎mypy/typeshed/stdlib/_frozen_importlib_external.pyi‎

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import sys
66
import types
77
from _typeshed import ReadableBuffer, StrOrBytesPath, StrPath
88
from _typeshed.importlib import LoaderProtocol
9-
from collections.abc import Callable, Iterable, Mapping, MutableSequence, Sequence
9+
from collections.abc import Callable, Iterable, Iterator, Mapping, MutableSequence, Sequence
1010
from importlib.machinery import ModuleSpec
1111
from importlib.metadata import DistributionFinder, PathDistribution
1212
from typing import Any, Final, Literal, overload
@@ -23,13 +23,17 @@ else:
2323

2424
MAGIC_NUMBER: Final[bytes]
2525

26-
@overload
27-
@deprecated(
28-
"The `debug_override` parameter is deprecated since Python 3.5; will be removed in Python 3.15. Use `optimization` instead."
29-
)
30-
def cache_from_source(path: StrPath, debug_override: bool, *, optimization: None = None) -> str: ...
31-
@overload
32-
def cache_from_source(path: StrPath, debug_override: None = None, *, optimization: Any | None = None) -> str: ...
26+
if sys.version_info >= (3, 15):
27+
def cache_from_source(path: StrPath, *, optimization: Any | None = None) -> str: ...
28+
29+
else:
30+
@overload
31+
@deprecated(
32+
"The `debug_override` parameter is deprecated since Python 3.5; removed in Python 3.15. Use `optimization` instead."
33+
)
34+
def cache_from_source(path: StrPath, debug_override: bool, *, optimization: None = None) -> str: ...
35+
@overload
36+
def cache_from_source(path: StrPath, debug_override: None = None, *, optimization: Any | None = None) -> str: ...
3337

3438
def source_from_cache(path: StrPath) -> str: ...
3539
def decode_source(source_bytes: ReadableBuffer) -> str: ...
@@ -70,6 +74,10 @@ class PathFinder(importlib.abc.MetaPathFinder):
7074
@deprecated("Deprecated since Python 3.4; removed in Python 3.12. Use `find_spec()` instead.")
7175
def find_module(cls, fullname: str, path: Sequence[str] | None = None) -> importlib.abc.Loader | None: ...
7276

77+
if sys.version_info >= (3, 15):
78+
@classmethod
79+
def discover(cls, parent: ModuleSpec | None = None) -> Iterator[ModuleSpec]: ...
80+
7381
SOURCE_SUFFIXES: Final[list[str]]
7482
DEBUG_BYTECODE_SUFFIXES: Final = [".pyc"]
7583
OPTIMIZED_BYTECODE_SUFFIXES: Final = [".pyc"]
@@ -84,20 +92,40 @@ class FileFinder(importlib.abc.PathEntryFinder):
8492
cls, *loader_details: tuple[type[importlib.abc.Loader], list[str]]
8593
) -> Callable[[str], importlib.abc.PathEntryFinder]: ...
8694

95+
if sys.version_info >= (3, 15):
96+
def discover(self, parent: ModuleSpec | None = None) -> Iterator[ModuleSpec]: ...
97+
8798
class _LoaderBasics:
8899
def is_package(self, fullname: str) -> bool: ...
89100
def create_module(self, spec: ModuleSpec) -> types.ModuleType | None: ...
90101
def exec_module(self, module: types.ModuleType) -> None: ...
91-
def load_module(self, fullname: str) -> types.ModuleType: ...
102+
if sys.version_info < (3, 15):
103+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
104+
def load_module(self, fullname: str) -> types.ModuleType: ...
92105

93106
class SourceLoader(_LoaderBasics):
94107
def path_mtime(self, path: str) -> float: ...
95108
def set_data(self, path: str, data: bytes) -> None: ...
96109
def get_source(self, fullname: str) -> str | None: ...
97110
def path_stats(self, path: str) -> Mapping[str, Any]: ...
98-
def source_to_code(
99-
self, data: ReadableBuffer | str | _ast.Module | _ast.Expression | _ast.Interactive, path: bytes | StrPath
100-
) -> types.CodeType: ...
111+
if sys.version_info >= (3, 15):
112+
def source_to_code(
113+
self,
114+
data: ReadableBuffer | str | _ast.Module | _ast.Expression | _ast.Interactive,
115+
path: bytes | StrPath,
116+
fullname: str | None = None,
117+
*,
118+
_optimize: int = -1,
119+
) -> types.CodeType: ...
120+
else:
121+
def source_to_code(
122+
self,
123+
data: ReadableBuffer | str | _ast.Module | _ast.Expression | _ast.Interactive,
124+
path: bytes | StrPath,
125+
*,
126+
_optimize: int = -1,
127+
) -> types.CodeType: ...
128+
101129
def get_code(self, fullname: str) -> types.CodeType | None: ...
102130

103131
class FileLoader:
@@ -106,19 +134,14 @@ class FileLoader:
106134
def __init__(self, fullname: str, path: str) -> None: ...
107135
def get_data(self, path: str) -> bytes: ...
108136
def get_filename(self, fullname: str | None = None) -> str: ...
109-
def load_module(self, fullname: str | None = None) -> types.ModuleType: ...
110137
def get_resource_reader(self, name: str | None = None) -> importlib.readers.FileReader: ...
138+
if sys.version_info < (3, 15):
139+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
140+
def load_module(self, fullname: str | None = None) -> types.ModuleType: ...
111141

112142
class SourceFileLoader(importlib.abc.FileLoader, FileLoader, importlib.abc.SourceLoader, SourceLoader): # type: ignore[misc] # incompatible method arguments in base classes
113143
def set_data(self, path: str, data: ReadableBuffer, *, _mode: int = 0o666) -> None: ...
114144
def path_stats(self, path: str) -> Mapping[str, Any]: ...
115-
def source_to_code( # type: ignore[override] # incompatible with InspectLoader.source_to_code
116-
self,
117-
data: ReadableBuffer | str | _ast.Module | _ast.Expression | _ast.Interactive,
118-
path: bytes | StrPath,
119-
*,
120-
_optimize: int = -1,
121-
) -> types.CodeType: ...
122145

123146
class SourcelessFileLoader(importlib.abc.FileLoader, FileLoader, _LoaderBasics):
124147
def get_code(self, fullname: str) -> types.CodeType | None: ...
@@ -134,19 +157,34 @@ class ExtensionFileLoader(FileLoader, _LoaderBasics, importlib.abc.ExecutionLoad
134157
def __eq__(self, other: object) -> bool: ...
135158
def __hash__(self) -> int: ...
136159

160+
if sys.version_info >= (3, 15):
161+
class NamespacePath:
162+
def __init__(
163+
self, name: str, path: MutableSequence[str], path_finder: Callable[[str, tuple[str, ...]], ModuleSpec | None]
164+
) -> None: ...
165+
def __iter__(self) -> Iterator[str]: ...
166+
def __getitem__(self, index: int) -> str: ...
167+
def __setitem__(self, index: int, path: str) -> None: ...
168+
def __len__(self) -> int: ...
169+
def __contains__(self, item: str) -> bool: ...
170+
def append(self, item: str) -> None: ...
171+
172+
_NamespacePath = NamespacePath
173+
137174
if sys.version_info >= (3, 11):
138175
class NamespaceLoader(importlib.abc.InspectLoader):
139176
def __init__(
140-
self, name: str, path: MutableSequence[str], path_finder: Callable[[str, tuple[str, ...]], ModuleSpec]
177+
self, name: str, path: MutableSequence[str], path_finder: Callable[[str, tuple[str, ...]], ModuleSpec | None]
141178
) -> None: ...
142179
def is_package(self, fullname: str) -> Literal[True]: ...
143180
def get_source(self, fullname: str) -> Literal[""]: ...
144181
def get_code(self, fullname: str) -> types.CodeType: ...
145182
def create_module(self, spec: ModuleSpec) -> None: ...
146183
def exec_module(self, module: types.ModuleType) -> None: ...
147-
@deprecated("Deprecated since Python 3.10; will be removed in Python 3.15. Use `exec_module()` instead.")
148-
def load_module(self, fullname: str) -> types.ModuleType: ...
149184
def get_resource_reader(self, module: types.ModuleType) -> importlib.readers.NamespaceReader: ...
185+
if sys.version_info < (3, 15):
186+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
187+
def load_module(self, fullname: str) -> types.ModuleType: ...
150188
if sys.version_info < (3, 12):
151189
@staticmethod
152190
@deprecated(
@@ -159,14 +197,14 @@ if sys.version_info >= (3, 11):
159197
else:
160198
class _NamespaceLoader:
161199
def __init__(
162-
self, name: str, path: MutableSequence[str], path_finder: Callable[[str, tuple[str, ...]], ModuleSpec]
200+
self, name: str, path: MutableSequence[str], path_finder: Callable[[str, tuple[str, ...]], ModuleSpec | None]
163201
) -> None: ...
164202
def is_package(self, fullname: str) -> Literal[True]: ...
165203
def get_source(self, fullname: str) -> Literal[""]: ...
166204
def get_code(self, fullname: str) -> types.CodeType: ...
167205
def create_module(self, spec: ModuleSpec) -> None: ...
168206
def exec_module(self, module: types.ModuleType) -> None: ...
169-
@deprecated("Deprecated since Python 3.10; will be removed in Python 3.15. Use `exec_module()` instead.")
207+
@deprecated("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead.")
170208
def load_module(self, fullname: str) -> types.ModuleType: ...
171209
@staticmethod
172210
@deprecated(

‎mypy/typeshed/stdlib/_interpreters.pyi‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sys
12
import types
23
from collections.abc import Callable
34
from typing import Any, Final, Literal, SupportsIndex, TypeAlias, TypeVar, overload
@@ -10,7 +11,12 @@ _SharedDict: TypeAlias = dict[str, Any] # many objects can be shared
1011

1112
class InterpreterError(Exception): ...
1213
class InterpreterNotFoundError(InterpreterError): ...
13-
class NotShareableError(ValueError): ...
14+
15+
if sys.version_info >= (3, 14):
16+
class NotShareableError(TypeError): ...
17+
18+
else:
19+
class NotShareableError(ValueError): ...
1420

1521
@disjoint_base
1622
class CrossInterpreterBufferView:

‎mypy/typeshed/stdlib/_operator.pyi‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import sys
2-
from _typeshed import SupportsGetItem
2+
from _typeshed import ReadableBuffer, SupportsGetItem
33
from collections.abc import Callable, Container, Iterable, MutableMapping, MutableSequence, Sequence
44
from operator import attrgetter as attrgetter, itemgetter as itemgetter, methodcaller as methodcaller
5-
from typing import Any, AnyStr, ParamSpec, Protocol, SupportsAbs, SupportsIndex, TypeAlias, TypeVar, overload, type_check_only
5+
from typing import Any, ParamSpec, Protocol, SupportsAbs, SupportsIndex, TypeAlias, TypeVar, overload, type_check_only
66
from typing_extensions import TypeIs
77

88
_R = TypeVar("_R")
@@ -120,7 +120,10 @@ def ixor(a, b, /): ...
120120
if sys.version_info >= (3, 11):
121121
def call(obj: Callable[_P, _R], /, *args: _P.args, **kwargs: _P.kwargs) -> _R: ...
122122

123-
def _compare_digest(a: AnyStr, b: AnyStr, /) -> bool: ...
123+
@overload
124+
def _compare_digest(a: ReadableBuffer, b: ReadableBuffer, /) -> bool: ...
125+
@overload
126+
def _compare_digest(a: str, b: str, /) -> bool: ...
124127

125128
if sys.version_info >= (3, 14):
126129
def is_none(a: object, /) -> TypeIs[None]: ...

‎mypy/typeshed/stdlib/_remote_debugging.pyi‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ class BinaryWriter:
157157
@property
158158
def total_samples(self) -> int: ...
159159
def write_sample(self, stack_frames: list[InterpreterInfo], timestamp_us: int) -> None: ...
160+
def set_stats(
161+
self, /, duration_sec: float, sample_rate: float, error_rate: float | None = None, missed_samples: float | None = None
162+
) -> None: ...
160163
def finalize(self) -> None: ...
161164
def close(self) -> None: ...
162165
def __enter__(self) -> Self: ...

‎mypy/typeshed/stdlib/_socket.pyi‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ if sys.platform != "darwin":
693693
BDADDR_ANY: Final = "00:00:00:00:00:00"
694694
BDADDR_LOCAL: Final = "00:00:00:FF:FF:FF"
695695

696-
if sys.platform != "win32" and sys.platform != "darwin" and sys.platform != "linux":
696+
if sys.platform != "win32" and sys.platform != "darwin":
697697
HCI_FILTER: Final[int] # not in NetBSD or DragonFlyBSD
698698
HCI_TIME_STAMP: Final[int] # not in FreeBSD, NetBSD, or DragonFlyBSD
699699
HCI_DATA_DIR: Final[int] # not in FreeBSD, NetBSD, or DragonFlyBSD

‎mypy/typeshed/stdlib/_struct.pyi‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ from collections.abc import Iterator
33
from typing import Any
44
from typing_extensions import disjoint_base
55

6-
def pack(fmt: str | bytes, /, *v: Any) -> bytes: ...
7-
def pack_into(fmt: str | bytes, buffer: WriteableBuffer, offset: int, /, *v: Any) -> None: ...
6+
def pack(format: str | bytes, /, *values: Any) -> bytes: ...
7+
def pack_into(format: str | bytes, buffer: WriteableBuffer, offset: int, /, *values: Any) -> None: ...
88
def unpack(format: str | bytes, buffer: ReadableBuffer, /) -> tuple[Any, ...]: ...
99
def unpack_from(format: str | bytes, /, buffer: ReadableBuffer, offset: int = 0) -> tuple[Any, ...]: ...
1010
def iter_unpack(format: str | bytes, buffer: ReadableBuffer, /) -> Iterator[tuple[Any, ...]]: ...
@@ -17,8 +17,8 @@ class Struct:
1717
@property
1818
def size(self) -> int: ...
1919
def __init__(self, format: str | bytes) -> None: ...
20-
def pack(self, *v: Any) -> bytes: ...
21-
def pack_into(self, buffer: WriteableBuffer, offset: int, *v: Any) -> None: ...
20+
def pack(self, *values: Any) -> bytes: ...
21+
def pack_into(self, buffer: WriteableBuffer, offset: int, /, *values: Any) -> None: ...
2222
def unpack(self, buffer: ReadableBuffer, /) -> tuple[Any, ...]: ...
2323
def unpack_from(self, buffer: ReadableBuffer, offset: int = 0) -> tuple[Any, ...]: ...
2424
def iter_unpack(self, buffer: ReadableBuffer, /) -> Iterator[tuple[Any, ...]]: ...

0 commit comments

Comments
 (0)