From c339159cbf35e72a1ced78eaf92a6f27e645b89a Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sun, 23 Jan 2022 16:39:31 +0300 Subject: [PATCH] Improve `wave.open` type with overloads (#7000) --- stdlib/wave.pyi | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/stdlib/wave.pyi b/stdlib/wave.pyi index 94042dc22..22b6d3233 100644 --- a/stdlib/wave.pyi +++ b/stdlib/wave.pyi @@ -1,6 +1,6 @@ import sys from _typeshed import ReadableBuffer, Self -from typing import IO, Any, BinaryIO, NamedTuple, NoReturn, Union +from typing import IO, Any, BinaryIO, NamedTuple, NoReturn, Union, overload from typing_extensions import Literal _File = Union[str, IO[bytes]] @@ -62,7 +62,11 @@ class Wave_write: def writeframes(self, data: ReadableBuffer) -> None: ... def close(self) -> None: ... -# Returns a Wave_read if mode is rb and Wave_write if mode is wb +@overload +def open(f: _File, mode: Literal["r", "rb"]) -> Wave_read: ... +@overload +def open(f: _File, mode: Literal["w", "wb"]) -> Wave_write: ... +@overload def open(f: _File, mode: str | None = ...) -> Any: ... if sys.version_info < (3, 9):