mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 21:25:13 +00:00
disable dynamic attribute test on pypy
This commit is contained in:
parent
a3fec901b8
commit
64cb699e8a
@ -785,6 +785,11 @@ protected:
|
|||||||
|
|
||||||
/* Support dynamic attributes */
|
/* Support dynamic attributes */
|
||||||
if (rec->dynamic_attr) {
|
if (rec->dynamic_attr) {
|
||||||
|
#if defined(PYPY_VERSION)
|
||||||
|
pybind11_fail(std::string(rec->name) + ": dynamic attributes are "
|
||||||
|
"currently not supported in "
|
||||||
|
"conunction with PyPy!");
|
||||||
|
#endif
|
||||||
type->ht_type.tp_flags |= Py_TPFLAGS_HAVE_GC;
|
type->ht_type.tp_flags |= Py_TPFLAGS_HAVE_GC;
|
||||||
type->ht_type.tp_dictoffset = type->ht_type.tp_basicsize; // place the dict at the end
|
type->ht_type.tp_dictoffset = type->ht_type.tp_basicsize; // place the dict at the end
|
||||||
type->ht_type.tp_basicsize += sizeof(PyObject *); // and allocate enough space for it
|
type->ht_type.tp_basicsize += sizeof(PyObject *); // and allocate enough space for it
|
||||||
|
@ -176,9 +176,11 @@ test_initializer methods_and_attributes([](py::module &m) {
|
|||||||
.def_property_readonly("rvalue", &TestPropRVP::get_rvalue)
|
.def_property_readonly("rvalue", &TestPropRVP::get_rvalue)
|
||||||
.def_property_readonly_static("static_rvalue", [](py::object) { return SimpleValue(); });
|
.def_property_readonly_static("static_rvalue", [](py::object) { return SimpleValue(); });
|
||||||
|
|
||||||
|
#if !defined(PYPY_VERSION)
|
||||||
py::class_<DynamicClass>(m, "DynamicClass", py::dynamic_attr())
|
py::class_<DynamicClass>(m, "DynamicClass", py::dynamic_attr())
|
||||||
.def(py::init());
|
.def(py::init());
|
||||||
|
|
||||||
py::class_<CppDerivedDynamicClass, DynamicClass>(m, "CppDerivedDynamicClass")
|
py::class_<CppDerivedDynamicClass, DynamicClass>(m, "CppDerivedDynamicClass")
|
||||||
.def(py::init());
|
.def(py::init());
|
||||||
|
#endif
|
||||||
});
|
});
|
||||||
|
@ -180,6 +180,8 @@ def test_dynamic_attributes():
|
|||||||
assert cstats.alive() == 0
|
assert cstats.alive() == 0
|
||||||
|
|
||||||
|
|
||||||
|
# https://bitbucket.org/pypy/pypy/issues/2447
|
||||||
|
@pytest.unsupported_on_pypy
|
||||||
def test_cyclic_gc():
|
def test_cyclic_gc():
|
||||||
from pybind11_tests import DynamicClass
|
from pybind11_tests import DynamicClass
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ test_initializer pickling([](py::module &m) {
|
|||||||
p.setExtra2(t[2].cast<int>());
|
p.setExtra2(t[2].cast<int>());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#if !defined(PYPY_VERSION)
|
||||||
py::class_<PickleableWithDict>(m, "PickleableWithDict", py::dynamic_attr())
|
py::class_<PickleableWithDict>(m, "PickleableWithDict", py::dynamic_attr())
|
||||||
.def(py::init<std::string>())
|
.def(py::init<std::string>())
|
||||||
.def_readwrite("value", &PickleableWithDict::value)
|
.def_readwrite("value", &PickleableWithDict::value)
|
||||||
@ -78,4 +79,5 @@ test_initializer pickling([](py::module &m) {
|
|||||||
/* Assign Python state */
|
/* Assign Python state */
|
||||||
self.attr("__dict__") = t[2];
|
self.attr("__dict__") = t[2];
|
||||||
});
|
});
|
||||||
|
#endif
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user