Ralf W. Grosse-Kunstleve
048e36df40
Bring in shared_ptr_with_responsible_parent()
from smart_holder branch:
...
smart_holder branch:
```
static std::shared_ptr<type> shared_ptr_from_python(handle responsible_parent)
```
Renamed in this commit:
```
static std::shared_ptr<type> shared_ptr_with_responsible_parent(handle responsible_parent)
```
Use in `property_cpp_function<>` specializations.
Fixes all 8 test failures introduced with the previous commit (1bcf572780
):
```
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
```
2024-07-12 02:11:09 -07:00
Ralf W. Grosse-Kunstleve
1bcf572780
First pass adapting all property_cpp_function<>
implementations. Still needs debugging and more testing:
...
```
========================================================= short test summary info ==========================================================
SKIPPED [2] test_class_sh_property.py:19: BAKEIN_BREAK: Failed: DID NOT RAISE <class 'ValueError'>
SKIPPED [1] test_class_sh_property.py:87: BAKEIN_BREAK: m_uqcp_readwrite does not build
SKIPPED [1] test_class_sh_property.py:140: BAKEIN_BREAK: m_uqmp_readwrite does not build
SKIPPED [1] test_class_sh_property.py:140: BAKEIN_BREAK: m_uqcp_readwrite does not build
SKIPPED [1] test_class_sh_basic.py:156: unconditional skip
SKIPPED [1] test_class_sh_property.py:87: BAKEIN_BREAK: m_uqmp_readwrite does not build
SKIPPED [1] test_stl.py:149: no <experimental/optional>
SKIPPED [1] test_smart_ptr.py:301: BAKEIN_EXPECTED: Failed: DID NOT RAISE <class 'RuntimeError'>
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_rw-expected1-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_ro-expected4-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-True] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_value_ro-expected0-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
FAILED test_class_sh_property_non_owning.py::test_core_fld_common[core_fld_raw_ptr_rw-expected5-False] - RuntimeError: Non-owning holder (loaded_as_shared_ptr).
================================================ 8 failed, 1056 passed, 9 skipped in 3.96s =================================================
```
2024-07-10 15:21:09 -07:00
Ralf W. Grosse-Kunstleve
f852cf5714
Copy code property_cpp_function<>
code from smart_holder branch as-is. Ifdef out all but the "classic" implementation.
2024-07-10 15:16:59 -07:00
Ralf W. Grosse-Kunstleve
127058cb16
Replace loaded_v_h.type = get_type_info(typeid(type))
with loaded_v_h.type = typeinfo
in unique_ptr
type_caster
and remove pytest.skip()
in test_class_sh_disowning_mi.py
2024-07-10 08:18:24 -07:00
Ralf W. Grosse-Kunstleve
575919098a
Remove all LOOOK in type_caster_base.h
2024-07-09 15:14:05 -07:00
Ralf W. Grosse-Kunstleve
c6a87e8897
Call new load_helper.get_void_ptr_or_nullptr() instead of calling type_caster_generic::load_value() in shared_ptr and unique_ptr casters.
2024-07-09 15:07:10 -07:00
Ralf W. Grosse-Kunstleve
36bbac1b47
LOOOK to trace disowning
2024-07-09 14:09:38 -07:00
Ralf W. Grosse-Kunstleve
0296d33b1d
Stress test: use PYBIND11_SMART_HOLDER_PADDING unconditionally.
2024-07-08 17:43:31 -07:00
Ralf W. Grosse-Kunstleve
f1f0eef3cb
Remove cruft from smart_holder_type_caster_support::load_helper<>
2024-07-07 10:14:06 -07:00
Ralf W. Grosse-Kunstleve
b82892ae6f
Resolve clang-tidy errors and warnings.
2024-07-07 09:43:53 -07:00
Ralf W. Grosse-Kunstleve
bd37d69b67
Bug fix: typeid(cpptype)
-> cpptype->name()
2024-07-07 08:54:55 -07:00
Ralf W. Grosse-Kunstleve
042ea81fbe
Pass thunk-corrected pointer to loaded_as_unique_ptr(). With this all test_class_sh_mi_thunks tests pass.
2024-07-07 07:34:00 -07:00
Ralf W. Grosse-Kunstleve
103666ad40
Micro-scale cleanup/consolidation.
2024-07-07 06:58:07 -07:00
Ralf W. Grosse-Kunstleve
1fbc4a2f54
Clean out dead-end and debug code.
2024-07-07 06:46:04 -07:00
Ralf W. Grosse-Kunstleve
bb6b429a2f
MESSY but success for: test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]
...
scons -j 48 selected_test_cpp=test_class_sh_mi_thunks.cpp && "$(cat PYROOT)"/bin/python3 $HOME/clone/pybind11_scons/run_tests.py ../pybind11 test_class_sh_mi_thunks.py -s -vv -k 'test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]'
```
=========================================================== test session starts ============================================================
platform linux -- Python 3.11.8, pytest-7.4.4, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
C++ Info: 13.2.0 C++20 __pybind11_internals_v10000000_gcc_libstdcpp_cxxabi1018__ PYBIND11_SIMPLE_GIL_MANAGEMENT=False PYBIND11_NUMPY_1_ONLY=False
rootdir: /usr/local/google/home/rwgk/forked/pybind11/tests
configfile: pytest.ini
plugins: xdist-3.5.0
collected 10 items / 9 deselected / 1 selected
test_class_sh_mi_thunks.py::test_get_vec_size_raw_shared[get_drvd_as_base0_raw_ptr-vec_size_base0_shared_ptr]
LOOOK A
LOOOK get raw drvd 47927280
LOOOK get raw base 47927312
LOOOK B
LOOOK shd load(src, convert) X
LOOOK shd try_implicit_casts(src, convert) Q
LOOOK shd try_implicit_casts(src, convert) R
LOOOK shd load(src, convert) X
LOOOK shd load_value(v_h) ENTRY
LOOOK shd load_value(v_h) A
LOOOK shd load_value(v_h) B
LOOOK shd load(src, convert) Y 47927280
LOOOK shd try_implicit_casts(src, convert) S
LOOOK shd load(src, convert) Y 47927312
LOOOK operator std::shared_ptr<type> & A 47927312 /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:891
LOOOK /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:838
LOOOK /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../detail/type_caster_base.h:842
LOOOK operator std::shared_ptr<type> & B 47927312 /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/detail/../cast.h:893
LOOOK shd const Base0 *obj 47927312
LOOOK shd const auto *obj_der 47927280
LOOOK C
PASSED
===================================================== 1 passed, 9 deselected in 0.01s ======================================================
```
2024-07-07 06:31:23 -07:00
Ralf W. Grosse-Kunstleve
eb15f1a384
WIP: remove convert_type() call from loaded_as_shared_ptr()
2024-07-06 14:29:22 -07:00
Ralf W. Grosse-Kunstleve
4114e975d4
throw from convert_type()
to expose bug.
...
```
========================================================= short test summary info ==========================================================
SKIPPED [4] test_class_sh_disowning_mi.py:67: BAKEIN_BREAK: AssertionError
SKIPPED [2] test_class_sh_disowning_mi.py:43: BAKEIN_BREAK: AssertionError
SKIPPED [2] test_class_sh_disowning_mi.py:54: BAKEIN_BREAK: AssertionError
SKIPPED [1] test_class_sh_basic.py:156: unconditional skip
SKIPPED [6] test_class_sh_mi_thunks.py:34: BAKEIN_BREAK: Segmentation fault
SKIPPED [2] test_class_sh_mi_thunks.py:43: BAKEIN_BREAK: AssertionError
SKIPPED [1] test_class_sh_mi_thunks.py:51: BAKEIN_BREAK: Failed: DID NOT RAISE <class 'ValueError'>
SKIPPED [1] test_stl.py:149: no <experimental/optional>
SKIPPED [1] test_smart_ptr.py:301: BAKEIN_EXPECTED: Failed: DID NOT RAISE <class 'RuntimeError'>
FAILED test_class_sh_basic.py::test_load_with_mtxt[pass_shmp-Shmp-pass_shmp:Shmp(_MvCtor)*_MvCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_b - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_unique_ptr_consumer_roundtrip[pass_valu-rtrn_lref-True-False] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_cannot_disown_use_count_ne_1[pass_udcp-rtrn_udcp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_unique_ptr_roundtrip - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_unique_ptr_consumer_roundtrip[pass_valu-rtrn_cref-True-False] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_load_with_mtxt[pass_uqmp-Uqmp-pass_uqmp:Uqmp(_MvCtor)*_MvCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_load_with_mtxt[pass_uqcp-Uqcp-pass_uqcp:Uqcp(_MvCtor)*_MvCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_load_with_rtrn_f[pass_udmp-rtrn_udmp-pass_udmp:rtrn_udmp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_load_with_rtrn_f[pass_udcp-rtrn_udcp-pass_udcp:rtrn_udcp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_deleter_roundtrip[pass_udcp_del-rtrn_udcp_del-pass_udcp_del:rtrn_udcp_del,udcp_deleter(_MvCtorTo)*_MvCtorTo] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_deleter_roundtrip[pass_udmp_del_nd-rtrn_udmp_del_nd-pass_udmp_del_nd:rtrn_udmp_del_nd,udmp_deleter_nd(_MvCtorTo)*_MvCtorTo] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_deleter_roundtrip[pass_udcp_del_nd-rtrn_udcp_del_nd-pass_udcp_del_nd:rtrn_udcp_del_nd,udcp_deleter_nd(_MvCtorTo)*_MvCtorTo] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning.py::test_same_twice - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning.py::test_mixed - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning.py::test_overloaded - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_pass_unique_ptr_disowns[pass_udmp-rtrn_udmp-pass_udmp:rtrn_udmp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_pass_unique_ptr_disowns[pass_udcp-rtrn_udcp-pass_udcp:rtrn_udcp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_cannot_disown_use_count_ne_1[pass_uqmp-rtrn_uqmp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_cannot_disown_use_count_ne_1[pass_uqcp-rtrn_uqcp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_unique_ptr_consumer_roundtrip[pass_valu-rtrn_valu-True-True] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_pass_unique_ptr_disowns[pass_uqmp-rtrn_uqmp-pass_uqmp:rtrn_uqmp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base1_first[MI1-1-2-None] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_pure_cpp_sft_raw_ptr[make_pure_cpp_sft_unq_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_pure_cpp_sft_raw_ptr[make_pure_cpp_sft_shd_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_basic.py::test_drvd0_add_in_cpp_unique_ptr - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_basic.py::test_drvd1_add_in_cpp_unique_ptr - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_self_life_support.py::test_m_big5 - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_self_life_support.py::test_py_big5[0-Seed_CpCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_virtual_py_cpp_mix.py::test_get_from_cpp_unique_ptr[Base-5101] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_virtual_py_cpp_mix.py::test_get_from_cpp_unique_ptr[PyBase-5323] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2_first[MI1-1-2-None] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2_first[MI2-3-4-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2_first[MI3-5-6-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2_first[MI4-7-8-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_inheritance.py::test_rtrn_shmp_drvd_pass_shcp_base - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_inheritance.py::test_rtrn_shmp_drvd_up_cast_pass_shcp_drvd - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_std_make_shared_factory - AssertionError: assert 'BEAKIN_WIP: ...ype() called.' == 'smart_holder...ed_from_this.'
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_shared_ptr_cpp_arg - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_shared_ptr_cpp_prop - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_shared_ptr_arg_identity - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2[MI6-12-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2[MI7-13-4] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2[MI8-14-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2[MI8b-15-3] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_multiple_registered_instances_for_same_pointee - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_multiple_registered_instances_for_same_pointee_leak - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_virtual_py_cpp_mix.py::test_get_from_cpp_unique_ptr[CppDerivedPlain-5202] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_virtual_py_cpp_mix.py::test_get_from_cpp_unique_ptr[CppDerived-5212] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_stash_leak - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_stash_via_shared_from_this - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_stash_via_shared_from_this_leak - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_pass_released_shared_ptr_as_unique_ptr - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_shared_ptr_goaway - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_infinite - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_std_make_shared_factory[pass_through_shd_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_std_make_shared_factory[pass_through_shd_ptr_release_gil] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_unique_ptr.py::test_m_clone_and_foo - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_unique_ptr_member.py::test_pointee_and_ptr_owner[give_up_ownership_via_unique_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_self_life_support.py::test_py_big5[2-Seed_OpEqLv] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_self_life_support.py::test_py_big5[3-Seed_OpEqRv] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_shared_from_this - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_shared_from_this_leak - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_load_with_mtxt[pass_shcp-Shcp-pass_shcp:Shcp(_MvCtor)*_MvCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base1_first[MI2-3-4-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_unique_ptr_consumer_roundtrip[pass_rref-rtrn_valu-True-True] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base1_first[MI3-5-6-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base1_first[MI4-7-8-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_pass_unique_ptr_disowns[pass_uqcp-rtrn_uqcp-pass_uqcp:rtrn_uqcp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_cannot_disown_use_count_ne_1[pass_udmp-rtrn_udmp] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_unique_ptr.py::test_m_clone - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base2_first[MI5-10-11-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_self_life_support.py::test_py_big5[1-Seed_MvCtor] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_multiple_registered_instances_for_same_pointee_recursive - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_virtual_py_cpp_mix.py::test_get_from_cpp_unique_ptr[PyCppDerived-5434] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_basic.py::test_drvd0_add_in_cpp_shared_ptr - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_release_and_stash - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_basic.py::test_deleter_roundtrip[pass_udmp_del-rtrn_udmp_del-pass_udmp_del:rtrn_udmp_del,udmp_deleter(_MvCtorTo)*_MvCtorTo] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_unique_ptr_member.py::test_pointee_and_ptr_owner[give_up_ownership_via_shared_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_from_this.py::test_pure_cpp_sft_raw_ptr[make_pure_cpp_sft_raw_ptr] - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_trampoline_shared_ptr_cpp_arg.py::test_shared_ptr_alias_nonpython - RuntimeError: BEAKIN_WIP: convert_type() called.
FAILED test_class_sh_disowning_mi.py::test_disown_base1_first[MI5-10-11-1] - RuntimeError: BEAKIN_WIP: convert_type() called.
================================================ 82 failed, 939 passed, 20 skipped in 4.02s ================================================
```
2024-07-06 13:11:20 -07:00
Ralf W. Grosse-Kunstleve
af467ea1a6
WIP
2024-07-06 11:17:00 -07:00
Ralf W. Grosse-Kunstleve
70ba91f721
Inline smart_holder_type_caster_support, trampoline_self_life_support in type_caster_base.h: the organization of the existing code makes it very difficult to factor the added code properly.
2024-07-06 11:04:25 -07:00
Ralf W. Grosse-Kunstleve
fcc868df59
Add PYBIND11_TYPE_CASTER_BASE_HOLDER(...) (no-op)
2024-07-05 14:37:15 -07:00
Ralf W. Grosse-Kunstleve
46ab14ebb4
Add missing explicit
to resolve clang-tidy error.
2024-07-05 12:33:19 -07:00
Ralf W. Grosse-Kunstleve
c84dacc379
Factor out smart_holder_value_and_holder_support.h to avoid code duplication.
...
All unit tests pass ASAN and MSAN testing with the Google-internal toolchain.
2024-07-05 12:18:11 -07:00
Ralf W. Grosse-Kunstleve
e593589c61
inline unique_ptr_to_python() in cast.h
2024-07-05 10:12:21 -07:00
Ralf W. Grosse-Kunstleve
12c0eb3889
inline shared_ptr_to_python() in cast.h
2024-07-05 10:05:29 -07:00
Ralf W. Grosse-Kunstleve
0b7a628a04
Check for Python instance is uninitialized/disowned in type_caster_base.h. CRUDE intermediate state, needs refactoring.
...
All 4 remaining BAKEIN_BREAK removed from test_class_sh_basic.py. With that both test_class_sh_basic.cpp and test_class_sh_basic.py are identical to the smart_holder branch.
All unit tests pass ASAN and MSAN testing with the Google-internal toolchain.
2024-07-05 00:28:43 -07:00
Ralf W. Grosse-Kunstleve
fd1afdb2b9
move_only_holder_caster<...unique_ptr...>::load_value()
: throw
instead of return false
(i.e. prefer noisy failure over potentially silent failure).
2024-07-04 23:57:34 -07:00
Ralf W. Grosse-Kunstleve
66fb5c942c
Merge branch 'master' into bakein
2024-07-04 18:21:55 -07:00
Ralf W. Grosse-Kunstleve
874f69d898
Add cast(const std::unique_ptr<type, deleter> &, ...)
. Remove the last 3 remaining BAKEIN_BREAK in test_class_sh_basic.cpp
2024-07-04 16:09:01 -07:00
Ralf W. Grosse-Kunstleve
ebbe066841
Implement operator std::unique_ptr<type, deleter>()
. Resolves all but 1 block of 4 BAKEIN_BREAK in test_class_sh_basic.py
2024-07-04 11:26:43 -07:00
Ralf W. Grosse-Kunstleve
391d7726ad
Remove operator type *() unique_ptr
, and &
(not sure how they would be useful).
2024-07-04 08:25:06 -07:00
Ralf W. Grosse-Kunstleve
d4fc392ebe
move_only_holder_caster<type, std::unique_ptr<T, D>>
: inherit from type_caster_base<T>
...
CRUDE INTERMEDIATE STATE, just to see if this builds on all platforms.
2024-07-03 15:16:46 -07:00
Ralf W. Grosse-Kunstleve
224e9343d2
Implement operator std::shared_ptr<type> &()
, remove 2 BAKEIN_BREAK: pass_shmp, pass_shcp
2024-07-03 13:51:50 -07:00
Ralf W. Grosse-Kunstleve
af66246fb6
Resolve clang-tidy errors:
...
```
/__w/pybind11/pybind11/include/pybind11/cast.h:918:44: error: std::move of the variable 'v_h' of the trivially-copyable type 'pybind11::detail::value_and_holder' has no effect [performance-move-const-arg,-warnings-as-errors]
return load_value_smart_holder(std::move(v_h));
^
/__w/pybind11/pybind11/include/pybind11/cast.h:911:53: note: consider changing the 1st parameter of 'load_value_smart_holder' from 'pybind11::detail::value_and_holder &&' to 'const pybind11::detail::value_and_holder &'
bool load_value_smart_holder(value_and_holder &&v_h) {
^
/__w/pybind11/pybind11/include/pybind11/cast.h:920:38: error: std::move of the variable 'v_h' of the trivially-copyable type 'pybind11::detail::value_and_holder' has no effect [performance-move-const-arg,-warnings-as-errors]
return load_value_shared_ptr(std::move(v_h));
^
/__w/pybind11/pybind11/include/pybind11/cast.h:895:51: note: consider changing the 1st parameter of 'load_value_shared_ptr' from 'pybind11::detail::value_and_holder &&' to 'const pybind11::detail::value_and_holder &'
bool load_value_shared_ptr(value_and_holder &&v_h) {
^
```
2024-07-03 12:54:41 -07:00
Ralf W. Grosse-Kunstleve
fc5678b08b
Add value_and_holder loaded_v_h;
member (set, but currently unused).
2024-07-03 11:26:04 -07:00
Ralf W. Grosse-Kunstleve
2837df178e
Rename holder
to shared_ptr_holder
to improve readability. No functional changes.
2024-07-03 10:49:17 -07:00
Ralf W. Grosse-Kunstleve
17c0354050
copyable_holder_caster<type, std::shared_ptr<type>>
: split load_value_shared_ptr()
, load_value_smart_holder()
(the latter just throws right now)
2024-07-03 10:30:14 -07:00
Ralf W. Grosse-Kunstleve
556f28a1a4
Add smart_holder_from_shared_ptr()
specialization for std::shared_ptr<T const>
...
Resolves one `// BAKEIN_WIP: Better Const2Mutbl`.
2024-07-03 07:41:48 -07:00
Ralf W. Grosse-Kunstleve
5957133b6e
Add smart_holder_from_unique_ptr()
specialization for std::unique_ptr<T const, D>
...
Enables removing:
4 BAKEIN_BREAK in test_class_sh_basic.cpp
2 BAKEIN_BREAK in test_class_sh_basic.py
2024-07-03 07:38:18 -07:00
Ralf W. Grosse-Kunstleve
7a6d30ca58
Fix rtrn_shmp
, rtrn_shmp
by transferring smart_holder_from_shared_ptr()
functionality from smart_holder branch.
2024-07-02 18:25:01 -07:00
Ralf W. Grosse-Kunstleve
12b01305de
Add no-op pybind11/smart_holder.h, 21 BAKEIN_BREAK in test_class_sh_basic.cpp, 26 BAKEIN_BREAK in test_class_sh_basic.py
...
```
========================================================= short test summary info ==========================================================
SKIPPED [1] test_class_sh_basic.py:59: got empty parameter set ('pass_f', 'rtrn_f', 'expected'), function test_load_with_rtrn_f at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:58
SKIPPED [1] test_class_sh_basic.py:70: got empty parameter set ('pass_f', 'rtrn_f', 'regex_expected'), function test_deleter_roundtrip at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:69
SKIPPED [1] test_class_sh_basic.py:99: got empty parameter set ('pass_f', 'rtrn_f', 'expected'), function test_pass_unique_ptr_disowns at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:98
SKIPPED [1] test_class_sh_basic.py:120: got empty parameter set ('pass_f', 'rtrn_f'), function test_cannot_disown_use_count_ne_1 at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:119
SKIPPED [1] test_class_sh_basic.py:145: BAKEIN_BREAK: AttributeError unique_ptr_roundtrip
SKIPPED [1] test_class_sh_basic.py:157: unconditional skip
SKIPPED [1] test_class_sh_basic.py:169: got empty parameter set ('pass_f', 'rtrn_f', 'moved_out', 'moved_in'), function test_unique_ptr_consumer_roundtrip at /usr/local/google/home/rwgk/forked/pybind11/tests/test_class_sh_basic.py:168
SKIPPED [1] test_class_sh_basic.py:210: BAKEIN_BREAK: AttributeError args_unique_ptr
====================================================== 17 passed, 8 skipped in 0.04s =======================================================```
2024-07-02 14:43:23 -07:00
Ralf W. Grosse-Kunstleve
c92b4d86da
Insert PYBIND11_SMART_HOLDER_PADDING (with the idea to catch undefined behavior sooner rather than later).
2024-07-02 10:57:25 -07:00
Sam Gross
bb05e0810b
Use PyMutex instead of std::mutex in free-threaded build. ( #5219 )
...
* Use PyMutex instead of std::mutex in free-threaded build.
PyMutex is now part of the public C API as of 3.13.0b3 and generally has
slightly less overhead than std::mutex.
* style: pre-commit fixes
* Fix instance_map_shard padding
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-07-02 09:58:09 -07:00
Ralf W. Grosse-Kunstleve
b0cfeec63c
Merge branch 'master' into bakein
2024-07-01 21:51:36 -07:00
Ralf W. Grosse-Kunstleve
ae08f51e38
Start pybind11/detail/smart_holder_type_caster_support.h, move unique_ptr_to_python() there, add smart_holder_from_unique_ptr()
2024-07-01 15:52:50 -07:00
Ralf W. Grosse-Kunstleve
6ff547e18a
Introduce type_caster_base<>::unique_ptr_to_python()
2024-07-01 12:39:45 -07:00
Ralf W. Grosse-Kunstleve
5518e01562
Copy-paste-and-specialize copyable_holder_caster<shared_ptr>, move_only_holder_caster<unique_ptr>. No functional changes.
2024-07-01 11:47:34 -07:00
Ralf W. Grosse-Kunstleve
e4d0a55575
Remove is_holder_type<unique_ptr>
2024-07-01 11:18:56 -07:00
Ralf W. Grosse-Kunstleve
381fdc54e9
Bring in smart_holder_from_unique_ptr(), smart_holder_from_shared_ptr() from smart_holder_type_casters.h (with this test_wip builds and runs successfully).
2024-06-30 11:32:10 -07:00
Ralf W. Grosse-Kunstleve
e8cd42953e
pybind11/detail/init.h: replace type_uses_smart_holder_type_caster<> with is_same<Holder<Class>, smart_holder> (still does not build).
2024-06-30 11:22:41 -07:00
Ralf W. Grosse-Kunstleve
03e6a93c73
Remove stray line (probably from an accident/oversight a long time ago; harmless).
2024-06-30 10:03:58 -07:00