[pypy-commit] pypy py2-mappingproxy: Implement methods: iterkeys(), itervalues(), iteritems().

rlamy pypy.commits at gmail.com
Tue Aug 9 13:14:44 EDT 2016


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py2-mappingproxy
Changeset: r86121:d7ad5289b8ff
Date: 2016-08-09 18:14 +0100
http://bitbucket.org/pypy/pypy/changeset/d7ad5289b8ff/

Log:	Implement methods: iterkeys(), itervalues(), iteritems().

diff --git a/pypy/objspace/std/dictproxyobject.py b/pypy/objspace/std/dictproxyobject.py
--- a/pypy/objspace/std/dictproxyobject.py
+++ b/pypy/objspace/std/dictproxyobject.py
@@ -48,12 +48,21 @@
     def keys_w(self, space):
         return space.call_method(self.w_mapping, "keys")
 
+    def descr_iterkeys(self, space):
+        return space.call_method(self.w_mapping, "iterkeys")
+
     def values_w(self, space):
         return space.call_method(self.w_mapping, "values")
 
+    def descr_itervalues(self, space):
+        return space.call_method(self.w_mapping, "itervalues")
+
     def items_w(self, space):
         return space.call_method(self.w_mapping, "items")
 
+    def descr_iteritems(self, space):
+        return space.call_method(self.w_mapping, "iteritems")
+
     def copy_w(self, space):
         return space.call_method(self.w_mapping, "copy")
 
@@ -82,8 +91,11 @@
     __repr__=interp2app(W_DictProxyObject.descr_repr),
     get=interp2app(W_DictProxyObject.get_w),
     keys=interp2app(W_DictProxyObject.keys_w),
+    iterkeys=interp2app(W_DictProxyObject.descr_iterkeys),
     values=interp2app(W_DictProxyObject.values_w),
+    itervalues=interp2app(W_DictProxyObject.descr_itervalues),
     items=interp2app(W_DictProxyObject.items_w),
+    iteritems=interp2app(W_DictProxyObject.descr_iteritems),
     copy=interp2app(W_DictProxyObject.copy_w),
     **cmp_methods
 )
diff --git a/pypy/objspace/std/test/test_dictproxy.py b/pypy/objspace/std/test/test_dictproxy.py
--- a/pypy/objspace/std/test/test_dictproxy.py
+++ b/pypy/objspace/std/test/test_dictproxy.py
@@ -72,6 +72,9 @@
         assert 'z' not in proxy
         assert repr(proxy) == 'dict_proxy(%r)' % mapping
         assert proxy.keys() == mapping.keys()
+        assert list(proxy.iterkeys()) == proxy.keys()
+        assert list(proxy.itervalues()) == proxy.values()
+        assert list(proxy.iteritems()) == proxy.items()
         raises(TypeError, "proxy['a'] = 4")
         raises(TypeError, "del proxy['a']")
         raises(AttributeError, "proxy.clear()")


More information about the pypy-commit mailing list