def test_uncompress_exact_len_err(self): data = six.binary_type(bytearray(range(100))) zipped = zlib.compress(data) total = len(zipped) reader = ExactSizeReader(ZipCompressedReader(six.BytesIO(zipped))) with self.assertRaises(EOFError): reader.read(size=total + 1)
def test_multi_write_compress(self): byte_list = [random.randint(0, 255) for i in range(10000)] data = six.binary_type(bytearray(byte_list)) stream = six.BytesIO() with ZipCompressedWriter(stream) as z_writer: for i in byte_list: z_writer.write(_bytes(i)) zipped = zlib.compress(data) self.assertSequenceEqual(stream.getvalue(), zipped)
def test_uncompress_exact_len(self): byte_list = [random.randint(0, 255) for i in range(10000)] data = six.binary_type(bytearray(byte_list)) zipped = zlib.compress(data) total = len(zipped) num_of_chunk = 20 chunk_size = total // num_of_chunk in_buffer = six.BytesIO(zipped) reader = ExactSizeReader(ZipCompressedReader(in_buffer)) buff = six.BytesIO() for i in range(num_of_chunk): buff.write(reader.read(chunk_size)) self.assertEqual(buff.getvalue(), data[:(i + 1) * chunk_size]) buff.write(reader.read()) self.assertEqual(buff.getvalue(), data)
def generate_bytes(self, data): yield WXF_VERSION if self.compress: yield WXF_HEADER_COMPRESS yield WXF_HEADER_SEPARATOR if self.compress: compressor = zlib.compressobj() if six.PY2: for payload in self.encode(data): yield compressor.compress(six.binary_type(payload)) else: for payload in self.encode(data): yield compressor.compress(payload) yield compressor.flush() else: for payload in self.encode(data): yield payload
def encode_default(s, encoding="utf-8", errors="strict"): return six.binary_type(s)