Author: Ronan Lamy <[email protected]>
Branch: py3k-update
Changeset: r84034:e93dae9a1960
Date: 2016-04-29 19:15 +0100
http://bitbucket.org/pypy/pypy/changeset/e93dae9a1960/

Log:    Create PyDictProxy_Check{,Exact}

diff --git a/pypy/module/cpyext/dictobject.py b/pypy/module/cpyext/dictobject.py
--- a/pypy/module/cpyext/dictobject.py
+++ b/pypy/module/cpyext/dictobject.py
@@ -230,10 +230,6 @@
         return 0
     return 1
 
-@cpython_api([PyObject], PyObject)
-def PyDictProxy_New(space, w_dict):
-    return space.wrap(W_DictProxyObject(w_dict))
-
 @cpython_api([PyObject], rffi.INT_real, error=CANNOT_FAIL)
 def _PyDict_HasOnlyStringKeys(space, w_dict):
     keys_w = space.unpackiterable(w_dict)
diff --git a/pypy/module/cpyext/dictproxyobject.py 
b/pypy/module/cpyext/dictproxyobject.py
--- a/pypy/module/cpyext/dictproxyobject.py
+++ b/pypy/module/cpyext/dictproxyobject.py
@@ -4,6 +4,8 @@
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.gateway import unwrap_spec, WrappedDefault
 from pypy.interpreter.typedef import TypeDef, interp2app
+from pypy.module.cpyext.api import cpython_api, build_type_checkers
+from pypy.module.cpyext.pyobject import PyObject
 
 class W_DictProxyObject(W_Root):
     "Read-only proxy for mappings."
@@ -47,15 +49,22 @@
 
 W_DictProxyObject.typedef = TypeDef(
     'mappingproxy',
-    __len__ = interp2app(W_DictProxyObject.descr_len),
-    __getitem__ = interp2app(W_DictProxyObject.descr_getitem),
-    __contains__ = interp2app(W_DictProxyObject.descr_contains),
-    __iter__ = interp2app(W_DictProxyObject.descr_iter),
-    __str__ = interp2app(W_DictProxyObject.descr_str),
-    __repr__ = interp2app(W_DictProxyObject.descr_repr),
-    get = interp2app(W_DictProxyObject.get_w),
-    keys = interp2app(W_DictProxyObject.keys_w),
-    values = interp2app(W_DictProxyObject.values_w),
-    items = interp2app(W_DictProxyObject.items_w),
-    copy = interp2app(W_DictProxyObject.copy_w)
-    )
+    __len__=interp2app(W_DictProxyObject.descr_len),
+    __getitem__=interp2app(W_DictProxyObject.descr_getitem),
+    __contains__=interp2app(W_DictProxyObject.descr_contains),
+    __iter__=interp2app(W_DictProxyObject.descr_iter),
+    __str__=interp2app(W_DictProxyObject.descr_str),
+    __repr__=interp2app(W_DictProxyObject.descr_repr),
+    get=interp2app(W_DictProxyObject.get_w),
+    keys=interp2app(W_DictProxyObject.keys_w),
+    values=interp2app(W_DictProxyObject.values_w),
+    items=interp2app(W_DictProxyObject.items_w),
+    copy=interp2app(W_DictProxyObject.copy_w)
+)
+
+PyDictProxy_Check, PyDictProxy_CheckExact = build_type_checkers(
+    "DictProxy", W_DictProxyObject)
+
+@cpython_api([PyObject], PyObject)
+def PyDictProxy_New(space, w_dict):
+    return space.wrap(W_DictProxyObject(w_dict))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to