3 from pybind11_tests
import type_caster_pyobject_ptr
as m
13 assert m.cast_from_pyobject_ptr() == 6758
17 assert m.cast_handle_to_pyobject_ptr(
ValueHolder(24)) == 76
21 assert m.cast_object_to_pyobject_ptr(
ValueHolder(43)) == 257
25 assert m.cast_list_to_pyobject_ptr([1, 2, 3, 4, 5]) == 395
29 assert m.return_pyobject_ptr() == 2314
36 @pytest.mark.parametrize(
39 m.call_callback_with_object_return,
40 m.call_callback_with_pyobject_ptr_return,
46 raise ValueError(
"Raised from cb")
49 assert call_callback(cb, 287).value == 713
51 with pytest.raises(ValueError, match=
"^Raised from cb$"):
57 return 300 - obj.value
59 assert m.call_callback_with_pyobject_ptr_arg(cb,
ValueHolder(39)) == 261
62 @pytest.mark.parametrize(
"set_error", [
True,
False])
65 True:
r"^Reflective of healthy error handling\.$",
67 r"^Internal error: pybind11::error_already_set called "
68 r"while Python error indicator not set\.$"
71 with pytest.raises(RuntimeError, match=expected):
72 m.cast_to_pyobject_ptr_nullptr(set_error)
76 with pytest.raises(SystemError)
as excinfo:
77 m.cast_to_pyobject_ptr_non_nullptr_with_error_set()
78 assert str(excinfo.value) ==
"src != nullptr but PyErr_Occurred()"
79 assert str(excinfo.value.__cause__) ==
"Reflective of unhealthy error handling."
88 vec_obj = m.return_list_pyobject_ptr_take_ownership(ValueHolder)
89 assert [e.value
for e
in vec_obj] == [93, 186]
93 vec_obj = m.return_list_pyobject_ptr_reference(ValueHolder)
94 assert [e.value
for e
in vec_obj] == [93, 186]
99 assert m.dec_ref_each_pyobject_ptr(vec_obj) == 2
103 with pytest.raises(TypeError, match=
r"1\. \(arg0: object, arg1: int\) -> None"):