diff -r eb67c42be41d Lib/tarfile.py --- a/Lib/tarfile.py Fri Jun 28 11:14:13 2013 +0200 +++ b/Lib/tarfile.py Sun Jul 28 10:37:22 2013 +0200 @@ -1497,7 +1497,8 @@ else: if name is None and hasattr(fileobj, "name"): name = fileobj.name - if hasattr(fileobj, "mode"): + # when fileobj is a gzip.GzipFile, fileobj.mode is an int (not valid for us) + if hasattr(fileobj, "mode") and isinstance(fileobj.mode, str): self._mode = fileobj.mode self._extfileobj = True self.name = os.path.abspath(name) if name else None