[pypy-commit] pypy set-strategies: fixed recent popitem changes

l.diekmann noreply at buildbot.pypy.org
Thu Nov 10 13:51:07 CET 2011


Author: Lukas Diekmann <lukas.diekmann at uni-duesseldorf.de>
Branch: set-strategies
Changeset: r49197:b6937fff521d
Date: 2011-08-23 11:34 +0200
http://bitbucket.org/pypy/pypy/changeset/b6937fff521d/

Log:	fixed recent popitem changes

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -567,12 +567,13 @@
     def popitem(self, w_set):
         storage = self.cast_from_void_star(w_set.sstorage)
         try:
+            # this returns a tuple because internally sets are dicts
             result = storage.popitem()
         except KeyError:
             # strategy may still be the same even if dict is empty
             raise OperationError(self.space.w_KeyError,
                             self.space.wrap('pop from an empty set'))
-        return self.wrap(result)
+        return self.wrap(result[0])
 
 class IntegerSetStrategy(AbstractUnwrappedSetStrategy, SetStrategy):
     cast_to_void_star, cast_from_void_star = rerased.new_erasing_pair("integer")
@@ -1044,17 +1045,7 @@
     return space.wrap(hash)
 
 def set_pop__Set(space, w_left):
-    #XXX move this to strategy so we don't have to
-    #    wrap all items only to get the first one
-    #XXX use popitem
     return w_left.popitem()
-    for w_key in w_left.getkeys():
-        break
-    else:
-        raise OperationError(space.w_KeyError,
-                                space.wrap('pop from an empty set'))
-    w_left.delitem(w_key)
-    return w_key
 
 def and__Set_Set(space, w_left, w_other):
     new_set = w_left.intersect(w_other)
diff --git a/pypy/objspace/std/test/test_setobject.py b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -640,7 +640,7 @@
         assert self.FakeInt(5) in s
 
     def test_fakeobject_and_pop(self):
-        s = set([1,2,3,self.FakeInt(4), 5])
+        s = set([1,2,3,self.FakeInt(4),5])
         assert s.pop()
         assert s.pop()
         assert s.pop()


More information about the pypy-commit mailing list