[pypy-svn] r75832 - in pypy/branch/interplevel-array/pypy/module/array: . test

hakanardo at codespeak.net hakanardo at codespeak.net
Mon Jul 5 13:56:45 CEST 2010


Author: hakanardo
Date: Mon Jul  5 13:56:43 2010
New Revision: 75832

Modified:
   pypy/branch/interplevel-array/pypy/module/array/__init__.py
   pypy/branch/interplevel-array/pypy/module/array/interp_array.py
   pypy/branch/interplevel-array/pypy/module/array/test/test_array.py
Log:
unrolling_iterable and some whitespace maniac to keep pep8 happy

Modified: pypy/branch/interplevel-array/pypy/module/array/__init__.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/array/__init__.py	(original)
+++ pypy/branch/interplevel-array/pypy/module/array/__init__.py	Mon Jul  5 13:56:43 2010
@@ -1,13 +1,13 @@
 # Package initialisation
 from pypy.interpreter.mixedmodule import MixedModule
 
+
 class Module(MixedModule):
 
     appleveldefs = {
     }
-    
+
     interpleveldefs = {
-        'array'          : 'interp_array.array',
-        'sized_array'    : 'interp_array.sized_array',
+        'array':       'interp_array.array',
+        'sized_array': 'interp_array.sized_array',
     }
-

Modified: pypy/branch/interplevel-array/pypy/module/array/interp_array.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/array/interp_array.py	(original)
+++ pypy/branch/interplevel-array/pypy/module/array/interp_array.py	Mon Jul  5 13:56:43 2010
@@ -5,18 +5,21 @@
 from pypy.interpreter.gateway import interp2app, ObjSpace, W_Root
 from pypy.rlib.jit import dont_look_inside
 from pypy.rlib import rgc
-from pypy.rlib.rbigint import rbigint
+from pypy.rlib.unroll import unrolling_iterable
+
+FloatArray = lltype.GcArray(lltype.Float)
 
-FloatArray=lltype.GcArray(lltype.Float)
 
 class W_SizedFloatArray(Wrappable):
     @dont_look_inside
     def __init__(self, space, size):
-        self.space=space
-        self.size=size
+        self.space = space
+        self.size = size
         print "malloc"
-        #self.buffer = lltype.malloc(rffi.DOUBLEP.TO, size, flavor='raw', zero=True)
-        #self.buffer = rgc.malloc_nonmovable(lltype.GcArray(lltype.Float), size)
+        #self.buffer = lltype.malloc(rffi.DOUBLEP.TO, size, flavor='raw',
+        #                            zero=True)
+        #self.buffer = rgc.malloc_nonmovable(lltype.GcArray(lltype.Float),
+        #                                    size)
         self.buffer = lltype.malloc(FloatArray, size, zero=True)
         print "buf: ", self.buffer
 
@@ -27,33 +30,33 @@
     def descr_getitem(self, idx):
         return self.space.wrap(self.buffer[idx])
     descr_getitem.unwrap_spec = ['self', int]
-    
+
     def descr_setitem(self, idx, val):
-        self.buffer[idx]=val
+        self.buffer[idx] = val
     descr_setitem.unwrap_spec = ['self', int, float]
 
 W_SizedFloatArray.typedef = TypeDef(
      'SizedFloatArray',
-     __getitem__ = interp2app(W_SizedFloatArray.descr_getitem),
-     __setitem__ = interp2app(W_SizedFloatArray.descr_setitem),
+    __getitem__=interp2app(W_SizedFloatArray.descr_getitem),
+     __setitem__=interp2app(W_SizedFloatArray.descr_setitem),
 )
-        
-def sized_array(space,size):
+
+
+def sized_array(space, size):
     return W_SizedFloatArray(space, size)
-sized_array.unwrap_spec=(ObjSpace, int)
+sized_array.unwrap_spec = (ObjSpace, int)
 
 
 class TypeCode(object):
     def __init__(self, itemtype, unwrap, canoverflow=False, signed=False):
-        self.itemtype=itemtype
+        self.itemtype = itemtype
         if itemtype is lltype.SingleFloat:
-            self.bytes=4
+            self.bytes = 4
         else:
             self.bytes = rffi.sizeof(itemtype)
-        self.unwrap=unwrap
+        self.unwrap = unwrap
         self.signed = signed
         self.canoverflow = canoverflow
-        
 
 
 types = {
@@ -70,61 +73,67 @@
     'f': TypeCode(lltype.SingleFloat, 'float_w'),
     'd': TypeCode(lltype.Float,       'float_w'),
     }
+unroll_typecodes = unrolling_iterable(types.keys())
+
 
 class W_Array(Wrappable):
     def __init__(self, space, typecode):
         if len(typecode) != 1:
-            msg='array() argument 1 must be char, not str'
-            raise OperationError(space.w_TypeError,space.wrap(msg))
+            msg = 'array() argument 1 must be char, not str'
+            raise OperationError(space.w_TypeError, space.wrap(msg))
         if typecode not in  'cbBuhHiIlLfd':
-            msg='bad typecode (must be c, b, B, u, h, H, i, I, l, L, f or d)'
-            raise OperationError(space.w_ValueError,space.wrap(msg))
-        self.space=space
-        self.typecode=typecode
-        self.len=0
-        self.buffer=None
+            msg = 'bad typecode (must be c, b, B, u, h, H, i, I, l, L, f or d)'
+            raise OperationError(space.w_ValueError, space.wrap(msg))
+        self.space = space
+        self.typecode = typecode
+        self.len = 0
+        self.buffer = None
         self.itemsize = types[typecode].bytes
 
-    def item_w(self, w_item):        
-        space=self.space
-        tc=types[self.typecode]
-        unwrap=getattr(space, tc.unwrap)
-        item=unwrap(w_item)
-        if  tc.unwrap=='bigint_w':
-            try:
-                if tc.signed: item=item.tolonglong()
-                else: item=item.toulonglong()
-            except (ValueError, OverflowError):
-                msg='unsigned %d-byte integer out of range'%tc.bytes
-                raise OperationError(space.w_OverflowError, space.wrap(msg))    
-
-        if tc.canoverflow:
-            msg=None
-            if tc.signed:
-                if item<-2**(tc.bytes*8)/2:
-                    msg='signed %d-byte integer is less than minimum'%tc.bytes
-                elif item>2**(tc.bytes*8)/2-1:
-                    msg='signed %d-byte integer is greater than maximum'%tc.bytes
-            else:
-                if item<0:
-                    msg='unsigned %d-byte integer is less than minimum'%tc.bytes
-                elif item>2**(tc.bytes*8)-1:
-                    msg='unsigned %d-byte integer is greater than maximum'%tc.bytes
-            if msg is not None:
-                raise OperationError(space.w_OverflowError, space.wrap(msg))
-        return rffi.cast(tc.itemtype, item)
+    def item_w(self, w_item):
+        space = self.space
+        for c in unroll_typecodes:
+            if self.typecode == c:
+                tc = types[c]
+                unwrap = getattr(space, tc.unwrap)
+                item = unwrap(w_item)
+                if  tc.unwrap == 'bigint_w':
+                    try:
+                        if tc.signed:
+                            item = item.tolonglong()
+                        else:
+                            item = item.toulonglong()
+                    except (ValueError, OverflowError):
+                        msg = 'unsigned %d-byte integer out of range' % tc.bytes
+                        raise OperationError(space.w_OverflowError, space.wrap(msg))
+
+                if tc.canoverflow:
+                    msg = None
+                    if tc.signed:
+                        if item < -2 ** (tc.bytes * 8) / 2:
+                            msg = 'signed %d-byte integer is less than minimum' % tc.bytes
+                        elif item > 2 ** (tc.bytes * 8) / 2 - 1:
+                            msg = 'signed %d-byte integer is greater than maximum' % tc.bytes
+                    else:
+                        if item < 0:
+                            msg = 'unsigned %d-byte integer is less than minimum' % tc.bytes
+                        elif item > 2 ** (tc.bytes * 8) - 1:
+                            msg = 'unsigned %d-byte integer is greater than maximum' % tc.bytes
+                    if msg is not None:
+                        raise OperationError(space.w_OverflowError, space.wrap(msg))
+                return rffi.cast(tc.itemtype, item)
 
     def setlen(self, size):
-        new_buffer=lltype.malloc(lltype.GcArray(types[self.typecode].itemtype), size)
+        new_buffer = lltype.malloc(lltype.GcArray(types[self.typecode].itemtype), size)
         for i in range(self.len):
-            new_buffer[i]=self.buffer[i]
-        self.buffer=new_buffer
-        self.len=size
-
-    def descr_append(self,w_x):
-        x=self.item_w(w_x)
-        self.setlen(self.len+1)
-        self.buffer[self.len-1]=x
+            new_buffer[i] = self.buffer[i]
+        self.buffer = new_buffer
+        self.len = size
+
+    def descr_append(self, w_x):
+        x = self.item_w(w_x)
+        self.setlen(self.len + 1)
+        self.buffer[self.len - 1] = x
     descr_append.unwrap_spec = ['self', W_Root]
 
     def descr_extend(self, w_initializer):
@@ -139,22 +148,21 @@
                 break
             self.descr_append(w_item)
     descr_extend.unwrap_spec = ['self', W_Root]
-        
 
     def descr_getitem(self, idx):
         item = self.buffer[idx]
         if self.typecode in ('b', 'B', 'h', 'H', 'i', 'l'):
-            item=rffi.cast(lltype.Signed, item)
+            item = rffi.cast(lltype.Signed, item)
         if self.typecode == 'f':
-            item=float(item)
+            item = float(item)
         return self.space.wrap(item)
     descr_getitem.unwrap_spec = ['self', int]
 
     def descr_setitem(self, idx, w_item):
-        item=self.item_w(w_item)
-        self.buffer[idx]=item
+        item = self.item_w(w_item)
+        self.buffer[idx] = item
     descr_setitem.unwrap_spec = ['self', int, W_Root]
-    
+
     def descr_len(self):
         return self.space.wrap(self.len)
     descr_len.unwrap_spec = ['self']
@@ -166,7 +174,7 @@
 def descr_itemsize(space, self):
     return space.wrap(self.itemsize)
 
-W_Array.typedef=TypeDef(
+W_Array.typedef = TypeDef(
     'Array',
     append      = interp2app(W_Array.descr_append),
     extend      = interp2app(W_Array.descr_extend),
@@ -176,13 +184,12 @@
     itemsize    = GetSetProperty(descr_itemsize, cls=W_Array)
 )
 
+
 def array(space, typecode, w_initializer=None):
-    a=W_Array(space, typecode)
+    a = W_Array(space, typecode)
     if w_initializer is not None:
         if not space.is_w(w_initializer, space.w_None):
-            a.descr_extend(w_initializer) #FIXME: use fromlist, fromstring, ...
+            a.descr_extend(w_initializer)  # FIXME: use fromlist, fromstring, ...
 
     return a
-    
-array.unwrap_spec=(ObjSpace, str, W_Root)
-    
+array.unwrap_spec = (ObjSpace, str, W_Root)

Modified: pypy/branch/interplevel-array/pypy/module/array/test/test_array.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/array/test/test_array.py	(original)
+++ pypy/branch/interplevel-array/pypy/module/array/test/test_array.py	Mon Jul  5 13:56:43 2010
@@ -1,5 +1,6 @@
 from pypy.conftest import gettestobjspace
 
+
 class AppTestSizedArray:
     def setup_class(cls):
         cls.space = gettestobjspace(usemodules=('array',))
@@ -9,9 +10,10 @@
         """)
 
     def test_simple(self):
-        a=self.sized_array(10)
-        a[5]=7.42
-        assert a[5]==7.42
+        a = self.sized_array(10)
+        a[5] = 7.42
+        assert a[5] == 7.42
+
 
 class AppTestArray:
     def setup_class(cls):
@@ -26,113 +28,102 @@
         raises(TypeError, self.array, 1)
         raises(ValueError, self.array, 'q')
 
-        a=self.array('c')
+        a = self.array('c')
         raises(TypeError, a.append, 7)
         a.append('h')
         assert a[0] == 'h'
         assert type(a[0]) is str
         assert len(a) == 1
 
-        a=self.array('u')
+        a = self.array('u')
         raises(TypeError, a.append, 7)
         a.append(unicode('h'))
         assert a[0] == unicode('h')
         assert type(a[0]) is unicode
         assert len(a) == 1
 
-        a=self.array('c', ('a', 'b', 'c'))
-        assert a[0]=='a'
-        assert a[1]=='b'
-        assert a[2]=='c'
+        a = self.array('c', ('a', 'b', 'c'))
+        assert a[0] == 'a'
+        assert a[1] == 'b'
+        assert a[2] == 'c'
         assert len(a) == 3
 
     def test_value_range(self):
-        values=(-129, 128, -128, 127, 0, 255, -1, 256,
-                -32768, 32767, -32769, 32768, 65535, 65536,
-                -2147483647, -2147483648, 2147483647, 4294967295, 4294967296,
-                )
+        values = (-129, 128, -128, 127, 0, 255, -1, 256,
+                  -32768, 32767, -32769, 32768, 65535, 65536,
+                  -2147483647, -2147483648, 2147483647, 4294967295, 4294967296,
+                  )
         for bb in (8, 16, 32, 64, 128, 256, 512, 1024):
-            for b in (bb-1, bb, bb+1):
-                values += ( 2**b, 2**b+1, 2**b-1, -2**b, -2**b+1, -2**b-1)
-                
-        for tc,ok,pt in (('b',(  -128,    34,   127),  int),
-                         ('B',(     0,    23,   255),  int),
-                         ('h',(-32768, 30535, 32767),  int),
-                         ('H',(     0, 56783, 65535),  int),
-                         ('i',(-32768, 30535, 32767),  int),
-                         ('I',(     0, 56783, 65535), long),
-                         ('l',(-2**32/2, 34, 2**32/2-1),  int),
-                         ('L',(0, 3523532, 2**32-1), long),
-                         ):
-            a=self.array(tc, ok)
+            for b in (bb - 1, bb, bb + 1):
+                values += (2 ** b, 2 ** b + 1, 2 ** b - 1,
+                           -2 ** b, -2 ** b + 1, -2 ** b - 1)
+
+        for tc, ok, pt in (('b', (  -128,    34,   127),  int),
+                           ('B', (     0,    23,   255),  int),
+                           ('h', (-32768, 30535, 32767),  int),
+                           ('H', (     0, 56783, 65535),  int),
+                           ('i', (-32768, 30535, 32767),  int),
+                           ('I', (     0, 56783, 65535), long),
+                           ('l', (-2 ** 32 / 2, 34, 2 ** 32 / 2 - 1),  int),
+                           ('L', (0, 3523532, 2 ** 32 - 1), long),
+                           ):
+            a = self.array(tc, ok)
             assert len(a) == len(ok)
             for v in ok:
                 a.append(v)
-            for i,v in enumerate(ok*2):
-                assert a[i]==v
+            for i, v in enumerate(ok * 2):
+                assert a[i] == v
                 assert type(a[i]) is pt
             for v in ok:
-                a[1]=v
-                assert a[0]==ok[0]
-                assert a[1]==v
-                assert a[2]==ok[2]
-            assert len(a) == 2*len(ok)
+                a[1] = v
+                assert a[0] == ok[0]
+                assert a[1] == v
+                assert a[2] == ok[2]
+            assert len(a) == 2 * len(ok)
             for v in values:
                 try:
-                    a[1]=v
-                    assert a[0]==ok[0]
-                    assert a[1]==v
-                    assert a[2]==ok[2]
+                    a[1] = v
+                    assert a[0] == ok[0]
+                    assert a[1] == v
+                    assert a[2] == ok[2]
                 except OverflowError:
                     pass
 
     def test_float(self):
-        values=[0, 1, 2.5, -4.25]
+        values = [0, 1, 2.5, -4.25]
         for tc in 'fd':
-            a=self.array(tc, values)
-            assert len(a)==len(values)
-            for i,v in enumerate(values):
-                assert a[i]==v
+            a = self.array(tc, values)
+            assert len(a) == len(values)
+            for i, v in enumerate(values):
+                assert a[i] == v
                 assert type(a[i]) is float
-            a[1]=10.125
-            assert a[0]==0
-            assert a[1]==10.125
-            assert a[2]==2.5
-            assert len(a)==len(values)
+            a[1] = 10.125
+            assert a[0] == 0
+            assert a[1] == 10.125
+            assert a[2] == 2.5
+            assert len(a) == len(values)
 
     def test_itemsize(self):
-        for t in 'cbB': assert(self.array(t).itemsize>=1)
-        for t in 'uhHiI': assert(self.array(t).itemsize>=2)
-        for t in 'lLf': assert(self.array(t).itemsize>=4)
-        for t in 'd': assert(self.array(t).itemsize>=8)
-        
-        inttypes='bhil'
+        for t in 'cbB': assert(self.array(t).itemsize >= 1)
+        for t in 'uhHiI': assert(self.array(t).itemsize >= 2)
+        for t in 'lLf': assert(self.array(t).itemsize >= 4)
+        for t in 'd': assert(self.array(t).itemsize >= 8)
+
+        inttypes = 'bhil'
         for t in inttypes:
-            a=self.array(t, [1,2,3])
-            b=a.itemsize
-            for v in (-2**(8*b)/2, 2**(8*b)/2-1):
-                a[1]=v
-                assert a[0]==1 and a[1]==v and a[2]==3
-            raises(OverflowError, a.append, -2**(8*b)/2-1)
-            raises(OverflowError, a.append, 2**(8*b)/2)
-
-            a=self.array(t.upper(), [1,2,3])
-            b=a.itemsize
-            for v in (0, 2**(8*b)-1):
+            a = self.array(t, [1, 2, 3])
+            b = a.itemsize
+            for v in (-2 ** (8 * b) / 2, 2 ** (8 * b) / 2 - 1):
+                a[1] = v
+                assert a[0] == 1 and a[1] == v and a[2] == 3
+            raises(OverflowError, a.append, -2 ** (8 * b) / 2 - 1)
+            raises(OverflowError, a.append, 2 ** (8 * b) / 2)
+
+            a = self.array(t.upper(), [1, 2, 3])
+            b = a.itemsize
+            for v in (0, 2 ** (8 * b) - 1):
                 print b, v
-                a[1]=v
-                assert a[0]==1 and a[1]==v and a[2]==3
+                a[1] = v
+                assert a[0] == 1 and a[1] == v and a[2] == 3
             raises(OverflowError, a.append, -1)
-            raises(OverflowError, a.append, 2**(8*b))
-
-
-## space.sys.get('modules')
-
-## w_import   = space.builtin.get('__import__')
-## w_array  = space.call(w_import, space.newlist([space.wrap('array')]))
-
-## print w_array
-## space.appexec([], "(): import array; print array.array(7)")
-## print space.appexec([], "(): import array; return array.array(7)")
-## space.appexec([], "(): import array; a=array.array(7); print a[2]")
-## space.appexec([], "(): import array; a=array.array(7); a[2]=7.42; print a[2]")
+            raises(OverflowError, a.append, 2 ** (8 * b))



More information about the Pypy-commit mailing list