Skip to content

Commit 461b4f1

Browse files
authored
Sync typeshed (#11303)
Source commit: python/typeshed@ca983cd
1 parent c22beb4 commit 461b4f1

23 files changed

+194
-92
lines changed

mypy/typeshed/stdlib/_typeshed/__init__.pyi

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# See the README.md file in this directory for more information.
44

55
import array
6+
import ctypes
67
import mmap
78
import sys
89
from os import PathLike
@@ -167,8 +168,13 @@ class SupportsNoArgReadline(Protocol[_T_co]):
167168
class SupportsWrite(Protocol[_T_contra]):
168169
def write(self, __s: _T_contra) -> Any: ...
169170

170-
ReadableBuffer = Union[bytes, bytearray, memoryview, array.array[Any], mmap.mmap] # stable
171-
WriteableBuffer = Union[bytearray, memoryview, array.array[Any], mmap.mmap] # stable
171+
ReadOnlyBuffer = bytes # stable
172+
# Anything that implements the read-write buffer interface.
173+
# The buffer interface is defined purely on the C level, so we cannot define a normal Protocol
174+
# for it. Instead we have to list the most common stdlib buffer classes in a Union.
175+
WriteableBuffer = Union[bytearray, memoryview, array.array[Any], mmap.mmap, ctypes._CData] # stable
176+
# Same as _WriteableBuffer, but also includes read-only buffer types (like bytes).
177+
ReadableBuffer = Union[ReadOnlyBuffer, WriteableBuffer] # stable
172178

173179
# stable
174180
if sys.version_info >= (3, 10):

mypy/typeshed/stdlib/builtins.pyi

+73-30
Original file line numberDiff line numberDiff line change
@@ -1325,36 +1325,79 @@ else:
13251325
def vars(__object: Any = ...) -> dict[str, Any]: ...
13261326

13271327
class zip(Iterator[_T_co], Generic[_T_co]):
1328-
@overload
1329-
def __new__(cls, __iter1: Iterable[_T1]) -> zip[Tuple[_T1]]: ...
1330-
@overload
1331-
def __new__(cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2]) -> zip[Tuple[_T1, _T2]]: ...
1332-
@overload
1333-
def __new__(cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3]) -> zip[Tuple[_T1, _T2, _T3]]: ...
1334-
@overload
1335-
def __new__(
1336-
cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3], __iter4: Iterable[_T4]
1337-
) -> zip[Tuple[_T1, _T2, _T3, _T4]]: ...
1338-
@overload
1339-
def __new__(
1340-
cls,
1341-
__iter1: Iterable[_T1],
1342-
__iter2: Iterable[_T2],
1343-
__iter3: Iterable[_T3],
1344-
__iter4: Iterable[_T4],
1345-
__iter5: Iterable[_T5],
1346-
) -> zip[Tuple[_T1, _T2, _T3, _T4, _T5]]: ...
1347-
@overload
1348-
def __new__(
1349-
cls,
1350-
__iter1: Iterable[Any],
1351-
__iter2: Iterable[Any],
1352-
__iter3: Iterable[Any],
1353-
__iter4: Iterable[Any],
1354-
__iter5: Iterable[Any],
1355-
__iter6: Iterable[Any],
1356-
*iterables: Iterable[Any],
1357-
) -> zip[Tuple[Any, ...]]: ...
1328+
if sys.version_info >= (3, 10):
1329+
@overload
1330+
def __new__(cls, __iter1: Iterable[_T1], *, strict: bool = ...) -> zip[Tuple[_T1]]: ...
1331+
@overload
1332+
def __new__(cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], *, strict: bool = ...) -> zip[Tuple[_T1, _T2]]: ...
1333+
@overload
1334+
def __new__(
1335+
cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3], *, strict: bool = ...
1336+
) -> zip[Tuple[_T1, _T2, _T3]]: ...
1337+
@overload
1338+
def __new__(
1339+
cls,
1340+
__iter1: Iterable[_T1],
1341+
__iter2: Iterable[_T2],
1342+
__iter3: Iterable[_T3],
1343+
__iter4: Iterable[_T4],
1344+
*,
1345+
strict: bool = ...,
1346+
) -> zip[Tuple[_T1, _T2, _T3, _T4]]: ...
1347+
@overload
1348+
def __new__(
1349+
cls,
1350+
__iter1: Iterable[_T1],
1351+
__iter2: Iterable[_T2],
1352+
__iter3: Iterable[_T3],
1353+
__iter4: Iterable[_T4],
1354+
__iter5: Iterable[_T5],
1355+
*,
1356+
strict: bool = ...,
1357+
) -> zip[Tuple[_T1, _T2, _T3, _T4, _T5]]: ...
1358+
@overload
1359+
def __new__(
1360+
cls,
1361+
__iter1: Iterable[Any],
1362+
__iter2: Iterable[Any],
1363+
__iter3: Iterable[Any],
1364+
__iter4: Iterable[Any],
1365+
__iter5: Iterable[Any],
1366+
__iter6: Iterable[Any],
1367+
*iterables: Iterable[Any],
1368+
strict: bool = ...,
1369+
) -> zip[Tuple[Any, ...]]: ...
1370+
else:
1371+
@overload
1372+
def __new__(cls, __iter1: Iterable[_T1]) -> zip[Tuple[_T1]]: ...
1373+
@overload
1374+
def __new__(cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2]) -> zip[Tuple[_T1, _T2]]: ...
1375+
@overload
1376+
def __new__(cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3]) -> zip[Tuple[_T1, _T2, _T3]]: ...
1377+
@overload
1378+
def __new__(
1379+
cls, __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3], __iter4: Iterable[_T4]
1380+
) -> zip[Tuple[_T1, _T2, _T3, _T4]]: ...
1381+
@overload
1382+
def __new__(
1383+
cls,
1384+
__iter1: Iterable[_T1],
1385+
__iter2: Iterable[_T2],
1386+
__iter3: Iterable[_T3],
1387+
__iter4: Iterable[_T4],
1388+
__iter5: Iterable[_T5],
1389+
) -> zip[Tuple[_T1, _T2, _T3, _T4, _T5]]: ...
1390+
@overload
1391+
def __new__(
1392+
cls,
1393+
__iter1: Iterable[Any],
1394+
__iter2: Iterable[Any],
1395+
__iter3: Iterable[Any],
1396+
__iter4: Iterable[Any],
1397+
__iter5: Iterable[Any],
1398+
__iter6: Iterable[Any],
1399+
*iterables: Iterable[Any],
1400+
) -> zip[Tuple[Any, ...]]: ...
13581401
def __iter__(self) -> Iterator[_T_co]: ...
13591402
def __next__(self) -> _T_co: ...
13601403

