Skip to content

Commit 17cf6a3

Browse files
author
mypybot
committed
Sync typeshed
Source commit: python/typeshed@b0ed50e
1 parent 1a47b19 commit 17cf6a3

File tree

11 files changed

+217
-68
lines changed

11 files changed

+217
-68
lines changed

mypy/typeshed/stdlib/asyncio/base_events.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,9 +417,9 @@ class BaseEventLoop(AbstractEventLoop):
417417
async def sock_connect(self, sock: socket, address: _Address) -> None: ...
418418
async def sock_accept(self, sock: socket) -> tuple[socket, _RetAddress]: ...
419419
if sys.version_info >= (3, 11):
420-
async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ...
421-
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> int: ...
422-
async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> None: ...
420+
async def sock_recvfrom(self, sock: socket, bufsize: int) -> tuple[bytes, _RetAddress]: ...
421+
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> tuple[int, _RetAddress]: ...
422+
async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> int: ...
423423
# Signal handling.
424424
def add_signal_handler(self, sig: int, callback: Callable[..., Any], *args: Any) -> None: ...
425425
def remove_signal_handler(self, sig: int) -> bool: ...

mypy/typeshed/stdlib/asyncio/events.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -569,11 +569,11 @@ class AbstractEventLoop:
569569
async def sock_accept(self, sock: socket) -> tuple[socket, _RetAddress]: ...
570570
if sys.version_info >= (3, 11):
571571
@abstractmethod
572-
async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ...
572+
async def sock_recvfrom(self, sock: socket, bufsize: int) -> tuple[bytes, _RetAddress]: ...
573573
@abstractmethod
574-
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> int: ...
574+
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> tuple[int, _RetAddress]: ...
575575
@abstractmethod
576-
async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> None: ...
576+
async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> int: ...
577577
# Signal handling.
578578
@abstractmethod
579579
def add_signal_handler(self, sig: int, callback: Callable[..., object], *args: Any) -> None: ...

mypy/typeshed/stdlib/builtins.pyi

Lines changed: 95 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ from typing import ( # noqa: Y022
5454
overload,
5555
type_check_only,
5656
)
57-
from typing_extensions import Concatenate, Literal, ParamSpec, Self, SupportsIndex, TypeAlias, TypeGuard, final
57+
from typing_extensions import Concatenate, Literal, LiteralString, ParamSpec, Self, SupportsIndex, TypeAlias, TypeGuard, final
5858

5959
if sys.version_info >= (3, 9):
6060
from types import GenericAlias
@@ -416,20 +416,38 @@ class str(Sequence[str]):
416416
def __new__(cls, object: object = ...) -> Self: ...
417417
@overload
418418
def __new__(cls, object: ReadableBuffer, encoding: str = ..., errors: str = ...) -> Self: ...
419+
@overload
420+
def capitalize(self: LiteralString) -> LiteralString: ...
421+
@overload
419422
def capitalize(self) -> str: ... # type: ignore[misc]
423+
@overload
424+
def casefold(self: LiteralString) -> LiteralString: ...
425+
@overload
420426
def casefold(self) -> str: ... # type: ignore[misc]
427+
@overload
428+
def center(self: LiteralString, __width: SupportsIndex, __fillchar: LiteralString = " ") -> LiteralString: ...
429+
@overload
421430
def center(self, __width: SupportsIndex, __fillchar: str = " ") -> str: ... # type: ignore[misc]
422431
def count(self, x: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ...
423432
def encode(self, encoding: str = "utf-8", errors: str = "strict") -> bytes: ...
424433
def endswith(
425434
self, __suffix: str | tuple[str, ...], __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...
426435
) -> bool: ...
427436
if sys.version_info >= (3, 8):
437+
@overload
438+
def expandtabs(self: LiteralString, tabsize: SupportsIndex = 8) -> LiteralString: ...
439+
@overload
428440
def expandtabs(self, tabsize: SupportsIndex = 8) -> str: ... # type: ignore[misc]
429441
else:
442+
@overload
443+
def expandtabs(self: LiteralString, tabsize: int = 8) -> LiteralString: ...
444+
@overload
430445
def expandtabs(self, tabsize: int = 8) -> str: ... # type: ignore[misc]
431446

432447
def find(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ...
448+
@overload
449+
def format(self: LiteralString, *args: LiteralString, **kwargs: LiteralString) -> LiteralString: ...
450+
@overload
433451
def format(self, *args: object, **kwargs: object) -> str: ...
434452
def format_map(self, map: _FormatMapMapping) -> str: ...
435453
def index(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ...
@@ -445,32 +463,91 @@ class str(Sequence[str]):
445463
def isspace(self) -> bool: ...
446464
def istitle(self) -> bool: ...
447465
def isupper(self) -> bool: ...
466+
@overload
467+
def join(self: LiteralString, __iterable: Iterable[LiteralString]) -> LiteralString: ...
468+
@overload
448469
def join(self, __iterable: Iterable[str]) -> str: ... # type: ignore[misc]
470+
@overload
471+
def ljust(self: LiteralString, __width: SupportsIndex, __fillchar: LiteralString = " ") -> LiteralString: ...
472+
@overload
449473
def ljust(self, __width: SupportsIndex, __fillchar: str = " ") -> str: ... # type: ignore[misc]
474+
@overload
475+
def lower(self: LiteralString) -> LiteralString: ...
476+
@overload
450477
def lower(self) -> str: ... # type: ignore[misc]
478+
@overload
479+
def lstrip(self: LiteralString, __chars: LiteralString | None = None) -> LiteralString: ...
480+
@overload
451481
def lstrip(self, __chars: str | None = None) -> str: ... # type: ignore[misc]
482+
@overload
483+
def partition(self: LiteralString, __sep: LiteralString) -> tuple[LiteralString, LiteralString, LiteralString]: ...
484+
@overload
452485
def partition(self, __sep: str) -> tuple[str, str, str]: ... # type: ignore[misc]
486+
@overload
487+
def replace(
488+
self: LiteralString, __old: LiteralString, __new: LiteralString, __count: SupportsIndex = -1
489+
) -> LiteralString: ...
490+
@overload
453491
def replace(self, __old: str, __new: str, __count: SupportsIndex = -1) -> str: ... # type: ignore[misc]
454492
if sys.version_info >= (3, 9):
493+
@overload
494+
def removeprefix(self: LiteralString, __prefix: LiteralString) -> LiteralString: ...
495+
@overload
455496
def removeprefix(self, __prefix: str) -> str: ... # type: ignore[misc]
497+
@overload
498+
def removesuffix(self: LiteralString, __suffix: LiteralString) -> LiteralString: ...
499+
@overload
456500
def removesuffix(self, __suffix: str) -> str: ... # type: ignore[misc]
457501

458502
def rfind(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ...
459503
def rindex(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ...
504+
@overload
505+
def rjust(self: LiteralString, __width: SupportsIndex, __fillchar: LiteralString = " ") -> LiteralString: ...
506+
@overload
460507
def rjust(self, __width: SupportsIndex, __fillchar: str = " ") -> str: ... # type: ignore[misc]
508+
@overload
509+
def rpartition(self: LiteralString, __sep: LiteralString) -> tuple[LiteralString, LiteralString, LiteralString]: ...
510+
@overload
461511
def rpartition(self, __sep: str) -> tuple[str, str, str]: ... # type: ignore[misc]
512+
@overload
513+
def rsplit(self: LiteralString, sep: LiteralString | None = None, maxsplit: SupportsIndex = -1) -> list[LiteralString]: ...
514+
@overload
462515
def rsplit(self, sep: str | None = None, maxsplit: SupportsIndex = -1) -> list[str]: ... # type: ignore[misc]
516+
@overload
517+
def rstrip(self: LiteralString, __chars: LiteralString | None = None) -> LiteralString: ...
518+
@overload
463519
def rstrip(self, __chars: str | None = None) -> str: ... # type: ignore[misc]
520+
@overload
521+
def split(self: LiteralString, sep: LiteralString | None = None, maxsplit: SupportsIndex = -1) -> list[LiteralString]: ...
522+
@overload
464523
def split(self, sep: str | None = None, maxsplit: SupportsIndex = -1) -> list[str]: ... # type: ignore[misc]
524+
@overload
525+
def splitlines(self: LiteralString, keepends: bool = False) -> list[LiteralString]: ...
526+
@overload
465527
def splitlines(self, keepends: bool = False) -> list[str]: ... # type: ignore[misc]
466528
def startswith(
467529
self, __prefix: str | tuple[str, ...], __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...
468530
) -> bool: ...
531+
@overload
532+
def strip(self: LiteralString, __chars: LiteralString | None = None) -> LiteralString: ...
533+
@overload
469534
def strip(self, __chars: str | None = None) -> str: ... # type: ignore[misc]
535+
@overload
536+
def swapcase(self: LiteralString) -> LiteralString: ...
537+
@overload
470538
def swapcase(self) -> str: ... # type: ignore[misc]
539+
@overload
540+
def title(self: LiteralString) -> LiteralString: ...
541+
@overload
471542
def title(self) -> str: ... # type: ignore[misc]
472543
def translate(self, __table: _TranslateTable) -> str: ...
544+
@overload
545+
def upper(self: LiteralString) -> LiteralString: ...
546+
@overload
473547
def upper(self) -> str: ... # type: ignore[misc]
548+
@overload
549+
def zfill(self: LiteralString, __width: SupportsIndex) -> LiteralString: ...
550+
@overload
474551
def zfill(self, __width: SupportsIndex) -> str: ... # type: ignore[misc]
475552
@staticmethod
476553
@overload
@@ -481,20 +558,35 @@ class str(Sequence[str]):
481558
@staticmethod
482559
@overload
483560
def maketrans(__x: str, __y: str, __z: str) -> dict[int, int | None]: ...
561+
@overload
562+
def __add__(self: LiteralString, __value: LiteralString) -> LiteralString: ...
563+
@overload
484564
def __add__(self, __value: str) -> str: ... # type: ignore[misc]
485565
# Incompatible with Sequence.__contains__
486566
def __contains__(self, __key: str) -> bool: ... # type: ignore[override]
487567
def __eq__(self, __value: object) -> bool: ...
488568
def __ge__(self, __value: str) -> bool: ...
489569
def __getitem__(self, __key: SupportsIndex | slice) -> str: ...
490570
def __gt__(self, __value: str) -> bool: ...
571+
@overload
572+
def __iter__(self: LiteralString) -> Iterator[LiteralString]: ...
573+
@overload
491574
def __iter__(self) -> Iterator[str]: ... # type: ignore[misc]
492575
def __le__(self, __value: str) -> bool: ...
493576
def __len__(self) -> int: ...
494577
def __lt__(self, __value: str) -> bool: ...
578+
@overload
579+
def __mod__(self: LiteralString, __value: LiteralString | tuple[LiteralString, ...]) -> LiteralString: ...
580+
@overload
495581
def __mod__(self, __value: Any) -> str: ...
582+
@overload
583+
def __mul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ...
584+
@overload
496585
def __mul__(self, __value: SupportsIndex) -> str: ... # type: ignore[misc]
497586
def __ne__(self, __value: object) -> bool: ...
587+
@overload
588+
def __rmul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ...
589+
@overload
498590
def __rmul__(self, __value: SupportsIndex) -> str: ... # type: ignore[misc]
499591
def __getnewargs__(self) -> tuple[str]: ...
500592

@@ -1638,11 +1730,11 @@ _SupportsSumNoDefaultT = TypeVar("_SupportsSumNoDefaultT", bound=_SupportsSumWit
16381730
# Instead, we special-case the most common examples of this: bool and literal integers.
16391731
if sys.version_info >= (3, 8):
16401732
@overload
1641-
def sum(__iterable: Iterable[bool], start: int = 0) -> int: ... # type: ignore[misc]
1733+
def sum(__iterable: Iterable[bool | _LiteralInteger], start: int = 0) -> int: ... # type: ignore[misc]
16421734

16431735
else:
16441736
@overload
1645-
def sum(__iterable: Iterable[bool], __start: int = 0) -> int: ... # type: ignore[misc]
1737+
def sum(__iterable: Iterable[bool | _LiteralInteger], __start: int = 0) -> int: ... # type: ignore[misc]
16461738

16471739
@overload
16481740
def sum(__iterable: Iterable[_SupportsSumNoDefaultT]) -> _SupportsSumNoDefaultT | Literal[0]: ...

mypy/typeshed/stdlib/ctypes/__init__.pyi

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,11 @@ class Array(Generic[_CT], _CData):
271271
def _type_(self) -> type[_CT]: ...
272272
@_type_.setter
273273
def _type_(self, value: type[_CT]) -> None: ...
274-
raw: bytes # Note: only available if _CT == c_char
274+
# Note: only available if _CT == c_char
275+
@property
276+
def raw(self) -> bytes: ...
277+
@raw.setter
278+
def raw(self, value: ReadableBuffer) -> None: ...
275279
value: Any # Note: bytes if _CT == c_char, str if _CT == c_wchar, unavailable otherwise
276280
# TODO These methods cannot be annotated correctly at the moment.
277281
# All of these "Any"s stand for the array's element type, but it's not possible to use _CT

mypy/typeshed/stdlib/dataclasses.pyi

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,27 @@ class InitVar(Generic[_T], metaclass=_InitVarMeta):
247247
@overload
248248
def __class_getitem__(cls, type: Any) -> InitVar[Any]: ...
249249

250-
if sys.version_info >= (3, 11):
250+
if sys.version_info >= (3, 12):
251+
def make_dataclass(
252+
cls_name: str,
253+
fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]],
254+
*,
255+
bases: tuple[type, ...] = (),
256+
namespace: dict[str, Any] | None = None,
257+
init: bool = True,
258+
repr: bool = True,
259+
eq: bool = True,
260+
order: bool = False,
261+
unsafe_hash: bool = False,
262+
frozen: bool = False,
263+
match_args: bool = True,
264+
kw_only: bool = False,
265+
slots: bool = False,
266+
weakref_slot: bool = False,
267+
module: str | None = None,
268+
) -> type: ...
269+
270+
elif sys.version_info >= (3, 11):
251271
def make_dataclass(
252272
cls_name: str,
253273
fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]],

mypy/typeshed/stdlib/functools.pyi

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import sys
22
import types
3-
from _typeshed import IdentityFunction, SupportsAllComparisons, SupportsItems
3+
from _typeshed import SupportsAllComparisons, SupportsItems
44
from collections.abc import Callable, Hashable, Iterable, Sequence, Sized
55
from typing import Any, Generic, NamedTuple, TypeVar, overload
6-
from typing_extensions import Literal, Self, TypeAlias, final
6+
from typing_extensions import Literal, ParamSpec, Self, TypeAlias, final
77

88
if sys.version_info >= (3, 9):
99
from types import GenericAlias
@@ -28,10 +28,12 @@ if sys.version_info >= (3, 8):
2828
if sys.version_info >= (3, 9):
2929
__all__ += ["cache"]
3030

31-
_AnyCallable: TypeAlias = Callable[..., object]
32-
3331
_T = TypeVar("_T")
3432
_S = TypeVar("_S")
33+
_PWrapped = ParamSpec("_PWrapped")
34+
_RWrapped = TypeVar("_RWrapped")
35+
_PWrapper = ParamSpec("_PWrapper")
36+
_RWapper = TypeVar("_RWapper")
3537

3638
@overload
3739
def reduce(function: Callable[[_T, _S], _T], sequence: Iterable[_S], initial: _T) -> _T: ...
@@ -67,17 +69,27 @@ WRAPPER_ASSIGNMENTS: tuple[
6769
]
6870
WRAPPER_UPDATES: tuple[Literal["__dict__"]]
6971

72+
class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]):
73+
__wrapped__: Callable[_PWrapped, _RWrapped]
74+
def __call__(self, *args: _PWrapper.args, **kwargs: _PWrapper.kwargs) -> _RWapper: ...
75+
# as with ``Callable``, we'll assume that these attributes exist
76+
__name__: str
77+
__qualname__: str
78+
79+
class _Wrapper(Generic[_PWrapped, _RWrapped]):
80+
def __call__(self, f: Callable[_PWrapper, _RWapper]) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ...
81+
7082
def update_wrapper(
71-
wrapper: _T,
72-
wrapped: _AnyCallable,
83+
wrapper: Callable[_PWrapper, _RWapper],
84+
wrapped: Callable[_PWrapped, _RWrapped],
7385
assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"),
7486
updated: Sequence[str] = ("__dict__",),
75-
) -> _T: ...
87+
) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ...
7688
def wraps(
77-
wrapped: _AnyCallable,
89+
wrapped: Callable[_PWrapped, _RWrapped],
7890
assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"),
7991
updated: Sequence[str] = ("__dict__",),
80-
) -> IdentityFunction: ...
92+
) -> _Wrapper[_PWrapped, _RWrapped]: ...
8193
def total_ordering(cls: type[_T]) -> type[_T]: ...
8294
def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ...
8395

