示例#1
0
 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)
示例#2
0
 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)
示例#3
0
    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)
示例#4
0
    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)