Commit 0eb7f863 authored by Benjamin Peterson's avatar Benjamin Peterson

return views from dict proxy items/values/keys #10630

parent b5d79330
...@@ -4233,20 +4233,26 @@ class DictProxyTests(unittest.TestCase): ...@@ -4233,20 +4233,26 @@ class DictProxyTests(unittest.TestCase):
self.C = C self.C = C
def test_iter_keys(self): def test_iter_keys(self):
# Testing dict-proxy iterkeys... # Testing dict-proxy keys...
keys = [ key for key in self.C.__dict__.keys() ] it = self.C.__dict__.keys()
self.assertNotIsInstance(it, list)
keys = list(it)
keys.sort() keys.sort()
self.assertEqual(keys, ['__dict__', '__doc__', '__module__', self.assertEqual(keys, ['__dict__', '__doc__', '__module__',
'__weakref__', 'meth']) '__weakref__', 'meth'])
def test_iter_values(self): def test_iter_values(self):
# Testing dict-proxy itervalues... # Testing dict-proxy values...
values = [ values for values in self.C.__dict__.values() ] it = self.C.__dict__.values()
self.assertNotIsInstance(it, list)
values = list(it)
self.assertEqual(len(values), 5) self.assertEqual(len(values), 5)
def test_iter_items(self): def test_iter_items(self):
# Testing dict-proxy iteritems... # Testing dict-proxy iteritems...
keys = [ key for (key, value) in self.C.__dict__.items() ] it = self.C.__dict__.items()
self.assertNotIsInstance(it, list)
keys = [item[0] for item in it]
keys.sort() keys.sort()
self.assertEqual(keys, ['__dict__', '__doc__', '__module__', self.assertEqual(keys, ['__dict__', '__doc__', '__module__',
'__weakref__', 'meth']) '__weakref__', 'meth'])
......
...@@ -710,19 +710,19 @@ proxy_get(proxyobject *pp, PyObject *args) ...@@ -710,19 +710,19 @@ proxy_get(proxyobject *pp, PyObject *args)
static PyObject * static PyObject *
proxy_keys(proxyobject *pp) proxy_keys(proxyobject *pp)
{ {
return PyMapping_Keys(pp->dict); return PyObject_CallMethod(pp->dict, "keys", NULL);
} }
static PyObject * static PyObject *
proxy_values(proxyobject *pp) proxy_values(proxyobject *pp)
{ {
return PyMapping_Values(pp->dict); return PyObject_CallMethod(pp->dict, "values", NULL);
} }
static PyObject * static PyObject *
proxy_items(proxyobject *pp) proxy_items(proxyobject *pp)
{ {
return PyMapping_Items(pp->dict); return PyObject_CallMethod(pp->dict, "items", NULL);
} }
static PyObject * static PyObject *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment