diff options
Diffstat (limited to 'Lib/tempfile.py')
-rw-r--r-- | Lib/tempfile.py | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 531cbf3..eb870c9 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -639,7 +639,7 @@ else: _os.close(fd) raise -class SpooledTemporaryFile: +class SpooledTemporaryFile(_io.IOBase): """Temporary file wrapper, specialized to switch from BytesIO or StringIO to a real file when it exceeds a certain size or when a fileno is needed. @@ -704,6 +704,16 @@ class SpooledTemporaryFile: def __iter__(self): return self._file.__iter__() + def __del__(self): + if not self.closed: + _warnings.warn( + "Unclosed file {!r}".format(self), + ResourceWarning, + stacklevel=2, + source=self + ) + self.close() + def close(self): self._file.close() @@ -747,15 +757,30 @@ class SpooledTemporaryFile: def newlines(self): return self._file.newlines + def readable(self): + return self._file.readable() + def read(self, *args): return self._file.read(*args) + def read1(self, *args): + return self._file.read1(*args) + + def readinto(self, b): + return self._file.readinto(b) + + def readinto1(self, b): + return self._file.readinto1(b) + def readline(self, *args): return self._file.readline(*args) def readlines(self, *args): return self._file.readlines(*args) + def seekable(self): + return self._file.seekable() + def seek(self, *args): return self._file.seek(*args) @@ -764,11 +789,14 @@ class SpooledTemporaryFile: def truncate(self, size=None): if size is None: - self._file.truncate() + return self._file.truncate() else: if size > self._max_size: self.rollover() - self._file.truncate(size) + return self._file.truncate(size) + + def writable(self): + return self._file.writable() def write(self, s): file = self._file @@ -782,6 +810,9 @@ class SpooledTemporaryFile: self._check(file) return rv + def detach(self): + return self._file.detach() + class TemporaryDirectory: """Create and return a temporary directory. This has the same |