]> granicus.if.org Git - python/commitdiff
BZ2File now uses the compresslevel argument given by the caller,
authorNadeem Vawda <nadeem.vawda@gmail.com>
Sun, 11 Sep 2011 20:38:11 +0000 (22:38 +0200)
committerNadeem Vawda <nadeem.vawda@gmail.com>
Sun, 11 Sep 2011 20:38:11 +0000 (22:38 +0200)
instead of ignoring it and always using a compression level of 9.

Lib/bz2.py
Lib/test/test_bz2.py

index cc71ae025aec03d05f2ed27deff0694ade4490e7..cbf5233b0656a65739d6a0a45ee2f8c73af0fa2e 100644 (file)
@@ -75,11 +75,11 @@ class BZ2File(io.BufferedIOBase):
         elif mode in ("w", "wb"):
             mode = "wb"
             mode_code = _MODE_WRITE
-            self._compressor = BZ2Compressor()
+            self._compressor = BZ2Compressor(compresslevel)
         elif mode in ("a", "ab"):
             mode = "ab"
             mode_code = _MODE_WRITE
-            self._compressor = BZ2Compressor()
+            self._compressor = BZ2Compressor(compresslevel)
         else:
             raise ValueError("Invalid mode: {!r}".format(mode))
 
index 5a7d342afde77bfba3fa2d88d92010ec80508d8e..d0032387e972c6896724d9207db6e5a0d502ac09 100644 (file)
@@ -224,6 +224,13 @@ class BZ2FileTest(BaseTest):
         with open(self.filename, 'rb') as f:
             self.assertEqual(self.decompress(f.read()), self.TEXT)
 
+    def testWriteNonDefaultCompressLevel(self):
+        expected = bz2.compress(self.TEXT, compresslevel=5)
+        with BZ2File(self.filename, "w", compresslevel=5) as bz2f:
+            bz2f.write(self.TEXT)
+        with open(self.filename, "rb") as f:
+            self.assertEqual(f.read(), expected)
+
     def testWriteLines(self):
         with BZ2File(self.filename, "w") as bz2f:
             self.assertRaises(TypeError, bz2f.writelines)