Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.5
Changeset: r91709:78dee6627756
Date: 2017-07-06 18:18 +0100
http://bitbucket.org/pypy/pypy/changeset/78dee6627756/

Log:    Ensure that mappingproxy is recognised as a mapping, not a sequence

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
@@ -93,3 +93,7 @@
     copy=interp2app(W_DictProxyObject.copy_w),
     **cmp_methods
 )
+
+def _set_flag_map_or_seq(space):
+    w_type = space.gettypeobject(W_DictProxyObject.typedef)
+    w_type.flag_map_or_seq = 'M'
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -96,6 +96,8 @@
         self.w_text = self.w_str
         del self.w_str
         self.w_dict.flag_map_or_seq = 'M'
+        from pypy.objspace.std import dictproxyobject
+        dictproxyobject._set_flag_map_or_seq(self)
         self.w_list.flag_map_or_seq = 'S'
         self.w_tuple.flag_map_or_seq = 'S'
         self.builtin_types['str'] = self.w_unicode
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
@@ -65,6 +65,7 @@
         raises(TypeError, "proxy['a'] = 4")
         raises(TypeError, "del proxy['a']")
         raises(AttributeError, "proxy.clear()")
+        raises(TypeError, reversed, proxy)
         #
         class D(dict):
             def copy(self): return 3
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to