Source code for Hellas.Olympia

"""This module contains some pickle and compress code snippets named after the city of
`Olympia <https://en.wikipedia.org/wiki/Olympia,_Greece>`_ where first Olympic games were held
"""

import zlib
import pickle


[docs]def pickle_compress(obj, print_compression_info=False): """pickle and compress an object""" p = pickle.dumps(obj) c = zlib.compress(p) if print_compression_info: print ("len = {:,d} compr={:,d} ratio:{:.6f}".format(len(p), len(c), float(len(c))/len(p))) return c
[docs]def pickle_decompress(obj): """ decompress a pickle_compress object""" return pickle.loads(zlib.decompress(obj))
[docs]def pickle_compress_test(obj, print_compression_ratio=True): """verifies id an object is pickable and can be compressed""" cm = pickle_compress(obj, print_compression_ratio) dc = pickle_decompress(cm) return True if dc == obj else False
[docs]def pickle_compress_str(obj, print_compression_info=False): """ str gets better compression ration """ return pickle_compress(str(obj), print_compression_info)
[docs]def pickle_decompress_str(obj): """ decompress pickle_compressed as str .. Warning:: it uses 'eval' use it carefully """ return eval(pickle_decompress_str(obj))