Use Literal to improve tempfile.[Named]TemporaryFile. (#3215)

This commit is contained in:
Rebecca Chen
2019-08-31 02:25:44 -07:00
committed by Sebastian Rittau
parent f9300ed1ed
commit abc241bd35

View File

@@ -7,24 +7,80 @@ import sys
from types import TracebackType
from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
# global variables
TMP_MAX: int
tempdir: Optional[str]
template: str
@overload
def TemporaryFile(
mode: str = ..., buffering: int = ..., encoding: Optional[str] = ...,
newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...
) -> IO[Any]:
...
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
) -> IO[str]: ...
@overload
def TemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
) -> IO[bytes]: ...
@overload
def TemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
) -> IO[Any]: ...
@overload
def NamedTemporaryFile(
mode: str = ..., buffering: int = ..., encoding: Optional[str] = ...,
newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ..., delete: bool = ...
) -> IO[Any]:
...
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
delete: bool = ...,
) -> IO[str]: ...
@overload
def NamedTemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
delete: bool = ...,
) -> IO[bytes]: ...
@overload
def NamedTemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[AnyStr] = ...,
delete: bool = ...,
) -> IO[Any]: ...
# It does not actually derive from IO[AnyStr], but it does implement the
# protocol.