Source code for AFL.automation.shared.serialization

import base64
import pickle
from pickle import UnpicklingError
import copy


[docs] def serialize(obj): pickled = pickle.dumps(obj) pickled_b64 = base64.b64encode(pickled) pickled_str = pickled_b64.decode('utf8') return pickled_str
[docs] def is_serialized(obj): try: deserialize(obj) except: return False return True
[docs] def deserialize(pickled_str): pickled_b64 = copy.deepcopy(pickled_str).encode() # the b'==' ensures the string is always correctly padeded # see https://stackoverflow.com/a/49459036 pickled = base64.b64decode(pickled_b64 + b'==') obj = pickle.loads(pickled) return obj