Author: Philip Jenvey <pjen...@underboss.org>
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
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to