1
1
import io
2
2
import sys
3
- from _typeshed import BytesPath , GenericPath , ReadableBuffer , StrPath , WriteableBuffer
3
+ from _typeshed import (
4
+ BytesPath ,
5
+ GenericPath ,
6
+ OpenBinaryMode ,
7
+ OpenBinaryModeReading ,
8
+ OpenBinaryModeUpdating ,
9
+ OpenBinaryModeWriting ,
10
+ OpenTextMode ,
11
+ ReadableBuffer ,
12
+ StrPath ,
13
+ WriteableBuffer ,
14
+ )
4
15
from collections .abc import Iterable , Iterator
5
16
from types import TracebackType
6
17
from typing import IO , Any , AnyStr , Generic , overload
7
- from typing_extensions import Literal , Self , TypeAlias
18
+ from typing_extensions import Literal , Self
8
19
9
20
if sys .version_info >= (3 , 9 ):
10
21
from types import GenericAlias
@@ -30,13 +41,10 @@ TMP_MAX: int
30
41
tempdir : str | None
31
42
template : str
32
43
33
- _StrMode : TypeAlias = Literal ["r" , "w" , "a" , "x" , "r+" , "w+" , "a+" , "x+" , "rt" , "wt" , "at" , "xt" , "r+t" , "w+t" , "a+t" , "x+t" ]
34
- _BytesMode : TypeAlias = Literal ["rb" , "wb" , "ab" , "xb" , "r+b" , "w+b" , "a+b" , "x+b" ]
35
-
36
44
if sys .version_info >= (3 , 12 ):
37
45
@overload
38
46
def NamedTemporaryFile (
39
- mode : _StrMode ,
47
+ mode : OpenTextMode ,
40
48
buffering : int = - 1 ,
41
49
encoding : str | None = None ,
42
50
newline : str | None = None ,
@@ -50,7 +58,7 @@ if sys.version_info >= (3, 12):
50
58
) -> _TemporaryFileWrapper [str ]: ...
51
59
@overload
52
60
def NamedTemporaryFile (
53
- mode : _BytesMode = "w+b" ,
61
+ mode : OpenBinaryMode = "w+b" ,
54
62
buffering : int = - 1 ,
55
63
encoding : str | None = None ,
56
64
newline : str | None = None ,
@@ -80,7 +88,7 @@ if sys.version_info >= (3, 12):
80
88
elif sys .version_info >= (3 , 8 ):
81
89
@overload
82
90
def NamedTemporaryFile (
83
- mode : _StrMode ,
91
+ mode : OpenTextMode ,
84
92
buffering : int = - 1 ,
85
93
encoding : str | None = None ,
86
94
newline : str | None = None ,
@@ -93
6D40
,7 +101,7 @@ elif sys.version_info >= (3, 8):
93
101
) -> _TemporaryFileWrapper [str ]: ...
94
102
@overload
95
103
def NamedTemporaryFile (
96
- mode : _BytesMode = "w+b" ,
104
+ mode : OpenBinaryMode = "w+b" ,
97
105
buffering : int = - 1 ,
98
106
encoding : str | None = None ,
99
107
newline : str | None = None ,
@@ -121,7 +129,7 @@ elif sys.version_info >= (3, 8):
121
129
else :
122
130
@overload
123
131
def NamedTemporaryFile (
124
- mode : _StrMode ,
132
+ mode : OpenTextMode ,
125
133
buffering : int = - 1 ,
126
134
encoding : str | None = None ,
127
135
newline : str | None = None ,
@@ -132,7 +140,7 @@ else:
132
140
) -> _TemporaryFileWrapper [str ]: ...
133
141
@overload
134
142
def NamedTemporaryFile (
135
- mode : _BytesMode = "w+b" ,
143
+ mode : OpenBinaryMode = "w+b" ,
136
144
buffering : int = - 1 ,
137
145
encoding : str | None = None ,
138
146
newline : str | None = None ,
@@ -156,10 +164,11 @@ else:
156
164
if sys .platform == "win32" :
157
165
TemporaryFile = NamedTemporaryFile
158
166
else :
167
+ # See the comments for builtins.open() for an explanation of the overloads.
159
168
if sys .version_info >= (3 , 8 ):
160
169
@overload
161
170
def TemporaryFile (
162
- mode : _StrMode ,
171
+ mode : OpenTextMode ,
163
172
buffering : int = - 1 ,
164
173
encoding : str | None = None ,
165
174
newline : str | None = None ,
@@ -168,19 +177,55 @@ else:
168
177
dir : GenericPath [AnyStr ] | None = None ,
169
178
* ,
170
179
errors : str | None = None ,
171
- ) -> IO [ str ] : ...
180
+ ) -> io . TextIOWrapper : ...
172
181
@overload
173
182
def TemporaryFile (
174
- mode : _BytesMode = "w+b" ,
175
- buffering : int = - 1 ,
183
+ mode : OpenBinaryMode ,
184
+ buffering : Literal [0 ],
185
+ encoding : str | None = None ,
186
+ newline : str | None = None ,
187
+ suffix : AnyStr | None = None ,
188
+ prefix : AnyStr | None = None ,
189
+ dir : GenericPath [AnyStr ] | None = None ,
190
+ * ,
191
+ errors : str | None = None ,
192
+ ) -> io .FileIO : ...
193
+ @overload
194
+ def TemporaryFile (
195
+ mode : OpenBinaryModeWriting ,
196
+ buffering : Literal [- 1 , 1 ] = - 1 ,
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
+ * ,
203
+ errors : str | None = None ,
204
+ ) -> io .BufferedWriter : ...
205
+ @overload
206
+ def TemporaryFile (
207
+ mode : OpenBinaryModeReading ,
208
+ buffering : Literal [- 1 , 1 ] = - 1 ,
176
209
encoding : str | None = None ,
177
210
newline : str | None = None ,
178
211
suffix : AnyStr | None = None ,
179
212
prefix : AnyStr | None = None ,
180
213
dir : GenericPath [AnyStr ] | None = None ,
181
214
* ,
182
215
errors : str | None = None ,
183
- ) -> IO [bytes ]: ...
216
+ ) -> io .BufferedReader : ...
217
+ @overload
218
+ def TemporaryFile (
219
+ mode : OpenBinaryModeUpdating = "w+b" ,
220
+ buffering : Literal [- 1 , 1 ] = - 1 ,
221
+ encoding : str | None = None ,
222
+ newline : str | None = None ,
223
+ suffix : AnyStr | None = None ,
224
+ prefix : AnyStr | None = None ,
225
+ dir : GenericPath [AnyStr ] | None = None ,
226
+ * ,
227
+ errors : str | None = None ,
228
+ ) -> io .BufferedRandom : ...
184
229
@overload
185
230
def TemporaryFile (
186
231
mode : str = "w+b" ,
@@ -196,33 +241,63 @@ else:
196
241
else :
197
242
@overload
198
243
def TemporaryFile (
199
- mode : _StrMode ,
200
- buffering : int = ...,
201
- encoding : str | None = ...,
202
- newline : str | None = ...,
203
- suffix : AnyStr | None = ...,
204
- prefix : AnyStr | None = ...,
205
- dir : GenericPath [AnyStr ] | None = ...,
206
- ) -> IO [str ]: ...
244
+ mode : OpenTextMode ,
245
+ buffering : int = - 1 ,
246
+ encoding : str | None = None ,
247
+ newline : str | None = None ,
248
+ suffix : AnyStr | None = None ,
249
+ prefix : AnyStr | None = None ,
250
+ dir : GenericPath [AnyStr ] | None = None ,
251
+ ) -> io .TextIOWrapper : ...
252
+ @overload
253
+ def TemporaryFile (
254
+ mode : OpenBinaryMode ,
255
+ buffering : Literal [0 ],
256
+ encoding : str | None = None ,
257
+ newline : str | None = None ,
258
+ suffix : AnyStr | None = None ,
259
+ prefix : AnyStr | None = None ,
260
+ dir : GenericPath [AnyStr ] | None = None ,
261
+ ) -> io .FileIO : ...
262
+ @overload
263
+ def TemporaryFile (
264
+ mode : OpenBinaryModeUpdating = "w+b" ,
265
+ buffering : Literal [- 1 , 1 ] = - 1 ,
266
+ encoding : str | None = None ,
267
+ newline : str | None = None ,
268
+ suffix : AnyStr | None = None ,
269
+ prefix : AnyStr | None = None ,
270
+ dir : GenericPath [AnyStr ] | None = None ,
271
+ ) -> io .BufferedRandom : ...
272
+ @overload
273
+ def TemporaryFile (
274
+ mode : OpenBinaryModeWriting ,
275
+ buffering : Literal [- 1 , 1 ] = - 1 ,
276
+ encoding : str | None = None ,
277
+ newline : str | None = None ,
278
+ suffix : AnyStr | None = None ,
279
+ prefix : AnyStr | None = None ,
280
+ dir : GenericPath [AnyStr ] | None = None ,
281
+ ) -> io .BufferedWriter : ...
207
282
@overload
208
283
def TemporaryFile (
209
- mode : _BytesMode = ... ,
210
- buffering : int = ... ,
211
- encoding : str | None = ... ,
212
- newline : str | None = ... ,
213
- suffix : AnyStr | None = ... ,
214
- prefix : AnyStr | None = ... ,
215
- dir : GenericPath [AnyStr ] | None = ... ,
216
- ) -> IO [ bytes ] : ...
284
+ mode : OpenBinaryModeReading ,
285
+ buffering : Literal [ - 1 , 1 ] = - 1 ,
286
+ encoding : str | None = None ,
287
+ newline : str | None = None ,
288
+ suffix : AnyStr | None = None ,
289
+ prefix : AnyStr | None = None ,
290
+ dir : GenericPath [AnyStr ] | None = None ,
291
+ ) -> io . BufferedReader : ...
217
292
@overload
218
293
def TemporaryFile (
219
- mode : str = ... ,
220
- buffering : int = ... ,
221
- encoding : str | None = ... ,
222
- newline : str | None = ... ,
223
- suffix : AnyStr | None = ... ,
224
- prefix : AnyStr | None = ... ,
225
- dir : GenericPath [AnyStr ] | None = ... ,
294
+ mode : str = "w+b" ,
295
+ buffering : int = - 1 ,
296
+ encoding : str | None = None ,
297
+ newline : str | None = None ,
298
+ suffix : AnyStr | None = None ,
299
+ prefix : AnyStr | None = None ,
300
+ dir : GenericPath [AnyStr ] | None = None ,
226
301
) -> IO [Any ]: ...
227
302
228
303
class _TemporaryFileWrapper (Generic [AnyStr ], IO [AnyStr ]):
@@ -294,7 +369,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
294
369
def __init__ (
295
370
self : SpooledTemporaryFile [bytes ],
296
371
max_size : int = 0 ,
297
- mode : _BytesMode = "w+b" ,
372
+ mode : OpenBinaryMode = "w+b" ,
298
373
buffering : int = - 1 ,
299
374
encoding : str | None = None ,
300
375
newline : str | None = None ,
@@ -308,7 +383,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
308
383
def __init__ (
309
384
self : SpooledTemporaryFile [str ],
310
385
max_size : int ,
311
- mode : _StrMode ,
386
+ mode : OpenTextMode ,
312
387
buffering : int = - 1 ,
313
388
encoding : str | None = None ,
314
389
newline : str | None = None ,
@@ -323,7 +398,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
323
398
self : SpooledTemporaryFile [str ],
324
399
max_size : int = 0 ,
325
400
* ,
326
- mode : _StrMode ,
401
+ mode : OpenTextMode ,
327
402
buffering : int = - 1 ,
328
403
encoding : str | None = None ,
329
404
newline : str | None = None ,
@@ -367,7 +442,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
367
442
def __init__ (
368
443
self : SpooledTemporaryFile [bytes ],
369
444
max_size : int = 0 ,
370
- mode : _BytesMode = "w+b" ,
445
+ mode : OpenBinaryMode = "w+b" ,
371
446
buffering : int = - 1 ,
372
447
encoding : str | None = None ,
373
448
newline : str | None = None ,
@@ -379,7 +454,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
379
454
def __init__ (
380
455
self : SpooledTemporaryFile [str ],
381
456
max_size : int ,
382
- mode : _StrMode ,
457
+ mode : OpenTextMode ,
383
458
buffering : int = - 1 ,
384
459
encoding : str | None = None ,
385
460
newline : str | None = None ,
@@ -392,7 +467,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
392
467
self : SpooledTemporaryFile [str ],
393
468
max_size : int = 0 ,
394
469
* ,
395
- mode : _StrMode ,
470
+ mode : OpenTextMode ,
396
471
buffering : int = - 1 ,
397
472
encoding : str | None = None ,
398
473
newline : str | None = None ,
0 commit comments