From bdd55810330701e13dd9a0a5f6bb34652fe601eb Mon Sep 17 00:00:00 2001
From: jvoisin <julien.voisin@dustri.org>
Date: Sat, 13 Jul 2019 14:57:12 +0200
Subject: [PATCH] Compress cleaned zip archives by default

---
 libmat2/archive.py | 15 +++++++--------
 1 file 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]:
-- 
GitLab