diff --git a/mypy/typeshed/stdlib/_pickle.pyi b/mypy/typeshed/stdlib/_pickle.pyi index 544f787172d6f..4294de4c2c7fe 100644 --- a/mypy/typeshed/stdlib/_pickle.pyi +++ b/mypy/typeshed/stdlib/_pickle.pyi @@ -61,7 +61,6 @@ class PicklerMemoProxy: class Pickler: fast: bool dispatch_table: Mapping[type, Callable[[Any], _ReducedType]] - reducer_override: Callable[[Any], Any] bin: bool # undocumented def __init__( self, @@ -79,6 +78,10 @@ class Pickler: # this method has no default implementation for Python < 3.13 def persistent_id(self, obj: Any, /) -> Any: ... + # The following method is not defined on _Pickler, but can be defined on + # sub-classes. Should return `NotImplemented` if pickling the supplied + # object is not supported and returns the same types as `__reduce__()`. + def reducer_override(self, obj: object, /) -> _ReducedType: ... @type_check_only class UnpicklerMemoProxy: diff --git a/mypy/typeshed/stdlib/_sqlite3.pyi b/mypy/typeshed/stdlib/_sqlite3.pyi index 50006dcf4032d..437a9c9766829 100644 --- a/mypy/typeshed/stdlib/_sqlite3.pyi +++ b/mypy/typeshed/stdlib/_sqlite3.pyi @@ -19,7 +19,7 @@ from sqlite3 import ( _IsolationLevel, ) from typing import Any, Final, Literal, TypeVar, overload -from typing_extensions import TypeAlias +from typing_extensions import TypeAlias, deprecated if sys.version_info >= (3, 11): from sqlite3 import Blob as Blob @@ -299,7 +299,11 @@ def enable_callback_tracebacks(enable: bool, /) -> None: ... if sys.version_info < (3, 12): # takes a pos-or-keyword argument because there is a C wrapper - def enable_shared_cache(do_enable: int) -> None: ... + @deprecated( + "Deprecated since Python 3.10; removed in Python 3.12. " + "Open database in URI mode using `cache=shared` parameter instead." + ) + def enable_shared_cache(do_enable: int) -> None: ... # undocumented if sys.version_info >= (3, 10): def register_adapter(type: type[_T], adapter: _Adapter[_T], /) -> None: ... @@ -310,4 +314,4 @@ else: def register_converter(name: str, converter: _Converter, /) -> None: ... if sys.version_info < (3, 10): - OptimizedUnicode = str + OptimizedUnicode = str # undocumented diff --git a/mypy/typeshed/stdlib/_ssl.pyi b/mypy/typeshed/stdlib/_ssl.pyi index 73a43f29c8c5f..d8cb9d49e7820 100644 --- a/mypy/typeshed/stdlib/_ssl.pyi +++ b/mypy/typeshed/stdlib/_ssl.pyi @@ -55,6 +55,7 @@ if sys.version_info < (3, 12): def RAND_pseudo_bytes(n: int, /) -> tuple[bytes, bool]: ... if sys.version_info < (3, 10): + @deprecated("Unsupported by OpenSSL since 1.1.1; removed in Python 3.10.") def RAND_egd(path: str) -> None: ... def RAND_status() -> bool: ... diff --git a/mypy/typeshed/stdlib/asyncio/base_tasks.pyi b/mypy/typeshed/stdlib/asyncio/base_tasks.pyi index 42e952ffacaf0..5b010a9efe3d9 100644 --- a/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +++ b/mypy/typeshed/stdlib/asyncio/base_tasks.pyi @@ -1,9 +1,17 @@ +import sys from _typeshed import StrOrBytesPath from types import FrameType from typing import Any -from . import tasks +from .tasks import Task -def _task_repr_info(task: tasks.Task[Any]) -> list[str]: ... # undocumented -def _task_get_stack(task: tasks.Task[Any], limit: int | None) -> list[FrameType]: ... # undocumented -def _task_print_stack(task: tasks.Task[Any], limit: int | None, file: StrOrBytesPath) -> None: ... # undocumented +def _task_repr_info(task: Task[Any]) -> list[str]: ... # undocumented + +if sys.version_info >= (3, 13): + def _task_repr(task: Task[Any]) -> str: ... # undocumented + +elif sys.version_info >= (3, 11): + def _task_repr(self: Task[Any]) -> str: ... # undocumented + +def _task_get_stack(task: Task[Any], limit: int | None) -> list[FrameType]: ... # undocumented +def _task_print_stack(task: Task[Any], limit: int | None, file: StrOrBytesPath) -> None: ... # undocumented diff --git a/mypy/typeshed/stdlib/asyncio/unix_events.pyi b/mypy/typeshed/stdlib/asyncio/unix_events.pyi index 9071ee9a2fa7e..54a2a039749e3 100644 --- a/mypy/typeshed/stdlib/asyncio/unix_events.pyi +++ b/mypy/typeshed/stdlib/asyncio/unix_events.pyi @@ -205,6 +205,35 @@ if sys.platform != "win32": def remove_child_handler(self, pid: int) -> bool: ... def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... + @deprecated("Deprecated since Python 3.12; removed in Python 3.14.") + class ThreadedChildWatcher(AbstractChildWatcher): + def is_active(self) -> Literal[True]: ... + def close(self) -> None: ... + def __enter__(self) -> Self: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None + ) -> None: ... + def __del__(self) -> None: ... + def add_child_handler( + self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] + ) -> None: ... + def remove_child_handler(self, pid: int) -> bool: ... + def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... + + @deprecated("Deprecated since Python 3.12; removed in Python 3.14.") + class PidfdChildWatcher(AbstractChildWatcher): + def __enter__(self) -> Self: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None + ) -> None: ... + def is_active(self) -> bool: ... + def close(self) -> None: ... + def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... + def add_child_handler( + self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] + ) -> None: ... + def remove_child_handler(self, pid: int) -> bool: ... + else: class MultiLoopChildWatcher(AbstractChildWatcher): def is_active(self) -> bool: ... @@ -219,30 +248,29 @@ if sys.platform != "win32": def remove_child_handler(self, pid: int) -> bool: ... def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... - if sys.version_info < (3, 14): - class ThreadedChildWatcher(AbstractChildWatcher): - def is_active(self) -> Literal[True]: ... - def close(self) -> None: ... - def __enter__(self) -> Self: ... - def __exit__( - self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None - ) -> None: ... - def __del__(self) -> None: ... - def add_child_handler( - self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] - ) -> None: ... - def remove_child_handler(self, pid: int) -> bool: ... - def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... + class ThreadedChildWatcher(AbstractChildWatcher): + def is_active(self) -> Literal[True]: ... + def close(self) -> None: ... + def __enter__(self) -> Self: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None + ) -> None: ... + def __del__(self) -> None: ... + def add_child_handler( + self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] + ) -> None: ... + def remove_child_handler(self, pid: int) -> bool: ... + def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... - class PidfdChildWatcher(AbstractChildWatcher): - def __enter__(self) -> Self: ... - def __exit__( - self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None - ) -> None: ... - def is_active(self) -> bool: ... - def close(self) -> None: ... - def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... - def add_child_handler( - self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] - ) -> None: ... - def remove_child_handler(self, pid: int) -> bool: ... + class PidfdChildWatcher(AbstractChildWatcher): + def __enter__(self) -> Self: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None + ) -> None: ... + def is_active(self) -> bool: ... + def close(self) -> None: ... + def attach_loop(self, loop: events.AbstractEventLoop | None) -> None: ... + def add_child_handler( + self, pid: int, callback: Callable[[int, int, Unpack[_Ts]], object], *args: Unpack[_Ts] + ) -> None: ... + def remove_child_handler(self, pid: int) -> bool: ... diff --git a/mypy/typeshed/stdlib/code.pyi b/mypy/typeshed/stdlib/code.pyi index 0b13c8a5016d4..478d5aaa320fd 100644 --- a/mypy/typeshed/stdlib/code.pyi +++ b/mypy/typeshed/stdlib/code.pyi @@ -24,6 +24,7 @@ class InteractiveConsole(InteractiveInterpreter): buffer: list[str] # undocumented filename: str # undocumented if sys.version_info >= (3, 13): + local_exit: bool # undocumented def __init__( self, locals: dict[str, Any] | None = None, filename: str = "", *, local_exit: bool = False ) -> None: ... diff --git a/mypy/typeshed/stdlib/configparser.pyi b/mypy/typeshed/stdlib/configparser.pyi index 1909d80e3d189..1e11088c3ae7a 100644 --- a/mypy/typeshed/stdlib/configparser.pyi +++ b/mypy/typeshed/stdlib/configparser.pyi @@ -1,8 +1,8 @@ import sys -from _typeshed import MaybeNone, StrOrBytesPath, SupportsWrite +from _typeshed import BytesPath, GenericPath, MaybeNone, StrOrBytesPath, StrPath, SupportsWrite from collections.abc import Callable, ItemsView, Iterable, Iterator, Mapping, MutableMapping, Sequence from re import Pattern -from typing import Any, ClassVar, Final, Literal, TypeVar, overload, type_check_only +from typing import Any, AnyStr, ClassVar, Final, Literal, TypeVar, overload, type_check_only from typing_extensions import TypeAlias, deprecated if sys.version_info >= (3, 14): @@ -269,7 +269,14 @@ class RawConfigParser(_Parser): def has_section(self, section: _SectionName) -> bool: ... def options(self, section: _SectionName) -> list[str]: ... def has_option(self, section: _SectionName, option: str) -> bool: ... - def read(self, filenames: StrOrBytesPath | Iterable[StrOrBytesPath], encoding: str | None = None) -> list[str]: ... + @overload + def read(self, filenames: GenericPath[AnyStr], encoding: str | None = None) -> list[AnyStr]: ... + @overload + def read(self, filenames: Iterable[StrPath], encoding: str | None = None) -> list[str]: ... + @overload + def read(self, filenames: Iterable[BytesPath], encoding: str | None = None) -> list[bytes]: ... + @overload + def read(self, filenames: Iterable[StrOrBytesPath], encoding: str | None = None) -> list[str | bytes]: ... def read_file(self, f: Iterable[str], source: str | None = None) -> None: ... def read_string(self, string: str, source: str = "") -> None: ... def read_dict(self, dictionary: Mapping[str, Mapping[str, Any]], source: str = "") -> None: ... diff --git a/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi b/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi index 9286e92331c82..bb1b22f11a624 100644 --- a/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +++ b/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi @@ -10,7 +10,7 @@ from importlib.abc import MetaPathFinder from os import PathLike from pathlib import Path from re import Pattern -from typing import Any, ClassVar, Generic, NamedTuple, TypeVar, overload +from typing import Any, ClassVar, Generic, NamedTuple, TypeVar, overload, type_check_only from typing_extensions import Self, TypeAlias, deprecated, disjoint_base _T = TypeVar("_T") @@ -54,6 +54,7 @@ elif sys.version_info >= (3, 11): _EntryPointBase = DeprecatedTuple else: + @type_check_only class _EntryPointBase(NamedTuple): name: str value: str diff --git a/mypy/typeshed/stdlib/mmap.pyi b/mypy/typeshed/stdlib/mmap.pyi index 005020b8b6b30..12425f703aa1a 100644 --- a/mypy/typeshed/stdlib/mmap.pyi +++ b/mypy/typeshed/stdlib/mmap.pyi @@ -34,7 +34,7 @@ PAGESIZE: Final[int] @disjoint_base class mmap: if sys.platform == "win32": - def __new__(self, fileno: int, length: int, tagname: str | None = None, access: int = 0, offset: int = 0) -> Self: ... + def __new__(cls, fileno: int, length: int, tagname: str | None = None, access: int = 0, offset: int = 0) -> Self: ... else: if sys.version_info >= (3, 13): def __new__( diff --git a/mypy/typeshed/stdlib/pickle.pyi b/mypy/typeshed/stdlib/pickle.pyi index 0f486b1d00464..03ba6c12cd4ab 100644 --- a/mypy/typeshed/stdlib/pickle.pyi +++ b/mypy/typeshed/stdlib/pickle.pyi @@ -208,7 +208,6 @@ class _Pickler: dispatch_table: Mapping[type, Callable[[Any], _ReducedType]] bin: bool # undocumented dispatch: ClassVar[dict[type, Callable[[Unpickler, Any], None]]] # undocumented, _Pickler only - reducer_override: Callable[[Any], Any] def __init__( self, file: SupportsWrite[bytes], @@ -220,6 +219,10 @@ class _Pickler: def dump(self, obj: Any) -> None: ... def clear_memo(self) -> None: ... def persistent_id(self, obj: Any) -> Any: ... + # The following method is not defined on _Pickler, but can be defined on + # sub-classes. Should return `NotImplemented` if pickling the supplied + # object is not supported and returns the same types as `__reduce__()`. + def reducer_override(self, obj: object, /) -> _ReducedType: ... class _Unpickler: dispatch: ClassVar[dict[int, Callable[[Unpickler], None]]] # undocumented, _Unpickler only diff --git a/mypy/typeshed/stdlib/signal.pyi b/mypy/typeshed/stdlib/signal.pyi index c2668bd8b32d9..3bf1d31293787 100644 --- a/mypy/typeshed/stdlib/signal.pyi +++ b/mypy/typeshed/stdlib/signal.pyi @@ -9,7 +9,6 @@ from typing_extensions import Never, TypeAlias NSIG: int class Signals(IntEnum): - SIGABRT = 6 SIGFPE = 8 SIGILL = 4 SIGINT = 2 @@ -17,10 +16,12 @@ class Signals(IntEnum): SIGTERM = 15 if sys.platform == "win32": + SIGABRT = 22 SIGBREAK = 21 CTRL_C_EVENT = 0 CTRL_BREAK_EVENT = 1 else: + SIGABRT = 6 SIGALRM = 14 SIGBUS = 7 SIGCHLD = 17 diff --git a/mypy/typeshed/stdlib/statistics.pyi b/mypy/typeshed/stdlib/statistics.pyi index 188bed3375bfd..d9f282b99b662 100644 --- a/mypy/typeshed/stdlib/statistics.pyi +++ b/mypy/typeshed/stdlib/statistics.pyi @@ -3,7 +3,7 @@ from _typeshed import SupportsRichComparisonT from collections.abc import Callable, Hashable, Iterable, Sequence, Sized from decimal import Decimal from fractions import Fraction -from typing import Literal, NamedTuple, Protocol, SupportsFloat, SupportsIndex, TypeVar +from typing import Literal, NamedTuple, Protocol, SupportsFloat, SupportsIndex, TypeVar, type_check_only from typing_extensions import Self, TypeAlias __all__ = [ @@ -44,7 +44,9 @@ _Seed: TypeAlias = int | float | str | bytes | bytearray # noqa: Y041 # Used in linear_regression _T_co = TypeVar("_T_co", covariant=True) +@type_check_only class _SizedIterable(Iterable[_T_co], Sized, Protocol[_T_co]): ... + class StatisticsError(ValueError): ... if sys.version_info >= (3, 11): diff --git a/mypy/typeshed/stdlib/threading.pyi b/mypy/typeshed/stdlib/threading.pyi index abc7fe7e81246..03c8865d3c0a4 100644 --- a/mypy/typeshed/stdlib/threading.pyi +++ b/mypy/typeshed/stdlib/threading.pyi @@ -3,7 +3,7 @@ import sys from _thread import _ExceptHookArgs, get_native_id as get_native_id from _typeshed import ProfileFunction, TraceFunction from collections.abc import Callable, Iterable, Mapping -from contextvars import ContextVar +from contextvars import Context from types import TracebackType from typing import Any, Final, TypeVar, final from typing_extensions import deprecated @@ -87,7 +87,7 @@ class Thread: kwargs: Mapping[str, Any] | None = None, *, daemon: bool | None = None, - context: ContextVar[Any] | None = None, + context: Context | None = None, ) -> None: ... else: def __init__( diff --git a/mypy/typeshed/stdlib/tkinter/ttk.pyi b/mypy/typeshed/stdlib/tkinter/ttk.pyi index 7143c7cce5921..0a6837201035c 100644 --- a/mypy/typeshed/stdlib/tkinter/ttk.pyi +++ b/mypy/typeshed/stdlib/tkinter/ttk.pyi @@ -57,6 +57,7 @@ _VsapiStatespec: TypeAlias = tuple[Unpack[tuple[str, ...]], int] _P = ParamSpec("_P") _T = TypeVar("_T") +@type_check_only class _Layout(TypedDict, total=False): side: Literal["left", "right", "top", "bottom"] sticky: str # consists of letters 'n', 's', 'w', 'e', may contain repeats, may be empty @@ -68,6 +69,7 @@ class _Layout(TypedDict, total=False): _LayoutSpec: TypeAlias = list[tuple[str, _Layout | None]] # Keep these in sync with the appropriate methods in Style +@type_check_only class _ElementCreateImageKwargs(TypedDict, total=False): border: _Padding height: float | str @@ -82,12 +84,15 @@ _ElementCreateArgsCrossPlatform: TypeAlias = ( | tuple[Literal["from"], str] # (fromelement is optional) ) if sys.platform == "win32" and sys.version_info >= (3, 13): + @type_check_only class _ElementCreateVsapiKwargsPadding(TypedDict, total=False): padding: _Padding + @type_check_only class _ElementCreateVsapiKwargsMargin(TypedDict, total=False): padding: _Padding + @type_check_only class _ElementCreateVsapiKwargsSize(TypedDict): width: float | str height: float | str diff --git a/mypy/typeshed/stdlib/unittest/main.pyi b/mypy/typeshed/stdlib/unittest/main.pyi index 23ead1638ecc2..e1aeac32c5910 100644 --- a/mypy/typeshed/stdlib/unittest/main.pyi +++ b/mypy/typeshed/stdlib/unittest/main.pyi @@ -18,7 +18,7 @@ class _TestRunner(Protocol): # not really documented class TestProgram: result: unittest.result.TestResult - module: None | str | ModuleType + module: ModuleType | None verbosity: int failfast: bool | None catchbreak: bool | None @@ -30,7 +30,7 @@ class TestProgram: durations: unittest.result._DurationsType | None def __init__( self, - module: None | str | ModuleType = "__main__", + module: ModuleType | str | None = "__main__", defaultTest: str | Iterable[str] | None = None, argv: list[str] | None = None, testRunner: type[_TestRunner] | _TestRunner | None = None,