mypy/typeshed/stdlib/collections/__init__.pyi

+3-3
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,9 @@ class defaultdict(Dict[_KT, _VT], Generic[_KT, _VT]):
279279
def copy(self: _S) -> _S: ...
280280

281281
class ChainMap(MutableMapping[_KT, _VT], Generic[_KT, _VT]):
282-
maps: list[Mapping[_KT, _VT]]
283-
def __init__(self, *maps: Mapping[_KT, _VT]) -> None: ...
284-
def new_child(self: Self, m: Mapping[_KT, _VT] | None = ...) -> Self: ...
282+
maps: list[MutableMapping[_KT, _VT]]
283+
def __init__(self, *maps: MutableMapping[_KT, _VT]) -> None: ...
284+
def new_child(self: Self, m: MutableMapping[_KT, _VT] | None = ...) -> Self: ...
285285
@property
286286
def parents(self: Self) -> Self: ...
287287
def __setitem__(self, k: _KT, v: _VT) -> None: ...

mypy/typeshed/stdlib/contextlib.pyi

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class ExitStack(ContextManager[ExitStack]):
7676
def __init__(self) -> None: ...
7777
def enter_context(self, cm: ContextManager[_T]) -> _T: ...
7878
def push(self, exit: _CM_EF) -> _CM_EF: ...
79-
def callback(self, callback: Callable[..., Any], *args: Any, **kwds: Any) -> Callable[..., Any]: ...
79+
def callback(self, __callback: Callable[..., Any], *args: Any, **kwds: Any) -> Callable[..., Any]: ...
8080
def pop_all(self: Self) -> Self: ...
8181
def close(self) -> None: ...
8282
def __enter__(self: Self) -> Self: ...
@@ -94,8 +94,8 @@ if sys.version_info >= (3, 7):
9494
def enter_async_context(self, cm: AsyncContextManager[_T]) -> Awaitable[_T]: ...
9595
def push(self, exit: _CM_EF) -> _CM_EF: ...
9696
def push_async_exit(self, exit: _ACM_EF) -> _ACM_EF: ...
97-
def callback(self, callback: Callable[..., Any], *args: Any, **kwds: Any) -> Callable[..., Any]: ...
98-
def push_async_callback(self, callback: _CallbackCoroFunc, *args: Any, **kwds: Any) -> _CallbackCoroFunc: ...
97+
def callback(self, __callback: Callable[..., Any], *args: Any, **kwds: Any) -> Callable[..., Any]: ...
98+
def push_async_callback(self, __callback: _CallbackCoroFunc, *args: Any, **kwds: Any) -> _CallbackCoroFunc: ...
9999
def pop_all(self: Self) -> Self: ...
100100
def aclose(self) -> Awaitable[None]: ...
101101
def __aenter__(self: Self) -> Awaitable[Self]: ...

