(original) (raw)
changeset: 76918:ab6496b98ac4 user: Lars Gustäbel lars@gustaebel.de date: Mon May 14 13🔞16 2012 +0200 files: Lib/tarfile.py Misc/NEWS description: Issue #13815: Resurrect the ExFileObject class. After a discussion in the tracker, the decision was made to keep the ExFileObject class after all as a subclass of io.BufferedReader instead of removing it completely. diff -r 8a8120ee1202 -r ab6496b98ac4 Lib/tarfile.py --- a/Lib/tarfile.py Mon May 14 13:32:26 2012 +0300 +++ b/Lib/tarfile.py Mon May 14 13🔞16 2012 +0200 @@ -758,6 +758,13 @@ self.closed = True #class _FileInFile +class ExFileObject(io.BufferedReader): + + def __init__(self, tarfile, tarinfo): + fileobj = _FileInFile(tarfile.fileobj, tarinfo.offset_data, + tarinfo.size, tarinfo.sparse) + super().__init__(fileobj) +#class ExFileObject #------------------ # Exported Classes @@ -1443,8 +1450,7 @@ tarinfo = TarInfo # The default TarInfo class to use. - fileobject = None # The file-object for extractfile() or - # io.BufferedReader if None. + fileobject = ExFileObject # The file-object for extractfile(). def __init__(self, name=None, mode="r", fileobj=None, format=None, tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, @@ -2081,12 +2087,7 @@ if tarinfo.isreg() or tarinfo.type not in SUPPORTED_TYPES: # Members with unknown types are treated as regular files. - if self.fileobject is None: - fileobj = _FileInFile(self.fileobj, tarinfo.offset_data, tarinfo.size, tarinfo.sparse) - return io.BufferedReader(fileobj) - else: - # Keep the traditional pre-3.3 API intact. - return self.fileobject(self, tarinfo) + return self.fileobject(self, tarinfo) elif tarinfo.islnk() or tarinfo.issym(): if isinstance(self.fileobj, _Stream): diff -r 8a8120ee1202 -r ab6496b98ac4 Misc/NEWS --- a/Misc/NEWS Mon May 14 13:32:26 2012 +0300 +++ b/Misc/NEWS Mon May 14 13🔞16 2012 +0200 @@ -26,6 +26,8 @@ Library ------- +- Issue #13815: TarFile.extractfile() now returns io.BufferedReader objects. + - Issue #14532: Add a secure_compare() helper to the hmac module, to mitigate timing attacks. Patch by Jon Oberheide. @@ -181,8 +183,6 @@ Library ------- -- Issue #13815: TarFile.extractfile() now returns io.BufferedReader objects. - - Issue #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/'. - Issue #14371: Support bzip2 in zipfile module. Patch by Serhiy Storchaka. /lars@gustaebel.de