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