3 from _typeshed import Self
4 from types import TracebackType
5 from typing import IO, Any, AnyStr, Generic, Iterable, Iterator, Tuple, Type, Union, overload
6 from typing_extensions import Literal
8 if sys.version_info >= (3, 9):
9 from types import GenericAlias
16 _DirT = Union[AnyStr, os.PathLike[AnyStr]]
18 if sys.version_info >= (3, 8):
20 def NamedTemporaryFile(
21 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
23 encoding: str | None = ...,
24 newline: str | None = ...,
25 suffix: AnyStr | None = ...,
26 prefix: AnyStr | None = ...,
27 dir: _DirT[AnyStr] | None = ...,
30 errors: str | None = ...,
31 ) -> _TemporaryFileWrapper[str]: ...
33 def NamedTemporaryFile(
34 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
36 encoding: str | None = ...,
37 newline: str | None = ...,
38 suffix: AnyStr | None = ...,
39 prefix: AnyStr | None = ...,
40 dir: _DirT[AnyStr] | None = ...,
43 errors: str | None = ...,
44 ) -> _TemporaryFileWrapper[bytes]: ...
46 def NamedTemporaryFile(
49 encoding: str | None = ...,
50 newline: str | None = ...,
51 suffix: AnyStr | None = ...,
52 prefix: AnyStr | None = ...,
53 dir: _DirT[AnyStr] | None = ...,
56 errors: str | None = ...,
57 ) -> _TemporaryFileWrapper[Any]: ...
61 def NamedTemporaryFile(
62 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
64 encoding: str | None = ...,
65 newline: str | None = ...,
66 suffix: AnyStr | None = ...,
67 prefix: AnyStr | None = ...,
68 dir: _DirT[AnyStr] | None = ...,
70 ) -> _TemporaryFileWrapper[str]: ...
72 def NamedTemporaryFile(
73 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
75 encoding: str | None = ...,
76 newline: str | None = ...,
77 suffix: AnyStr | None = ...,
78 prefix: AnyStr | None = ...,
79 dir: _DirT[AnyStr] | None = ...,
81 ) -> _TemporaryFileWrapper[bytes]: ...
83 def NamedTemporaryFile(
86 encoding: str | None = ...,
87 newline: str | None = ...,
88 suffix: AnyStr | None = ...,
89 prefix: AnyStr | None = ...,
90 dir: _DirT[AnyStr] | None = ...,
92 ) -> _TemporaryFileWrapper[Any]: ...
94 if sys.platform == "win32":
95 TemporaryFile = NamedTemporaryFile
97 if sys.version_info >= (3, 8):
100 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
101 buffering: int = ...,
102 encoding: str | None = ...,
103 newline: str | None = ...,
104 suffix: AnyStr | None = ...,
105 prefix: AnyStr | None = ...,
106 dir: _DirT[AnyStr] | None = ...,
108 errors: str | None = ...,
112 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
113 buffering: int = ...,
114 encoding: str | None = ...,
115 newline: str | None = ...,
116 suffix: AnyStr | None = ...,
117 prefix: AnyStr | None = ...,
118 dir: _DirT[AnyStr] | None = ...,
120 errors: str | None = ...,
125 buffering: int = ...,
126 encoding: str | None = ...,
127 newline: str | None = ...,
128 suffix: AnyStr | None = ...,
129 prefix: AnyStr | None = ...,
130 dir: _DirT[AnyStr] | None = ...,
132 errors: str | None = ...,
137 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
138 buffering: int = ...,
139 encoding: str | None = ...,
140 newline: str | None = ...,
141 suffix: AnyStr | None = ...,
142 prefix: AnyStr | None = ...,
143 dir: _DirT[AnyStr] | None = ...,
147 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
148 buffering: int = ...,
149 encoding: str | None = ...,
150 newline: str | None = ...,
151 suffix: AnyStr | None = ...,
152 prefix: AnyStr | None = ...,
153 dir: _DirT[AnyStr] | None = ...,
158 buffering: int = ...,
159 encoding: str | None = ...,
160 newline: str | None = ...,
161 suffix: AnyStr | None = ...,
162 prefix: AnyStr | None = ...,
163 dir: _DirT[AnyStr] | None = ...,
166 class _TemporaryFileWrapper(Generic[AnyStr], IO[AnyStr]):
167 file: IO[AnyStr] # io.TextIOWrapper, io.BufferedReader or io.BufferedWriter
170 def __init__(self, file: IO[AnyStr], name: str, delete: bool = ...) -> None: ...
171 def __enter__(self: Self) -> Self: ...
172 def __exit__(self, exc: Type[BaseException] | None, value: BaseException | None, tb: TracebackType | None) -> bool | None: ...
173 def __getattr__(self, name: str) -> Any: ...
174 def close(self) -> None: ...
175 # These methods don't exist directly on this object, but
176 # are delegated to the underlying IO object through __getattr__.
177 # We need to add them here so that this class is concrete.
178 def __iter__(self) -> Iterator[AnyStr]: ...
179 # FIXME: __next__ doesn't actually exist on this class and should be removed:
180 # see also https://github.com/python/typeshed/pull/5456#discussion_r633068648
181 # >>> import tempfile
182 # >>> ntf=tempfile.NamedTemporaryFile()
184 # Traceback (most recent call last):
185 # File "<stdin>", line 1, in <module>
186 # TypeError: '_TemporaryFileWrapper' object is not an iterator
187 def __next__(self) -> AnyStr: ...
188 def fileno(self) -> int: ...
189 def flush(self) -> None: ...
190 def isatty(self) -> bool: ...
191 def read(self, n: int = ...) -> AnyStr: ...
192 def readable(self) -> bool: ...
193 def readline(self, limit: int = ...) -> AnyStr: ...
194 def readlines(self, hint: int = ...) -> list[AnyStr]: ...
195 def seek(self, offset: int, whence: int = ...) -> int: ...
196 def seekable(self) -> bool: ...
197 def tell(self) -> int: ...
198 def truncate(self, size: int | None = ...) -> int: ...
199 def writable(self) -> bool: ...
200 def write(self, s: AnyStr) -> int: ...
201 def writelines(self, lines: Iterable[AnyStr]) -> None: ...
203 # It does not actually derive from IO[AnyStr], but it does implement the
205 class SpooledTemporaryFile(IO[AnyStr]):
207 def encoding(self) -> str: ... # undocumented
209 def newlines(self) -> str | Tuple[str, ...] | None: ... # undocumented
210 # bytes needs to go first, as default mode is to open as bytes
211 if sys.version_info >= (3, 8):
214 self: SpooledTemporaryFile[bytes],
216 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
217 buffering: int = ...,
218 encoding: str | None = ...,
219 newline: str | None = ...,
220 suffix: str | None = ...,
221 prefix: str | None = ...,
222 dir: str | None = ...,
224 errors: str | None = ...,
228 self: SpooledTemporaryFile[str],
230 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] = ...,
231 buffering: int = ...,
232 encoding: str | None = ...,
233 newline: str | None = ...,
234 suffix: str | None = ...,
235 prefix: str | None = ...,
236 dir: str | None = ...,
238 errors: str | None = ...,
245 buffering: int = ...,
246 encoding: str | None = ...,
247 newline: str | None = ...,
248 suffix: str | None = ...,
249 prefix: str | None = ...,
250 dir: str | None = ...,
252 errors: str | None = ...,
255 def errors(self) -> str | None: ...
259 self: SpooledTemporaryFile[bytes],
261 mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
262 buffering: int = ...,
263 encoding: str | None = ...,
264 newline: str | None = ...,
265 suffix: str | None = ...,
266 prefix: str | None = ...,
267 dir: str | None = ...,
271 self: SpooledTemporaryFile[str],
273 mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] = ...,
274 buffering: int = ...,
275 encoding: str | None = ...,
276 newline: str | None = ...,
277 suffix: str | None = ...,
278 prefix: str | None = ...,
279 dir: str | None = ...,
286 buffering: int = ...,
287 encoding: str | None = ...,
288 newline: str | None = ...,
289 suffix: str | None = ...,
290 prefix: str | None = ...,
291 dir: str | None = ...,
293 def rollover(self) -> None: ...
294 def __enter__(self: Self) -> Self: ...
296 self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
297 ) -> bool | None: ...
298 # These methods are copied from the abstract methods of IO, because
299 # SpooledTemporaryFile implements IO.
300 # See also https://github.com/python/typeshed/pull/2452#issuecomment-420657918.
301 def close(self) -> None: ...
302 def fileno(self) -> int: ...
303 def flush(self) -> None: ...
304 def isatty(self) -> bool: ...
305 def read(self, n: int = ...) -> AnyStr: ...
306 def readline(self, limit: int = ...) -> AnyStr: ...
307 def readlines(self, hint: int = ...) -> list[AnyStr]: ...
308 def seek(self, offset: int, whence: int = ...) -> int: ...
309 def tell(self) -> int: ...
310 def truncate(self, size: int | None = ...) -> int: ...
311 def write(self, s: AnyStr) -> int: ...
312 def writelines(self, iterable: Iterable[AnyStr]) -> None: ...
313 def __iter__(self) -> Iterator[AnyStr]: ...
314 # Other than the following methods, which do not exist on SpooledTemporaryFile
315 def readable(self) -> bool: ...
316 def seekable(self) -> bool: ...
317 def writable(self) -> bool: ...
318 def __next__(self) -> AnyStr: ...
319 if sys.version_info >= (3, 9):
320 def __class_getitem__(cls, item: Any) -> GenericAlias: ...
322 class TemporaryDirectory(Generic[AnyStr]):
324 if sys.version_info >= (3, 10):
327 self: TemporaryDirectory[str],
331 ignore_cleanup_errors: bool = ...,
336 suffix: AnyStr | None = ...,
337 prefix: AnyStr | None = ...,
338 dir: _DirT[AnyStr] | None = ...,
339 ignore_cleanup_errors: bool = ...,
343 def __init__(self: TemporaryDirectory[str], suffix: None = ..., prefix: None = ..., dir: None = ...) -> None: ...
345 def __init__(self, suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _DirT[AnyStr] | None = ...) -> None: ...
346 def cleanup(self) -> None: ...
347 def __enter__(self) -> AnyStr: ...
349 self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
351 if sys.version_info >= (3, 9):
352 def __class_getitem__(cls, item: Any) -> GenericAlias: ...
355 def mkstemp() -> tuple[int, str]: ...
358 suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _DirT[AnyStr] | None = ..., text: bool = ...
359 ) -> tuple[int, AnyStr]: ...
361 def mkdtemp() -> str: ...
363 def mkdtemp(suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _DirT[AnyStr] | None = ...) -> AnyStr: ...
365 def mktemp() -> str: ...
367 def mktemp(suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _DirT[AnyStr] | None = ...) -> AnyStr: ...
368 def gettempdirb() -> bytes: ...
369 def gettempprefixb() -> bytes: ...
370 def gettempdir() -> str: ...
371 def gettempprefix() -> str: ...