#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 2008-2016 California Institute of Technology. # Copyright (c) 2016-2023 The Uncertainty Quantification Foundation. # License: 3-clause BSD. The full license text is available at: # - https://github.com/uqfoundation/dill/blob/master/LICENSE import dill as pickle from io import BytesIO as StringIO def my_fn(x): return x * 17 def test_extend(): obj = lambda : my_fn(34) assert obj() == 578 obj_io = StringIO() pickler = pickle.Pickler(obj_io) pickler.dump(obj) obj_str = obj_io.getvalue() obj2_io = StringIO(obj_str) unpickler = pickle.Unpickler(obj2_io) obj2 = unpickler.load() assert obj2() == 578 def test_isdill(): obj_io = StringIO() pickler = pickle.Pickler(obj_io) assert pickle._dill.is_dill(pickler) is True pickler = pickle._dill.StockPickler(obj_io) assert pickle._dill.is_dill(pickler) is False try: import multiprocess as mp pickler = mp.reduction.ForkingPickler(obj_io) assert pickle._dill.is_dill(pickler, child=True) is True assert pickle._dill.is_dill(pickler, child=False) is False except Exception: pass if __name__ == '__main__': test_extend() test_isdill()