Skip to content
Snippets Groups Projects
Commit 2b8d778a authored by Campbell Barton's avatar Campbell Barton Committed by Philipp Oeser
Browse files

Fix T94121: PyAPI: ID property group returns wrong type with iter()

Regression in 265d9755.
Where iterating directly on a property group failed, e.g.:
`iter(group)`, tests missed this since only `group.keys()`
was checked.
parent eff7e9aa
No related branches found
No related tags found
No related merge requests found
...@@ -770,7 +770,16 @@ static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject ...@@ -770,7 +770,16 @@ static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject
static PyObject *BPy_IDGroup_iter(BPy_IDProperty *self) static PyObject *BPy_IDGroup_iter(BPy_IDProperty *self)
{ {
return BPy_IDGroup_ViewKeys_CreatePyObject(self); PyObject *iterable = BPy_IDGroup_ViewKeys_CreatePyObject(self);
PyObject *ret;
if (iterable) {
ret = PyObject_GetIter(iterable);
Py_DECREF(iterable);
}
else {
ret = NULL;
}
return ret;
} }
PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop) PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop)
......
...@@ -172,6 +172,14 @@ class TestIdPropertyGroupView(TestHelper, unittest.TestCase): ...@@ -172,6 +172,14 @@ class TestIdPropertyGroupView(TestHelper, unittest.TestCase):
self.assertEqual(list(self.id.items()), [(k, v) for v, k in enumerate(text)]) self.assertEqual(list(self.id.items()), [(k, v) for v, k in enumerate(text)])
self.assertEqual(list(reversed(self.id.items())), list(reversed([(k, v) for v, k in enumerate(text)]))) self.assertEqual(list(reversed(self.id.items())), list(reversed([(k, v) for v, k in enumerate(text)])))
# Check direct iteration is working as expected.
self.id["group"] = {ch: i for i, ch in enumerate(text)}
group = self.id["group"]
self.assertEqual(len(group), len(text))
self.assertEqual(list(iter(group)), text)
def test_contains(self): def test_contains(self):
# Check `idprop.types.IDPropertyGroupView{Keys/Values/Items}.__contains__` # Check `idprop.types.IDPropertyGroupView{Keys/Values/Items}.__contains__`
text = ["A", "B", "C"] text = ["A", "B", "C"]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment