Skip to content

Commit c0371df

Browse files
asottilesrittau
authored andcommitted
dir argument to tempfile functions may take PathLike (#3226)
1 parent 60bdf60 commit c0371df

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

stdlib/3/tempfile.pyi

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33

44
# based on http://docs.python.org/3.3/library/tempfile.html
55

6+
import os
67
import sys
78
from types import TracebackType
8-
from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type
9+
from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type, TypeVar, Union
910

1011
if sys.version_info >= (3, 8):
1112
from typing import Literal
@@ -17,6 +18,12 @@ TMP_MAX: int
1718
tempdir: Optional[str]
1819
template: str
1920

21+
_T = TypeVar("_T") # for pytype, define typevar in same file as alias
22+
if sys.version_info >= (3, 6):
23+
_DirT = Union[_T, os.PathLike[_T]]
24+
else:
25+
_DirT = Union[_T]
26+
2027
@overload
2128
def TemporaryFile(
2229
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(
2532
newline: Optional[str] = ...,
2633
suffix: Optional[AnyStr] = ...,
2734
prefix: Optional[AnyStr] = ...,
28-
dir: Optional[AnyStr] = ...,
35+
dir: Optional[_DirT[AnyStr]] = ...,
2936
) -> IO[str]: ...
3037
@overload
3138
def TemporaryFile(
@@ -35,7 +42,7 @@ def TemporaryFile(
3542
newline: Optional[str] = ...,
3643
suffix: Optional[AnyStr] = ...,
3744
prefix: Optional[AnyStr] = ...,
38-
dir: Optional[AnyStr] = ...,
45+
dir: Optional[_DirT[AnyStr]] = ...,
3946
) -> IO[bytes]: ...
4047
@overload
4148
def TemporaryFile(
@@ -45,7 +52,7 @@ def TemporaryFile(
4552
newline: Optional[str] = ...,
4653
suffix: Optional[AnyStr] = ...,
4754
prefix: Optional[AnyStr] = ...,
48-
dir: Optional[AnyStr] = ...,
55+
dir: Optional[_DirT[AnyStr]] = ...,
4956
) -> IO[Any]: ...
5057

5158
@overload
@@ -56,7 +63,7 @@ def NamedTemporaryFile(
5663
newline: Optional[str] = ...,
5764
suffix: Optional[AnyStr] = ...,
5865
prefix: Optional[AnyStr] = ...,
59-
dir: Optional[AnyStr] = ...,
66+
dir: Optional[_DirT[AnyStr]] = ...,
6067
delete: bool = ...,
6168
) -> IO[str]: ...
6269
@overload
@@ -67,7 +74,7 @@ def NamedTemporaryFile(
6774
newline: Optional[str] = ...,
6875
suffix: Optional[AnyStr] = ...,
6976
prefix: Optional[AnyStr] = ...,
70-
dir: Optional[AnyStr] = ...,
77+
dir: Optional[_DirT[AnyStr]] = ...,
7178
delete: bool = ...,
7279
) -> IO[bytes]: ...
7380
@overload
@@ -78,7 +85,7 @@ def NamedTemporaryFile(
7885
newline: Optional[str] = ...,
7986
suffix: Optional[AnyStr] = ...,
8087
prefix: Optional[AnyStr] = ...,
81-
dir: Optional[AnyStr] = ...,
88+
dir: Optional[_DirT[AnyStr]] = ...,
8289
delete: bool = ...,
8390
) -> IO[Any]: ...
8491

@@ -120,21 +127,21 @@ class SpooledTemporaryFile(IO[AnyStr]):
120127
class TemporaryDirectory(Generic[AnyStr]):
121128
name: str
122129
def __init__(self, suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ...,
123-
dir: Optional[AnyStr] = ...) -> None: ...
130+
dir: Optional[_DirT[AnyStr]] = ...) -> None: ...
124131
def cleanup(self) -> None: ...
125132
def __enter__(self) -> AnyStr: ...
126133
def __exit__(self, exc_type: Optional[Type[BaseException]],
127134
exc_val: Optional[BaseException],
128135
exc_tb: Optional[TracebackType]) -> None: ...
129136

130-
def mkstemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[AnyStr] = ...,
137+
def mkstemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[_DirT[AnyStr]] = ...,
131138
text: bool = ...) -> Tuple[int, AnyStr]: ...
132139
@overload
133140
def mkdtemp() -> str: ...
134141
@overload
135142
def mkdtemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ...,
136-
dir: Optional[AnyStr] = ...) -> AnyStr: ...
137-
def mktemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[AnyStr] = ...) -> AnyStr: ...
143+
dir: Optional[_DirT[AnyStr]] = ...) -> AnyStr: ...
144+
def mktemp(suffix: Optional[AnyStr] = ..., prefix: Optional[AnyStr] = ..., dir: Optional[_DirT[AnyStr]] = ...) -> AnyStr: ...
138145

139146
def gettempdirb() -> bytes: ...
140147
def gettempprefixb() -> bytes: ...

0 commit comments

Comments
 (0)