Skip to content

Commit 5f9d05c

Browse files
authored
TemporaryFile(): Handle one more case correctly (#10284)
1 parent 6e90fce commit 5f9d05c

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

stdlib/tempfile.pyi

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,17 @@ else:
191191
errors: str | None = None,
192192
) -> io.FileIO: ...
193193
@overload
194+
def TemporaryFile(
195+
*,
196+
buffering: Literal[0],
197+
encoding: str | None = None,
198+
newline: str | None = None,
199+
suffix: AnyStr | None = None,
200+
prefix: AnyStr | None = None,
201+
dir: GenericPath[AnyStr] | None = None,
202+
errors: str | None = None,
203+
) -> io.FileIO: ...
204+
@overload
194205
def TemporaryFile(
195206
mode: OpenBinaryModeWriting,
196207
buffering: Literal[-1, 1] = -1,
@@ -260,6 +271,16 @@ else:
260271
dir: GenericPath[AnyStr] | None = None,
261272
) -> io.FileIO: ...
262273
@overload
274+
def TemporaryFile(
275+
*,
276+
buffering: Literal[0],
277+
encoding: str | None = None,
278+
newline: str | None = None,
279+
suffix: AnyStr | None = None,
280+
prefix: AnyStr | None = None,
281+
dir: GenericPath[AnyStr] | None = None,
282+
) -> io.FileIO: ...
283+
@overload
263284
def TemporaryFile(
264285
mode: OpenBinaryModeUpdating = "w+b",
265286
buffering: Literal[-1, 1] = -1,

test_cases/stdlib/check_tempfile.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from __future__ import annotations
2+
3+
import io
4+
import sys
5+
from tempfile import TemporaryFile, _TemporaryFileWrapper
6+
from typing_extensions import assert_type
7+
8+
if sys.platform == "win32":
9+
assert_type(TemporaryFile(), _TemporaryFileWrapper[bytes])
10+
assert_type(TemporaryFile("w+"), _TemporaryFileWrapper[str])
11+
assert_type(TemporaryFile("w+b"), _TemporaryFileWrapper[bytes])
12+
assert_type(TemporaryFile("wb"), _TemporaryFileWrapper[bytes])
13+
assert_type(TemporaryFile("rb"), _TemporaryFileWrapper[bytes])
14+
assert_type(TemporaryFile("wb", 0), _TemporaryFileWrapper[bytes])
15+
assert_type(TemporaryFile(mode="w+"), _TemporaryFileWrapper[str])
16+
assert_type(TemporaryFile(mode="w+b"), _TemporaryFileWrapper[bytes])
17+
assert_type(TemporaryFile(mode="wb"), _TemporaryFileWrapper[bytes])
18+
assert_type(TemporaryFile(mode="rb"), _TemporaryFileWrapper[bytes])
19+
assert_type(TemporaryFile(buffering=0), _TemporaryFileWrapper[bytes])
20+
else:
21+
assert_type(TemporaryFile(), io.BufferedRandom)
22+
assert_type(TemporaryFile("w+"), io.TextIOWrapper)
23+
assert_type(TemporaryFile("w+b"), io.BufferedRandom)
24+
assert_type(TemporaryFile("wb"), io.BufferedWriter)
25+
assert_type(TemporaryFile("rb"), io.BufferedReader)
26+
assert_type(TemporaryFile("wb", 0), io.FileIO)
27+
assert_type(TemporaryFile(mode="w+"), io.TextIOWrapper)
28+
assert_type(TemporaryFile(mode="w+b"), io.BufferedRandom)
29+
assert_type(TemporaryFile(mode="wb"), io.BufferedWriter)
30+
assert_type(TemporaryFile(mode="rb"), io.BufferedReader)
31+
assert_type(TemporaryFile(buffering=0), io.FileIO)

0 commit comments

Comments
 (0)