In case someone still looking for pako equivalent methods in python 3(not tested in python 2).
pako.deflate() method equivalent in python:
def pako_deflate(data):
compress = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, 15,
memLevel=8, strategy=zlib.Z_DEFAULT_STRATEGY)
compressed_data = compress.compress(js_string_to_byte(js_encode_uri_component(data)))
compressed_data += compress.flush()
return compressed_data
pako.deflateRaw() equivalent in python:
def pako_deflate_raw(data):
compress = zlib.compressobj(
zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -15, memLevel=8,
strategy=zlib.Z_DEFAULT_STRATEGY)
compressed_data = compress.compress(js_string_to_byte(js_encode_uri_component(data)))
compressed_data += compress.flush()
return compressed_data
pako.inflate() method equivalent:
def pako_inflate(data):
decompress = zlib.decompressobj(15)
decompressed_data = decompress.decompress(data)
decompressed_data += decompress.flush()
return decompressed_data
pako.inflateRaw() method equivalent:
def pako_inflate_raw(data):
decompress = zlib.decompressobj(-15)
decompressed_data = decompress.decompress(data)
decompressed_data += decompress.flush()
return decompressed_data
Some utility functions used in above functions are:
from urllib.parse import quote, unquote
import base64
def js_encode_uri_component(data):
return quote(data, safe='~()*!.\'')
def js_decode_uri_component(data):
return unquote(data)
def js_string_to_byte(data):
return bytes(data, 'iso-8859-1')
def js_bytes_to_string(data):
return data.decode('iso-8859-1')
def js_btoa(data):
return base64.b64encode(data)
def js_atob(data):
return base64.b64decode(data)