[pypy-svn] r62456 - pypy/trunk/pypy/objspace/std

cfbolz at codespeak.net cfbolz at codespeak.net
Tue Mar 3 13:20:04 CET 2009


Author: cfbolz
Date: Tue Mar  3 13:20:04 2009
New Revision: 62456

Modified:
   pypy/trunk/pypy/objspace/std/objspace.py
   pypy/trunk/pypy/objspace/std/setobject.py
Log:
Removed some code duplication. Fix an error message. Kill the rarely used
space.new[frozen]set.


Modified: pypy/trunk/pypy/objspace/std/objspace.py
==============================================================================
--- pypy/trunk/pypy/objspace/std/objspace.py	(original)
+++ pypy/trunk/pypy/objspace/std/objspace.py	Tue Mar  3 13:20:04 2009
@@ -556,12 +556,6 @@
     def newcomplex(self, realval, imagval):
         return W_ComplexObject(realval, imagval)
 
-    def newset(self, rdict_w):
-        return W_SetObject(self, rdict_w)
-
-    def newfrozenset(self, rdict_w):
-        return W_FrozensetObject(self, rdict_w)
-
     def newlong(self, val): # val is an int
         return W_LongObject.fromint(self, val)
 

Modified: pypy/trunk/pypy/objspace/std/setobject.py
==============================================================================
--- pypy/trunk/pypy/objspace/std/setobject.py	(original)
+++ pypy/trunk/pypy/objspace/std/setobject.py	Tue Mar  3 13:20:04 2009
@@ -76,7 +76,7 @@
         if w_setiter.len != len(content):
             w_setiter.len = -1   # Make this error state sticky
             raise OperationError(space.w_RuntimeError,
-                     space.wrap("dictionary changed size during iteration"))
+                     space.wrap("Set changed size during iteration"))
         # look for the next entry
         w_result = w_setiter.next_entry()
         if w_result is not None:
@@ -116,7 +116,8 @@
 
 def _convert_set_to_frozenset(space, w_obj):
     if space.is_true(space.isinstance(w_obj, space.w_set)):
-        return space.newfrozenset(make_setdata_from_w_iterable(space, w_obj))
+        return W_FrozensetObject(space,
+                                 make_setdata_from_w_iterable(space, w_obj))
     else:
         return None
 
@@ -197,6 +198,16 @@
 
     return ld, rdict
 
+def _issubset_dict(ldict, rdict):
+    if len(ldict) > len(rdict):
+        return False
+
+    for w_key in ldict:
+        if w_key not in rdict:
+            return False
+    return True
+
+
 #end helper functions
 
 def set_update__Set_Set(space, w_left, w_other):
@@ -327,13 +338,7 @@
     if space.is_w(w_left, w_other):
         return space.w_True
     ld, rd = w_left.setdata, w_other.setdata
-    if len(ld) > len(rd):
-        return space.w_False
-
-    for w_key in ld:
-        if w_key not in rd:
-            return space.w_False
-    return space.w_True
+    return space.wrap(_issubset_dict(ld, rd))
 
 set_issubset__Set_Frozenset = set_issubset__Set_Set
 frozenset_issubset__Frozenset_Set = set_issubset__Set_Set
@@ -344,13 +349,7 @@
         return space.w_True
 
     ld, rd = w_left.setdata, make_setdata_from_w_iterable(space, w_other)
-    if len(ld) > len(rd):
-        return space.w_False
-
-    for w_key in ld:
-        if w_key not in rd:
-            return space.w_False
-    return space.w_True
+    return space.wrap(_issubset_dict(ld, rd))
 
 frozenset_issubset__Frozenset_ANY = set_issubset__Set_ANY
 
@@ -365,13 +364,7 @@
         return space.w_True
 
     ld, rd = w_left.setdata, w_other.setdata
-    if len(ld) < len(rd):
-        return space.w_False
-
-    for w_key in rd:
-        if w_key not in ld:
-            return space.w_False
-    return space.w_True
+    return space.wrap(_issubset_dict(rd, ld))
 
 set_issuperset__Set_Frozenset = set_issuperset__Set_Set
 set_issuperset__Frozenset_Set = set_issuperset__Set_Set
@@ -382,13 +375,7 @@
         return space.w_True
 
     ld, rd = w_left.setdata, make_setdata_from_w_iterable(space, w_other)
-    if len(ld) < len(rd):
-        return space.w_False
-
-    for w_key in rd:
-        if w_key not in ld:
-            return space.w_False
-    return space.w_True
+    return space.wrap(_issubset_dict(rd, ld))
 
 frozenset_issuperset__Frozenset_ANY = set_issuperset__Set_ANY
 



More information about the Pypy-commit mailing list