From c0371df172e9ea2178f77cb0f3125bba92359271 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sun, 29 Sep 2019 07:09:22 -0700 Subject: [PATCH] dir argument to tempfile functions may take PathLike (#3226) --- stdlib/3/tempfile.pyi | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/stdlib/3/tempfile.pyi b/stdlib/3/tempfile.pyi index 9aaa72ce1..5baf9abf3 100644 --- a/stdlib/3/tempfile.pyi +++ b/stdlib/3/tempfile.pyi @@ -3,9 +3,10 @@ # based on http://docs.python.org/3.3/library/tempfile.html +import os import sys from types import TracebackType -from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type +from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type, TypeVar, Union if sys.version_info >= (3, 8): from typing import Literal @@ -17,6 +18,12 @@ TMP_MAX: int tempdir: Optional[str] template: str +_T = TypeVar("_T") # for pytype, define typevar in same file as alias +if sys.version_info >= (3, 6): + _DirT = Union[_T, os.PathLike[_T]] +else: + _DirT = Union[_T] + @overload def TemporaryFile( mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"], @@ -25,7 +32,7 @@ def TemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., ) -> IO[str]: ... @overload def TemporaryFile( @@ -35,7 +42,7 @@ def TemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., ) -> IO[bytes]: ... @overload def TemporaryFile( @@ -45,7 +52,7 @@ def TemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., ) -> IO[Any]: ... @overload @@ -56,7 +63,7 @@ def NamedTemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., delete: bool = ..., ) -> IO[str]: ... @overload @@ -67,7 +74,7 @@ def NamedTemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., delete: bool = ..., ) -> IO[bytes]: ... @overload @@ -78,7 +85,7 @@ def NamedTemporaryFile( newline: Optional[str] = ..., suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ..., + dir: Optional[_DirT[AnyStr]] = ..., delete: bool = ..., ) -> IO[Any]: ... @@ -120,21 +127,21 @@ class SpooledTemporaryFile(IO[AnyStr]): class TemporaryDirectory(Generic[AnyStr]): name: str def __init__(self, suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ...) -> None: ... + dir: Optional[_DirT[AnyStr]] = ...) -> None: ... def cleanup(self) -> None: ... def __enter__(self) -> AnyStr: ... def __exit__(self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType]) -> None: ... -def mkstemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[AnyStr] = ..., +def mkstemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[_DirT[AnyStr]] = ..., text: bool = ...) -> Tuple[int, AnyStr]: ... @overload def mkdtemp() -> str: ... @overload def mkdtemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., - dir: Optional[AnyStr] = ...) -> AnyStr: ... -def mktemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[AnyStr] = ...) -> AnyStr: ... + dir: Optional[_DirT[AnyStr]] = ...) -> AnyStr: ... +def mktemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[_DirT[AnyStr]] = ...) -> AnyStr: ... def gettempdirb() -> bytes: ... def gettempprefixb() -> bytes: ...