[pypy-commit] pypy mappingproxy: Implement comparison methods for mappingproxy
rlamy
pypy.commits at gmail.com
Wed Aug 3 13:47:32 EDT 2016
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: mappingproxy
Changeset: r86006:361a24241f59
Date: 2016-08-03 18:47 +0100
http://bitbucket.org/pypy/pypy/changeset/361a24241f59/
Log: Implement comparison methods for mappingproxy
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
@@ -59,6 +59,19 @@
def copy_w(self, space):
return space.call_method(self.w_mapping, "copy")
+cmp_methods = {}
+def make_cmp_method(op):
+ def descr_op(self, space, w_other):
+ return getattr(space, op)(self.w_mapping, w_other)
+ descr_name = 'descr_' + op
+ descr_op.__name__ = descr_name
+ setattr(W_DictProxyObject, descr_name, descr_op)
+ cmp_methods['__%s__' % op] = interp2app(getattr(W_DictProxyObject, descr_name))
+
+for op in ['eq', 'ne', 'gt', 'ge', 'lt', 'le']:
+ make_cmp_method(op)
+
+
W_DictProxyObject.typedef = TypeDef(
'mappingproxy',
__new__=interp2app(W_DictProxyObject.descr_new),
@@ -73,5 +86,6 @@
keys=interp2app(W_DictProxyObject.keys_w),
values=interp2app(W_DictProxyObject.values_w),
items=interp2app(W_DictProxyObject.items_w),
- copy=interp2app(W_DictProxyObject.copy_w)
+ copy=interp2app(W_DictProxyObject.copy_w),
+ **cmp_methods
)
More information about the pypy-commit
mailing list