Description =========== With a file object, retrieved by the `extractfile` method of a TarFile object opened in stream mode, calling its `seekable` method will raise an AttributeError. How to Reproduce ================ cat > seekable.py << EOF import sys import tarfile tar = tarfile.open(fileobj=sys.stdin.buffer, mode='r|') contentFile = tar.extractfile(tar.next()) print(contentFile.seekable()) EOF tar -cf test.tar seekable.py python seekable.py < test.tar Traceback ========= Traceback (most recent call last): File "seekable.py", line 5, in print(contentFile.seekable()) File "/usr/local/lib/python3.5/tarfile.py", line 649, in seekable return self.fileobj.seekable() How to Fix ========== I think that adding a method seekable(), which always return False, to tarfile._Stream will works.
I posted an incomplete traceback by mistake. Here is the whole traceback. Traceback ========= Traceback (most recent call last): File "seekable.py", line 5, in print(contentFile.seekable()) File "/usr/local/lib/python3.5/tarfile.py", line 649, in seekable return self.fileobj.seekable() AttributeError: '_Stream' object has no attribute 'seekable'