mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-07 09:21:55 +00:00
add redeclaration test
This commit is contained in:
parent
882d20f57f
commit
b296137950
@ -1058,7 +1058,12 @@ TEST_SUBMODULE(pytypes, m) {
|
|||||||
instance.def(py::init());
|
instance.def(py::init());
|
||||||
instance.attr_with_type_hint<float>("y");
|
instance.attr_with_type_hint<float>("y");
|
||||||
|
|
||||||
|
m.def("attr_with_type_hint_float_x", [](py::handle obj) {
|
||||||
|
obj.attr_with_type_hint<float>("x");
|
||||||
|
});
|
||||||
|
|
||||||
m.attr_with_type_hint<py::typing::Final<int>>("CONST_INT") = 3;
|
m.attr_with_type_hint<py::typing::Final<int>>("CONST_INT") = 3;
|
||||||
|
|
||||||
m.attr("defined___cpp_inline_variables") = true;
|
m.attr("defined___cpp_inline_variables") = true;
|
||||||
#else
|
#else
|
||||||
m.attr("defined___cpp_inline_variables") = false;
|
m.attr("defined___cpp_inline_variables") = false;
|
||||||
|
@ -1153,6 +1153,18 @@ def test_class_attribute_types() -> None:
|
|||||||
assert instance1.y != instance2.y
|
assert instance1.y != instance2.y
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
not m.defined___cpp_inline_variables,
|
||||||
|
reason="C++17 feature __cpp_inline_variables not available.",
|
||||||
|
)
|
||||||
|
def test_redeclaration_attr_with_type_hint() -> None:
|
||||||
|
obj = m.Instance()
|
||||||
|
m.attr_with_type_hint_float_x(obj)
|
||||||
|
help(obj)
|
||||||
|
assert get_annotations_helper(obj)["x"] == "float"
|
||||||
|
with pytest.raises(RuntimeError, match=r'^__annotations__\["x"\] was set already\.$'):
|
||||||
|
m.attr_with_type_hint_float_x(obj)
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
not m.defined___cpp_inline_variables,
|
not m.defined___cpp_inline_variables,
|
||||||
reason="C++17 feature __cpp_inline_variables not available.",
|
reason="C++17 feature __cpp_inline_variables not available.",
|
||||||
|
Loading…
Reference in New Issue
Block a user