blob: 10dc080487cdeda67b7de6cc3c76340c1d479c76 [file] [log] [blame]
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 2008-2016 California Institute of Technology.
# Copyright (c) 2016-2022 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()