123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python
- #
- # Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
- # Author: Anirudh Vegesana (avegesan@cs.stanford.edu)
- # Copyright (c) 2022-2024 The Uncertainty Quantification Foundation.
- # License: 3-clause BSD. The full license text is available at:
- # - https://github.com/uqfoundation/dill/blob/master/LICENSE
- """
- test pickling a PyCapsule object
- """
- import dill
- import warnings
- test_pycapsule = None
- if dill._dill._testcapsule is not None:
- import ctypes
- def test_pycapsule():
- name = ctypes.create_string_buffer(b'dill._testcapsule')
- capsule = dill._dill._PyCapsule_New(
- ctypes.cast(dill._dill._PyCapsule_New, ctypes.c_void_p),
- name,
- None
- )
- with warnings.catch_warnings():
- warnings.simplefilter("ignore")
- dill.copy(capsule)
- dill._testcapsule = capsule
- with warnings.catch_warnings():
- warnings.simplefilter("ignore")
- dill.copy(capsule)
- dill._testcapsule = None
- try:
- with warnings.catch_warnings():
- warnings.simplefilter("ignore", dill.PicklingWarning)
- dill.copy(capsule)
- except dill.UnpicklingError:
- pass
- else:
- raise AssertionError("Expected a different error")
- if __name__ == '__main__':
- if test_pycapsule is not None:
- test_pycapsule()
|