mypy/typeshed/stdlib/ctypes/__init__.pyi

+3-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import sys
2-
from array import array
2+
from _typeshed import ReadableBuffer, WriteableBuffer
33
from typing import (
44
Any,
55
Callable,
@@ -72,13 +72,6 @@ if sys.platform == "win32":
7272
pydll: LibraryLoader[PyDLL]
7373
pythonapi: PyDLL
7474

75-
# Anything that implements the read-write buffer interface.
76-
# The buffer interface is defined purely on the C level, so we cannot define a normal Protocol
77-
# for it. Instead we have to list the most common stdlib buffer classes in a Union.
78-
_WritableBuffer = _UnionT[bytearray, memoryview, array[Any], _CData]
79-
# Same as _WritableBuffer, but also includes read-only buffer types (like bytes).
80-
_ReadOnlyBuffer = _UnionT[_WritableBuffer, bytes]
81-
8275
class _CDataMeta(type):
8376
# By default mypy complains about the following two methods, because strictly speaking cls
8477
# might not be a Type[_CT]. However this can never actually happen, because the only class that
@@ -91,9 +84,9 @@ class _CData(metaclass=_CDataMeta):
9184
_b_needsfree_: bool
9285
_objects: Mapping[Any, int] | None
9386
@classmethod
94-
def from_buffer(cls: Type[_CT], source: _WritableBuffer, offset: int = ...) -> _CT: ...
87+
def from_buffer(cls: Type[_CT], source: WriteableBuffer, offset: int = ...) -> _CT: ...
9588
@classmethod
96-
def from_buffer_copy(cls: Type[_CT], source: _ReadOnlyBuffer, offset: int = ...) -> _CT: ...
89+
def from_buffer_copy(cls: Type[_CT], source: ReadableBuffer, offset: int = ...) -> _CT: ...
9790
@classmethod
9891
def from_address(cls: Type[_CT], address: int) -> _CT: ...
9992
@classmethod

mypy/typeshed/stdlib/enum.pyi

+3-3
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ class IntFlag(int, Flag):
7575
def __or__(self: _T, other: int | _T) -> _T: ...
7676
def __and__(self: _T, other: int | _T) -> _T: ...
7777
def __xor__(self: _T, other: int | _T) -> _T: ...
78-
__ror__ = __or__
79-
__rand__ = __and__
80-
__rxor__ = __xor__
78+
def __ror__(self: _T, n: int | _T) -> _T: ...
79+
def __rand__(self: _T, n: int | _T) -> _T: ...
80+
def __rxor__(self: _T, n: int | _T) -> _T: ...
8181

8282
if sys.version_info >= (3, 11):
8383
class StrEnum(str, Enum):

mypy/typeshed/stdlib/fcntl.pyi

+5-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import sys
2-
from _typeshed import FileDescriptorLike
3-
from array import array
4-
from typing import Any, Union, overload
2+
from _typeshed import FileDescriptorLike, ReadOnlyBuffer, WriteableBuffer
3+
from typing import Any, overload
54
from typing_extensions import Literal
65

76
FASYNC: int
@@ -85,17 +84,13 @@ LOCK_WRITE: int
8584
def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: int = ...) -> int: ...
8685
@overload
8786
def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: bytes) -> bytes: ...
88-
89-
_ReadOnlyBuffer = bytes
90-
_WritableBuffer = Union[bytearray, memoryview, array[Any]]
91-
9287
@overload
9388
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: int = ..., __mutate_flag: bool = ...) -> int: ...
9489
@overload
95-
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: _WritableBuffer, __mutate_flag: Literal[True] = ...) -> int: ...
90+
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[True] = ...) -> int: ...
9691
@overload
97-
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: _WritableBuffer, __mutate_flag: Literal[False]) -> bytes: ...
92+
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[False]) -> bytes: ...
9893
@overload
99-
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: _ReadOnlyBuffer, __mutate_flag: bool = ...) -> bytes: ...
94+
def ioctl(__fd: FileDescriptorLike, __request: int, __arg: ReadOnlyBuffer, __mutate_flag: bool = ...) -> bytes: ...
10095
def flock(__fd: FileDescriptorLike, __operation: int) -> None: ...
10196
def lockf(__fd: FileDescriptorLike, __cmd: int, __len: int = ..., __start: int = ..., __whence: int = ...) -> Any: ...

