tempfile: fix TemporaryFile on Windows (#4112)

Co-authored-by: hauntsaninja <>
This commit is contained in:
Shantanu
2020-05-27 20:22:01 -07:00
committed by GitHub
parent c988348179
commit 5cf2fb703a
2 changed files with 82 additions and 80 deletions

View File

@@ -27,7 +27,7 @@ else:
if sys.version_info >= (3, 8):
@overload
def TemporaryFile(
def NamedTemporaryFile(
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] = ...,
@@ -35,11 +35,12 @@ if sys.version_info >= (3, 8):
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> IO[str]: ...
@overload
def TemporaryFile(
def NamedTemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
@@ -47,11 +48,12 @@ if sys.version_info >= (3, 8):
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> IO[bytes]: ...
@overload
def TemporaryFile(
def NamedTemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
@@ -59,12 +61,13 @@ if sys.version_info >= (3, 8):
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> IO[Any]: ...
else:
@overload
def TemporaryFile(
def NamedTemporaryFile(
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] = ...,
@@ -72,9 +75,10 @@ else:
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
) -> IO[str]: ...
@overload
def TemporaryFile(
def NamedTemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
@@ -82,9 +86,10 @@ else:
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
) -> IO[bytes]: ...
@overload
def TemporaryFile(
def NamedTemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
@@ -92,82 +97,80 @@ else:
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
) -> IO[Any]: ...
if sys.version_info >= (3, 8):
@overload
def NamedTemporaryFile(
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[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> 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[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> IO[bytes]: ...
@overload
def NamedTemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
delete: bool = ...,
*,
errors: Optional[str] = ...
) -> IO[Any]: ...
if sys.platform == "win32":
TemporaryFile = NamedTemporaryFile
else:
@overload
def NamedTemporaryFile(
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[_DirT[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[_DirT[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[_DirT[AnyStr]] = ...,
delete: bool = ...,
) -> IO[Any]: ...
if sys.version_info >= (3, 8):
@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"],
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
*,
errors: Optional[str] = ...
) -> 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[_DirT[AnyStr]] = ...,
*,
errors: Optional[str] = ...
) -> IO[bytes]: ...
@overload
def TemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
*,
errors: Optional[str] = ...
) -> IO[Any]: ...
else:
@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"],
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[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[_DirT[AnyStr]] = ...,
) -> IO[bytes]: ...
@overload
def TemporaryFile(
mode: str = ...,
buffering: int = ...,
encoding: Optional[str] = ...,
newline: Optional[str] = ...,
suffix: Optional[AnyStr] = ...,
prefix: Optional[AnyStr] = ...,
dir: Optional[_DirT[AnyStr]] = ...,
) -> IO[Any]: ...
# It does not actually derive from IO[AnyStr], but it does implement the
# protocol.

View File

@@ -6,7 +6,6 @@ posixpath.altsep # Type mismatch
posixpath.realpath # Parameter name mismatch
sys.abiflags # Not present
sys.setdlopenflags # Not present
tempfile.TemporaryFile # TODO: Weird inconsistency
urllib.request.pathname2url # Parameter name mismatch
urllib.request.url2pathname # Same
winreg.[A-Za-z]+ # Should be made positional only