From ac2b24c08fe1342a23b8a80d371aeff6f73e3853 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Mon, 25 Apr 2022 20:19:29 -0700 Subject: [PATCH] warnings: New arguments to `catch_warnings()` in 3.11 (#7685) --- stdlib/warnings.pyi | 49 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/stdlib/warnings.pyi b/stdlib/warnings.pyi index bd7afb2d7..c9c143991 100644 --- a/stdlib/warnings.pyi +++ b/stdlib/warnings.pyi @@ -1,3 +1,4 @@ +import sys from _warnings import warn as warn, warn_explicit as warn_explicit from collections.abc import Sequence from types import ModuleType, TracebackType @@ -56,12 +57,48 @@ class WarningMessage: ) -> None: ... class catch_warnings: - @overload - def __new__(cls, *, record: Literal[False] = ..., module: ModuleType | None = ...) -> _catch_warnings_without_records: ... - @overload - def __new__(cls, *, record: Literal[True], module: ModuleType | None = ...) -> _catch_warnings_with_records: ... - @overload - def __new__(cls, *, record: bool, module: ModuleType | None = ...) -> catch_warnings: ... + if sys.version_info >= (3, 11): + @overload + def __new__( + cls, + *, + record: Literal[False] = ..., + module: ModuleType | None = ..., + action: _ActionKind | None = ..., + category: type[Warning] = ..., + lineno: int = ..., + append: bool = ..., + ) -> _catch_warnings_without_records: ... + @overload + def __new__( + cls, + *, + record: Literal[True], + module: ModuleType | None = ..., + action: _ActionKind | None = ..., + category: type[Warning] = ..., + lineno: int = ..., + append: bool = ..., + ) -> _catch_warnings_with_records: ... + @overload + def __new__( + cls, + *, + record: bool, + module: ModuleType | None = ..., + action: _ActionKind | None = ..., + category: type[Warning] = ..., + lineno: int = ..., + append: bool = ..., + ) -> catch_warnings: ... + else: + @overload + def __new__(cls, *, record: Literal[False] = ..., module: ModuleType | None = ...) -> _catch_warnings_without_records: ... + @overload + def __new__(cls, *, record: Literal[True], module: ModuleType | None = ...) -> _catch_warnings_with_records: ... + @overload + def __new__(cls, *, record: bool, module: ModuleType | None = ...) -> catch_warnings: ... + def __enter__(self) -> list[WarningMessage] | None: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None