Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r64291:b1432cb778e6
Date: 2013-05-17 16:43 -0700
http://bitbucket.org/pypy/pypy/changeset/b1432cb778e6/
Log: merge default
diff --git a/pypy/objspace/std/dictmultiobject.py
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -1276,6 +1276,14 @@
def descr_len(self, space):
return space.len(self.w_dict)
+class SetLikeDictView(object):
+ _mixin_ = True
+
+ def descr_sub(self, space, w_otherview):
+ w_set = space.call_function(space.w_set, self)
+ space.call_method(w_set, "difference_update", w_otherview)
+ return w_set
+
def descr_and(self, space, w_otherview):
w_set = space.call_function(space.w_set, self)
space.call_method(w_set, "intersection_update", w_otherview)
@@ -1291,11 +1299,11 @@
space.call_method(w_set, "symmetric_difference_update", w_otherview)
return w_set
-class W_DictViewItemsObject(W_DictViewObject):
+class W_DictViewItemsObject(W_DictViewObject, SetLikeDictView):
def descr_iter(self, space):
return W_DictMultiIterItemsObject(space, self.w_dict.iteritems())
-class W_DictViewKeysObject(W_DictViewObject):
+class W_DictViewKeysObject(W_DictViewObject, SetLikeDictView):
def descr_iter(self, space):
return W_DictMultiIterKeysObject(space, self.w_dict.iterkeys())
@@ -1309,6 +1317,7 @@
__eq__ = interp2app(W_DictViewItemsObject.descr_eq),
__len__ = interp2app(W_DictViewItemsObject.descr_len),
__iter__ = interp2app(W_DictViewItemsObject.descr_iter),
+ __sub__ = interp2app(W_DictViewItemsObject.descr_sub),
__and__ = interp2app(W_DictViewItemsObject.descr_and),
__or__ = interp2app(W_DictViewItemsObject.descr_or),
__xor__ = interp2app(W_DictViewItemsObject.descr_xor)
@@ -1320,6 +1329,7 @@
__eq__ = interp2app(W_DictViewKeysObject.descr_eq),
__len__ = interp2app(W_DictViewKeysObject.descr_len),
__iter__ = interp2app(W_DictViewKeysObject.descr_iter),
+ __sub__ = interp2app(W_DictViewKeysObject.descr_sub),
__and__ = interp2app(W_DictViewKeysObject.descr_and),
__or__ = interp2app(W_DictViewKeysObject.descr_or),
__xor__ = interp2app(W_DictViewKeysObject.descr_xor)
@@ -1331,7 +1341,4 @@
__eq__ = interp2app(W_DictViewValuesObject.descr_eq),
__len__ = interp2app(W_DictViewValuesObject.descr_len),
__iter__ = interp2app(W_DictViewValuesObject.descr_iter),
- __and__ = interp2app(W_DictViewValuesObject.descr_and),
- __or__ = interp2app(W_DictViewValuesObject.descr_or),
- __xor__ = interp2app(W_DictViewValuesObject.descr_xor)
)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit