123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/usr/bin/env python
- #
- # Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
- # Copyright (c) 2008-2016 California Institute of Technology.
- # Copyright (c) 2016-2024 The Uncertainty Quantification Foundation.
- # License: 3-clause BSD. The full license text is available at:
- # - https://github.com/uqfoundation/dill/blob/master/LICENSE
- import sys
- import dill
- import test_mixins as module
- from importlib import reload
- dill.settings['recurse'] = True
- cached = (module.__cached__ if hasattr(module, "__cached__")
- else module.__file__.split(".", 1)[0] + ".pyc")
- module.a = 1234
- pik_mod = dill.dumps(module)
- module.a = 0
- # remove module
- del sys.modules[module.__name__]
- del module
- module = dill.loads(pik_mod)
- def test_attributes():
- #assert hasattr(module, "a") and module.a == 1234 #FIXME: -m dill.tests
- assert module.double_add(1, 2, 3) == 2 * module.fx
- # Restart, and test use_diff
- reload(module)
- try:
- dill.use_diff()
- module.a = 1234
- pik_mod = dill.dumps(module)
- module.a = 0
- # remove module
- del sys.modules[module.__name__]
- del module
- module = dill.loads(pik_mod)
- def test_diff_attributes():
- assert hasattr(module, "a") and module.a == 1234
- assert module.double_add(1, 2, 3) == 2 * module.fx
- except AttributeError:
- def test_diff_attributes():
- pass
- # clean up
- import os
- if os.path.exists(cached):
- os.remove(cached)
- pycache = os.path.join(os.path.dirname(module.__file__), "__pycache__")
- if os.path.exists(pycache) and not os.listdir(pycache):
- os.removedirs(pycache)
- # test when module is None
- import math
- def get_lambda(str, **kwarg):
- return eval(str, kwarg, None)
- obj = get_lambda('lambda x: math.exp(x)', math=math)
- def test_module_is_none():
- assert obj.__module__ is None
- assert dill.copy(obj)(3) == obj(3)
- if __name__ == '__main__':
- test_attributes()
- test_diff_attributes()
- test_module_is_none()
|