diff --git a/include/pybind11/pytypes.h b/include/pybind11/pytypes.h index a2f7cec486..48b5240836 100644 --- a/include/pybind11/pytypes.h +++ b/include/pybind11/pytypes.h @@ -153,7 +153,7 @@ class object_api : public pyobject_tag { /// Return the object's current reference count int ref_count() const { return static_cast(Py_REFCNT(derived().ptr())); } - PYBIND11_DEPRECATED("Call py::type::handle_of(h) or py::type::of(h) instead of h.get_type()") + // TODO PYBIND11_DEPRECATED("Call py::type::handle_of(h) or py::type::of(h) instead of h.get_type()") handle get_type() const; private: @@ -1580,8 +1580,7 @@ template str_attr_accessor object_api::doc() const { return attr("__doc__"); } template -PYBIND11_DEPRECATED("Use py::type::of(h) instead of h.get_type()") -handle object_api::get_type() const { return type::handle_of(*this); } +handle object_api::get_type() const { return type::handle_of(derived()); } template bool object_api::rich_compare(object_api const &other, int value) const { diff --git a/tests/test_class.cpp b/tests/test_class.cpp index b0e3d3a4b6..bb9d364423 100644 --- a/tests/test_class.cpp +++ b/tests/test_class.cpp @@ -152,6 +152,10 @@ TEST_SUBMODULE(class_, m) { return py::type::of(ob); }); + m.def("get_type_classic", [](py::handle h) { + return h.get_type(); + }); + m.def("as_type", [](py::object ob) { auto tp = py::type(ob); if (py::isinstance(ob)) diff --git a/tests/test_class.py b/tests/test_class.py index be21f3709f..64f4941958 100644 --- a/tests/test_class.py +++ b/tests/test_class.py @@ -45,6 +45,12 @@ def test_type_of_py(): assert m.get_type_of(int) == type +def test_type_of_classic(): + assert m.get_type_classic(1) == int + assert m.get_type_classic(m.DerivedClass1()) == m.DerivedClass1 + assert m.get_type_classic(int) == type + + def test_type_of_py_nodelete(): # If the above test deleted the class, this will segfault assert m.get_type_of(m.DerivedClass1()) == m.DerivedClass1 diff --git a/tests/test_gil_scoped.py b/tests/test_gil_scoped.py index 27122cca28..6e7fe9f4c0 100644 --- a/tests/test_gil_scoped.py +++ b/tests/test_gil_scoped.py @@ -55,7 +55,7 @@ def _python_to_cpp_to_python_from_threads(num_threads, parallel=False): # TODO: FIXME, sometimes returns -11 instead of 0 -@pytest.mark.xfail("env.PY > (3,8) and env.MACOS", strict=False) +@pytest.mark.xfail("env.PY >= (3,9) and env.MACOS", strict=False) def test_python_to_cpp_to_python_from_thread(): """Makes sure there is no GIL deadlock when running in a thread. @@ -65,7 +65,7 @@ def test_python_to_cpp_to_python_from_thread(): # TODO: FIXME -@pytest.mark.xfail("env.PY > (3,8) and env.MACOS", strict=False) +@pytest.mark.xfail("env.PY >= (3,9) and env.MACOS", strict=False) def test_python_to_cpp_to_python_from_thread_multiple_parallel(): """Makes sure there is no GIL deadlock when running in a thread multiple times in parallel. @@ -75,7 +75,7 @@ def test_python_to_cpp_to_python_from_thread_multiple_parallel(): # TODO: FIXME -@pytest.mark.xfail("env.PY > (3,8) and env.MACOS", strict=False) +@pytest.mark.xfail("env.PY >= (3,9) and env.MACOS", strict=False) def test_python_to_cpp_to_python_from_thread_multiple_sequential(): """Makes sure there is no GIL deadlock when running in a thread multiple times sequentially. @@ -85,7 +85,7 @@ def test_python_to_cpp_to_python_from_thread_multiple_sequential(): # TODO: FIXME -@pytest.mark.xfail("env.PY > (3,8) and env.MACOS", strict=False) +@pytest.mark.xfail("env.PY >= (3,9) and env.MACOS", strict=False) def test_python_to_cpp_to_python_from_process(): """Makes sure there is no GIL deadlock when using processes.