aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjvoisin <julien.voisin@dustri.org>2019-07-13 14:57:12 +0200
committerjvoisin <julien.voisin@dustri.org>2019-07-13 15:04:43 +0200
commitbdd55810330701e13dd9a0a5f6bb34652fe601eb (patch)
tree3be27346e0e4a510b9797391bfea74ba648f4ca6
parent47f9cb33bf3f86382dda29aedebe5bca271af306 (diff)
downloadexternal_mat2-bdd55810330701e13dd9a0a5f6bb34652fe601eb.tar.gz
external_mat2-bdd55810330701e13dd9a0a5f6bb34652fe601eb.tar.bz2
external_mat2-bdd55810330701e13dd9a0a5f6bb34652fe601eb.zip
Compress cleaned zip archives by default
-rw-r--r--libmat2/archive.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/libmat2/archive.py b/libmat2/archive.py
index e6c11c1..15f9d49 100644
--- a/libmat2/archive.py
+++ b/libmat2/archive.py
@@ -99,9 +99,8 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
def _get_member_name(member: ArchiveMember) -> str:
"""Return the name of the given member."""
- @staticmethod
- @abc.abstractstaticmethod
- def _add_file_to_archive(archive: ArchiveClass, member: ArchiveMember,
+ @abc.abstractmethod
+ def _add_file_to_archive(self, archive: ArchiveClass, member: ArchiveMember,
full_path: str):
"""Add the file at full_path to the archive, via the given member."""
@@ -313,8 +312,7 @@ class TarParser(ArchiveBasedAbstractParser):
metadata['gname'] = member.gname
return metadata
- @staticmethod
- def _add_file_to_archive(archive: ArchiveClass, member: ArchiveMember,
+ def _add_file_to_archive(self, archive: ArchiveClass, member: ArchiveMember,
full_path: str):
assert isinstance(member, tarfile.TarInfo) # please mypy
assert isinstance(archive, tarfile.TarFile) # please mypy
@@ -358,6 +356,7 @@ class ZipParser(ArchiveBasedAbstractParser):
super().__init__(filename)
self.archive_class = zipfile.ZipFile
self.member_class = zipfile.ZipInfo
+ self.zip_compression_type = zipfile.ZIP_DEFLATED
def is_archive_valid(self):
try:
@@ -392,13 +391,13 @@ class ZipParser(ArchiveBasedAbstractParser):
return metadata
- @staticmethod
- def _add_file_to_archive(archive: ArchiveClass, member: ArchiveMember,
+ def _add_file_to_archive(self, archive: ArchiveClass, member: ArchiveMember,
full_path: str):
assert isinstance(archive, zipfile.ZipFile) # please mypy
assert isinstance(member, zipfile.ZipInfo) # please mypy
with open(full_path, 'rb') as f:
- archive.writestr(member, f.read())
+ archive.writestr(member, f.read(),
+ compress_type=self.zip_compression_type)
@staticmethod
def _get_all_members(archive: ArchiveClass) -> List[ArchiveMember]: