[pypy-svn] r27047 - in pypy/dist/pypy: module/stackless objspace/std objspace/std/test
stephan at codespeak.net
stephan at codespeak.net
Wed May 10 13:31:13 CEST 2006
Author: stephan
Date: Wed May 10 13:31:10 2006
New Revision: 27047
Added:
pypy/dist/pypy/objspace/std/test/test_set.py
Modified:
pypy/dist/pypy/module/stackless/__init__.py
pypy/dist/pypy/objspace/std/frozensettype.py
pypy/dist/pypy/objspace/std/model.py
pypy/dist/pypy/objspace/std/objspace.py
pypy/dist/pypy/objspace/std/setobject.py
pypy/dist/pypy/objspace/std/settype.py
Log:
removed the WITHSET switch.
Modified: pypy/dist/pypy/module/stackless/__init__.py
==============================================================================
--- pypy/dist/pypy/module/stackless/__init__.py (original)
+++ pypy/dist/pypy/module/stackless/__init__.py Wed May 10 13:31:10 2006
@@ -10,7 +10,7 @@
}
interpleveldefs = {
- 'tasklet' : 'interp_stackless.tasklet',
+ #'tasklet' : 'interp_stackless.tasklet',
'coroutine' : 'coroutine.AppCoroutine',
}
Modified: pypy/dist/pypy/objspace/std/frozensettype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/frozensettype.py (original)
+++ pypy/dist/pypy/objspace/std/frozensettype.py Wed May 10 13:31:10 2006
@@ -4,7 +4,6 @@
from pypy.objspace.std.stdtypedef import StdObjSpaceMultiMethod as SMM
from pypy.interpreter.gateway import NoneNotWrapped
from pypy.interpreter import gateway
-from pypy.objspace.std.model import WITHSET
frozenset_copy = SMM('copy', 1)
frozenset_difference = SMM('difference', 2)
@@ -23,7 +22,7 @@
if _is_frozenset_exact(w_iterable):
return w_iterable
w_obj = space.allocate_instance(W_FrozensetObject, w_frozensettype)
- W_FrozensetObject.__init__(w_obj, None)
+ W_FrozensetObject.__init__(w_obj, space, None)
return w_obj
Modified: pypy/dist/pypy/objspace/std/model.py
==============================================================================
--- pypy/dist/pypy/objspace/std/model.py (original)
+++ pypy/dist/pypy/objspace/std/model.py Wed May 10 13:31:10 2006
@@ -8,7 +8,6 @@
import pypy.interpreter.pycode
import pypy.interpreter.special
-WITHSET = False
WITHSMALLINT = False
class StdTypeModel:
@@ -22,9 +21,8 @@
from pypy.objspace.std.inttype import int_typedef
from pypy.objspace.std.floattype import float_typedef
from pypy.objspace.std.complextype import complex_typedef
- if WITHSET:
- from pypy.objspace.std.settype import set_typedef
- from pypy.objspace.std.frozensettype import frozenset_typedef
+ from pypy.objspace.std.settype import set_typedef
+ from pypy.objspace.std.frozensettype import frozenset_typedef
from pypy.objspace.std.tupletype import tuple_typedef
from pypy.objspace.std.listtype import list_typedef
from pypy.objspace.std.dicttype import dict_typedef
@@ -48,8 +46,7 @@
from pypy.objspace.std import intobject
from pypy.objspace.std import floatobject
from pypy.objspace.std import complexobject
- if WITHSET:
- from pypy.objspace.std import setobject
+ from pypy.objspace.std import setobject
if WITHSMALLINT:
from pypy.objspace.std import smallintobject
from pypy.objspace.std import tupleobject
@@ -91,10 +88,9 @@
pypy.interpreter.special.Ellipsis: [],
}
self.typeorder[complexobject.W_ComplexObject] = []
- if WITHSET:
- self.typeorder[setobject.W_SetObject] = []
- self.typeorder[setobject.W_FrozensetObject] = []
- self.typeorder[setobject.W_SetIterObject] = []
+ self.typeorder[setobject.W_SetObject] = []
+ self.typeorder[setobject.W_FrozensetObject] = []
+ self.typeorder[setobject.W_SetIterObject] = []
if WITHSMALLINT:
self.typeorder[smallintobject.W_SmallIntObject] = []
for type in self.typeorder:
Modified: pypy/dist/pypy/objspace/std/objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/std/objspace.py (original)
+++ pypy/dist/pypy/objspace/std/objspace.py Wed May 10 13:31:10 2006
@@ -7,7 +7,6 @@
from pypy.tool.cache import Cache
from pypy.tool.sourcetools import func_with_new_name
from pypy.objspace.std.model import W_Object, UnwrapError
-from pypy.objspace.std.model import WITHSET
from pypy.objspace.std.model import W_ANY, StdObjSpaceMultiMethod, StdTypeModel
from pypy.objspace.std.multimethod import FailedToImplement
from pypy.objspace.descroperation import DescrOperation
@@ -301,14 +300,12 @@
return W_ComplexObject(x.real, x.imag)
if isinstance(x, set):
- if WITHSET:
- wrappeditems = [self.wrap(item) for item in x]
- return W_SetObject(wrappeditems)
+ wrappeditems = [self.wrap(item) for item in x]
+ return W_SetObject(self, wrappeditems)
if isinstance(x, frozenset):
- if WITHSET:
- wrappeditems = [self.wrap(item) for item in x]
- return W_FrozensetObject(wrappeditems)
+ wrappeditems = [self.wrap(item) for item in x]
+ return W_FrozensetObject(self, wrappeditems)
if x is __builtin__.Ellipsis:
# '__builtin__.Ellipsis' avoids confusion with special.Ellipsis
@@ -356,12 +353,11 @@
def newcomplex(self, realval, imagval):
return W_ComplexObject(realval, imagval)
- if WITHSET:
- def newset(self, rdict_w):
- return W_SetObject(rdict_w)
+ def newset(self, rdict_w):
+ return W_SetObject(self, rdict_w)
- def newfrozenset(self, rdict_w):
- return W_FrozensetObject(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/dist/pypy/objspace/std/setobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/setobject.py (original)
+++ pypy/dist/pypy/objspace/std/setobject.py Wed May 10 13:31:10 2006
@@ -1,6 +1,5 @@
from pypy.objspace.std.objspace import W_Object, OperationError
from pypy.objspace.std.objspace import registerimplementation, register_all
-from pypy.objspace.std.model import WITHSET
from pypy.objspace.std.stdtypedef import StdObjSpaceMultiMethod
from pypy.rpython.objectmodel import r_dict
from pypy.rpython.rarithmetic import intmask, r_uint
@@ -8,7 +7,7 @@
class W_BaseSetObject(W_Object):
- def __init__(w_self, setdata=None):
+ def __init__(w_self, space, setdata=None):
if setdata is None:
w_self.setdata = r_dict(space.eq_w, space.hash_w)
else:
@@ -23,9 +22,9 @@
#return space.call(space.type(w_self),W_SetIterObject(rdict_w))
objtype = type(w_self)
if objtype is W_SetObject:
- obj = W_SetObject(rdict_w)
+ obj = W_SetObject(space, rdict_w)
elif objtype is W_FrozensetObject:
- obj = W_FrozensetObject(rdict_w)
+ obj = W_FrozensetObject(space, rdict_w)
else:
itemiterator = space.iter(W_SetIterObject(rdict_w))
obj = space.call_function(space.type(w_self),itemiterator)
@@ -37,8 +36,8 @@
class W_FrozensetObject(W_BaseSetObject):
from pypy.objspace.std.frozensettype import frozenset_typedef as typedef
- def __init__(w_self, setdata):
- W_BaseSetObject.__init__(w_self, setdata)
+ def __init__(w_self, space, setdata):
+ W_BaseSetObject.__init__(w_self, space, setdata)
w_self.hash = -1
registerimplementation(W_SetObject)
Modified: pypy/dist/pypy/objspace/std/settype.py
==============================================================================
--- pypy/dist/pypy/objspace/std/settype.py (original)
+++ pypy/dist/pypy/objspace/std/settype.py Wed May 10 13:31:10 2006
@@ -1,10 +1,9 @@
from pypy.interpreter.error import OperationError
from pypy.objspace.std.objspace import register_all
-from pypy.objspace.std.stdtypedef import StdTypeDef, newmethod
+from pypy.objspace.std.stdtypedef import StdTypeDef, newmethod, no_hash_descr
from pypy.objspace.std.stdtypedef import StdObjSpaceMultiMethod as SMM
from pypy.interpreter.gateway import NoneNotWrapped
from pypy.interpreter import gateway
-from pypy.objspace.std.model import WITHSET
set_add = SMM('add', 2)
set_clear = SMM('clear', 1)
@@ -29,7 +28,7 @@
def descr__new__(space, w_settype, __args__):
from pypy.objspace.std.setobject import W_SetObject
w_obj = space.allocate_instance(W_SetObject, w_settype)
- W_SetObject.__init__(w_obj, None)
+ W_SetObject.__init__(w_obj, space, None)
return w_obj
set_typedef = StdTypeDef("set",
Added: pypy/dist/pypy/objspace/std/test/test_set.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/objspace/std/test/test_set.py Wed May 10 13:31:10 2006
@@ -0,0 +1,56 @@
+"""
+The main test for the set implementation is located
+at:
+ pypy-dist/lib-python/modified-2.4.1/test/test_set.py
+ go there and invoke
+ ../../../pypy/bin/py.py test_set.py
+This file just contains some basic tests that make sure, the implementation
+is not too wrong.
+"""
+import autopath
+import py.test
+from pypy.objspace.std.setobject import W_SetObject, W_FrozensetObject
+from pypy.objspace.std.setobject import _initialize_set
+from pypy.objspace.std.setobject import set_intersection__Set_Set
+from pypy.objspace.std.setobject import set_intersection__Set_ANY
+from pypy.objspace.std.setobject import eq__Set_Set
+
+letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+class W_SubSetObject(W_SetObject):pass
+
+class TestW_SetObject:
+
+ def setup_method(self, method):
+ self.word = self.space.wrap('simsalabim')
+ self.otherword = self.space.wrap('madagascar')
+ self.letters = self.space.wrap(letters)
+ self.true = self.space.w_True
+ self.false = self.space.w_False
+
+ def test_and(self):
+ s = W_SetObject(self.space, None)
+ _initialize_set(self.space, s, self.word)
+ t0 = W_SetObject(self.space, None)
+ _initialize_set(self.space, t0, self.otherword)
+ t1 = W_FrozensetObject(self.space, None)
+ _initialize_set(self.space, t1, self.otherword)
+ r0 = set_intersection__Set_Set(self.space, s, t0)
+ r1 = set_intersection__Set_Set(self.space, s, t1)
+ assert eq__Set_Set(self.space, r0, r1) == self.true
+ sr = set_intersection__Set_ANY(self.space, s, self.otherword)
+ assert eq__Set_Set(self.space, r0, sr) == self.true
+
+ def test_compare(self):
+ s = W_SetObject(self.space, None)
+ _initialize_set(self.space, s, self.word)
+ t = W_SetObject(self.space, None)
+ _initialize_set(self.space, t, self.word)
+ assert self.space.eq_w(s,t)
+
+class AppTestAppSetTest:
+ def test_subtype(self):
+ class subset(set):pass
+ a = subset()
+ b = a | set('abc')
+ assert type(b) is subset
More information about the Pypy-commit
mailing list