mypy/typeshed/stdlib/importlib/machinery.pyi

+4
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,7 @@ class ExtensionFileLoader(importlib.abc.ExecutionLoader):
115115
def __init__(self, name: str, path: importlib.abc._Path) -> None: ...
116116
def get_filename(self, name: str | None = ...) -> importlib.abc._Path: ...
117117
def get_source(self, fullname: str) -> None: ...
118+
def create_module(self, spec: ModuleSpec) -> types.ModuleType: ...
119+
def exec_module(self, module: types.ModuleType) -> None: ...
120+
def is_package(self, fullname: str) -> bool: ...
121+
def get_code(self, fullname: str) -> None: ...

mypy/typeshed/stdlib/inspect.pyi

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class Signature:
124124
def __init__(
125125
self, parameters: Sequence[Parameter] | None = ..., *, return_annotation: Any = ..., __validate_parameters__: bool = ...
126126
) -> None: ...
127-
empty: _empty
127+
empty = _empty
128128
@property
129129
def parameters(self) -> types.MappingProxyType[str, Parameter]: ...
130130
# TODO: can we be more specific here?
@@ -172,7 +172,7 @@ class _ParameterKind(enum.IntEnum):
172172

173173
class Parameter:
174174
def __init__(self, name: str, kind: _ParameterKind, *, default: Any = ..., annotation: Any = ...) -> None: ...
175-
empty: _empty
175+
empty = _empty
176176
name: str
177177
default: Any
178178
annotation: Any

mypy/typeshed/stdlib/logging/handlers.pyi

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class BaseRotatingHandler(FileHandler):
4646

4747
class RotatingFileHandler(BaseRotatingHandler):
4848
maxBytes: str # undocumented
49-
backupCount: str # undocumented
49+
backupCount: int # undocumented
5050
if sys.version_info >= (3, 9):
5151
def __init__(
5252
self,
@@ -73,7 +73,7 @@ class RotatingFileHandler(BaseRotatingHandler):
7373

7474
class TimedRotatingFileHandler(BaseRotatingHandler):
7575
when: str # undocumented
76-
backupCount: str # undocumented
76+
backupCount: int # undocumented
7777
utc: bool # undocumented
7878
atTime: datetime.datetime | None # undocumented
7979
interval: int # undocumented

mypy/typeshed/stdlib/multiprocessing/context.pyi

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ from collections.abc import Callable, Iterable, Sequence
55
from ctypes import _CData
66
from logging import Logger
77
from multiprocessing import queues, synchronize
8+
from multiprocessing.pool import Pool as _Pool
89
from multiprocessing.process import BaseProcess
910
from multiprocessing.sharedctypes import SynchronizedArray, SynchronizedBase
1011
from typing import Any, Type, TypeVar, Union, overload
@@ -57,7 +58,7 @@ class BaseContext(object):
5758
initializer: Callable[..., Any] | None = ...,
5859
initargs: Iterable[Any] = ...,
5960
maxtasksperchild: int | None = ...,
60-
) -> multiprocessing.pool.Pool: ...
61+
) -> _Pool: ...
6162
@overload
6263
def RawValue(self, typecode_or_type: Type[_CT], *args: Any) -> _CT: ...
6364
@overload

mypy/typeshed/stdlib/parser.pyi

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def suite(source: str) -> STType: ...
77
def sequence2st(sequence: Sequence[Any]) -> STType: ...
88
def tuple2st(sequence: Sequence[Any]) -> STType: ...
99
def st2list(st: STType, line_info: bool = ..., col_info: bool = ...) -> list[Any]: ...
10-
def st2tuple(st: STType, line_info: bool = ..., col_info: bool = ...) -> Tuple[Any]: ...
10+
def st2tuple(st: STType, line_info: bool = ..., col_info: bool = ...) -> Tuple[Any, ...]: ...
1111
def compilest(st: STType, filename: StrOrBytesPath = ...) -> CodeType: ...
1212
def isexpr(st: STType) -> bool: ...
1313
def issuite(st: STType) -> bool: ...
@@ -19,4 +19,4 @@ class STType:
1919
def isexpr(self) -> bool: ...
2020
def issuite(self) -> bool: ...
2121
def tolist(self, line_info: bool = ..., col_info: bool = ...) -> list[Any]: ...
22-
def totuple(self, line_info: bool = ..., col_info: bool = ...) -> Tuple[Any]: ...
22+
def totuple(self, line_info: bool = ..., col_info: bool = ...) -> Tuple[Any, ...]: ...

0 commit comments

Comments
 (0)