mypy/typeshed/stdlib/pathlib.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ class Path(PurePath):
173173
def resolve(self, strict: bool = False) -> Self: ...
174174
def rglob(self, pattern: str) -> Generator[Self, None, None]: ...
175175
def rmdir(self) -> None: ...
176-
def symlink_to(self, target: str | Path, target_is_directory: bool = False) -> None: ...
176+
def symlink_to(self, target: StrOrBytesPath, target_is_directory: bool = False) -> None: ...
177177
if sys.version_info >= (3, 10):
178-
def hardlink_to(self, target: str | Path) -> None: ...
178+
def hardlink_to(self, target: StrOrBytesPath) -> None: ...
179179

180180
def touch(self, mode: int = 0o666, exist_ok: bool = True) -> None: ...
181181
if sys.version_info >= (3, 8):

mypy/typeshed/stdlib/sys.pyi

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,20 @@ class _int_info(structseq[int], tuple[int, int, int, int]):
201201
@property
202202
def str_digits_check_threshold(self) -> int: ...
203203

204+
_ThreadInfoName: TypeAlias = Literal["nt", "pthread", "pthread-stubs", "solaris"]
205+
_ThreadInfoLock: TypeAlias = Literal["semaphore", "mutex+cond"] | None
206+
207+
@final
208+
class _thread_info(_UninstantiableStructseq, tuple[_ThreadInfoName, _ThreadInfoLock, str | None]):
209+
@property
210+
def name(self) -> _ThreadInfoName: ...
211+
@property
212+
def lock(self) -> _ThreadInfoLock: ...
213+
@property
214+
def version(self) -> str | None: ...
215+
216+
thread_info: _thread_info
217+
204218
@final
205219
class _version_info(_UninstantiableStructseq, tuple[int, int, int, str, int]):
206220
@property

0 commit comments

Comments
 (0)