46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
|
#!/usr/bin/env python
|
||
|
#
|
||
|
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
|
||
|
# Author: Anirudh Vegesana (avegesan@cs.stanford.edu)
|
||
|
# Copyright (c) 2022-2023 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()
|