Fail on passing py::object with wrong Python type to py::object subclass using PYBIND11_OBJECT macro (#2349)

* Fail on passing py::object with wrong Python type to py::object subclass using PYBIND11_OBJECT macro

* Split off test_non_converting_constructors from test_constructors

* Fix test_as_type, as py::type constructor now throws an error itself if the argument is not a type

* Replace tp_name access by pybind11::detail::get_fully_qualified_tp_name

* Move forward-declaration of get_fully_qualified_tp_name to detail/common.h

* Don't add the builtins module name in get_fully_qualified_tp_name for PyPy

* Add PYBIND11_BUILTINS_MODULE macro, and use it in get_fully_qualified_tp_name
This commit is contained in:
Yannick Jadoul
2020-10-05 22:48:54 +02:00
committed by GitHub
parent 2a2f52201d
commit f537093a2f
8 changed files with 49 additions and 16 deletions

View File

@@ -59,10 +59,10 @@ def test_type_of_py_nodelete():
def test_as_type_py():
assert m.as_type(int) == int
with pytest.raises(RuntimeError):
with pytest.raises(TypeError):
assert m.as_type(1) == int
with pytest.raises(RuntimeError):
with pytest.raises(TypeError):
assert m.as_type(m.DerivedClass1()) == m.DerivedClass1