[bmap-tools] [PATCH 1/9] TransRead: store compression type name
Artem Bityutskiy
dedekind1 at gmail.com
Tue Jan 28 08:45:53 EST 2014
From: Artem Bityutskiy <artem.bityutskiy at intel.com>
Introduce an 'compression_type' attribute and store the compression format
there. This will be needed in the next patches, where we will add 'pbzip2'
support. Also, remove the 'is_compressed' attribute sinc this is the same as
'compression_type == "none"'.
Change-Id: I02dfd8efb14e5868d9b413c08b14ca8f513773f8
Signed-off-by: Artem Bityutskiy <artem.bityutskiy at intel.com>
---
bmaptools/TransRead.py | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/bmaptools/TransRead.py b/bmaptools/TransRead.py
index c0782ef..519394e 100644
--- a/bmaptools/TransRead.py
+++ b/bmaptools/TransRead.py
@@ -238,8 +238,8 @@ class TransRead(object):
# Size of the file (in uncompressed form), may be 'None' if the size is
# unknown
self.size = None
- # Whether the file is compressed
- self.is_compressed = True
+ # Type of the compression of the file
+ self.compression_type = 'none'
# Whether the file is behind an URL
self.is_url = False
@@ -291,6 +291,11 @@ class TransRead(object):
or self.name.endswith('.tgz'):
import tarfile
+ if self.name.endswith('.tar.bz2'):
+ self.compression_type = 'bzip2'
+ else:
+ self.compression_type = 'gzip'
+
f_obj = tarfile.open(fileobj=self._f_objs[-1], mode='r|*')
self._f_objs.append(f_obj)
@@ -298,10 +303,10 @@ class TransRead(object):
self.size = member.size
f_obj = self._f_objs[-1].extractfile(member)
self._f_objs.append(f_obj)
- elif self.name.endswith('.gz') \
- or self.name.endswith('.gzip'):
+ elif self.name.endswith('.gz') or self.name.endswith('.gzip'):
import zlib
+ self.compression_type = 'gzip'
decompressor = zlib.decompressobj(16 + zlib.MAX_WBITS)
f_obj = _CompressedFile(self._f_objs[-1],
decompressor.decompress)
@@ -309,7 +314,7 @@ class TransRead(object):
elif self.name.endswith('.bz2'):
import bz2
-
+ self.compression_type = 'bzip2'
f_obj = _CompressedFile(self._f_objs[-1],
bz2.BZ2Decompressor().decompress, 128)
self._f_objs.append(f_obj)
@@ -323,6 +328,7 @@ class TransRead(object):
raise Error("cannot import the \"lzma\" python module, "
"it's required for decompressing .xz files")
+ self.compression_type = 'xz'
f_obj = _CompressedFile(self._f_objs[-1],
lzma.LZMADecompressor().decompress, 128)
self._f_objs.append(f_obj)
@@ -338,7 +344,6 @@ class TransRead(object):
f_obj = self._f_objs[-1].extractfile(member)
self._f_objs.append(f_obj)
else:
- self.is_compressed = False
if not self.is_url:
self.size = os.fstat(self._f_objs[-1].fileno()).st_size
except IOError as err:
@@ -550,7 +555,7 @@ class TransRead(object):
its operations.
"""
- if not self.is_compressed and not self.is_url:
+ if self.compression_type == 'none' and not self.is_url:
return getattr(self._f_objs[-1], name)
else:
raise AttributeError
--
1.8.3.1
More information about the Bmap-tools
mailing list