[pypy-svn] r31383 - in pypy/dist/pypy/module/mmap: . test

rhymes at codespeak.net rhymes at codespeak.net
Thu Aug 17 21:26:07 CEST 2006


Author: rhymes
Date: Thu Aug 17 21:26:03 2006
New Revision: 31383

Modified:
   pypy/dist/pypy/module/mmap/interp_mmap.py
   pypy/dist/pypy/module/mmap/test/test_mmap.py
Log:
make mmap more pythonic. Not it has special methods.

Modified: pypy/dist/pypy/module/mmap/interp_mmap.py
==============================================================================
--- pypy/dist/pypy/module/mmap/interp_mmap.py	(original)
+++ pypy/dist/pypy/module/mmap/interp_mmap.py	Thu Aug 17 21:26:03 2006
@@ -511,15 +511,13 @@
         #     raise WinError(dwErrCode)
     resize.unwrap_spec = ['self', int]
     
-    ## XXX: The following is a series of "special" methods turned into regular
-    # because the ext compiler does not support __xx__ methods right now.
-    def get_len(self):
+    def __len__(self):
         self._check_valid()
         
         return self.space.wrap(self._size)
-    get_len.unwrap_spec = ['self']
+    __len__.unwrap_spec = ['self']
     
-    def get_item(self, index):
+    def __getitem__(self, index):
         self._check_valid()
 
         # XXX this does not support slice() instances
@@ -529,9 +527,9 @@
         except IndexError:
             raise OperationError(self.space.w_IndexError,
                 self.space.wrap("mmap index out of range"))
-    get_item.unwrap_spec = ['self', int]
+    __getitem__.unwrap_spec = ['self', int]
     
-    def set_item(self, index, value):
+    def __setitem__(self, index, value):
         self._check_valid()
         self._check_writeable()
         
@@ -553,30 +551,30 @@
         
         p = c_char_p(str_data)
         libc.memcpy(self._data, p, len(str_data))
-    set_item.unwrap_spec = ['self', int, str]
+    __setitem__.unwrap_spec = ['self', int, str]
     
-    def del_item(self, index):
+    def __delitem__(self, index):
         self._check_valid()
         
         # XXX this does not support slice() instances (does it matter?)
         
         raise OperationError(self.space.w_TypeError,
             self.space.wrap("mmap object doesn't support item deletion"))
-    del_item.unwrap_spec = ['self', int]
+    __delitem__.unwrap_spec = ['self', int]
     
-    def add(self, w_other):
+    def __add__(self, w_other):
         self._check_valid()
         
         raise OperationError(self.space.w_SystemError,
             self.space.wrap("mmaps don't support concatenation"))
-    add.unwrap_spec = ['self', W_Root]
+    __add__.unwrap_spec = ['self', W_Root]
     
-    def mul(self, w_other):
+    def __mul__(self, w_other):
         self._check_valid()
         
         raise OperationError(self.space.w_SystemError,
             self.space.wrap("mmaps don't support repeat operation"))
-    mul.unwrap_spec = ['self', W_Root]
+    __mul__.unwrap_spec = ['self', W_Root]
 
 
 _mmap.typedef = TypeDef("_mmap",
@@ -604,12 +602,15 @@
     move = interp2app(_mmap.move, unwrap_spec=_mmap.move.unwrap_spec),
     resize = interp2app(_mmap.resize, unwrap_spec=_mmap.resize.unwrap_spec),
 
-    get_len = interp2app(_mmap.get_len, unwrap_spec=_mmap.get_len.unwrap_spec),
-    get_item = interp2app(_mmap.get_item, unwrap_spec=_mmap.get_item.unwrap_spec),
-    set_item = interp2app(_mmap.set_item, unwrap_spec=_mmap.set_item.unwrap_spec),
-    del_item = interp2app(_mmap.del_item, unwrap_spec=_mmap.del_item.unwrap_spec),
-    add = interp2app(_mmap.add, unwrap_spec=_mmap.add.unwrap_spec),
-    mul = interp2app(_mmap.mul, unwrap_spec=_mmap.mul.unwrap_spec),
+    __len__ = interp2app(_mmap.__len__, unwrap_spec=_mmap.__len__.unwrap_spec),
+    __getitem__ = interp2app(_mmap.__getitem__,
+        unwrap_spec=_mmap.__getitem__.unwrap_spec),
+    __setitem__ = interp2app(_mmap.__setitem__,
+        unwrap_spec=_mmap.__setitem__.unwrap_spec),
+    __delitem__ = interp2app(_mmap.__delitem__,
+        unwrap_spec=_mmap.__delitem__.unwrap_spec),
+    __add__ = interp2app(_mmap.__add__, unwrap_spec=_mmap.__add__.unwrap_spec),
+    __mul__ = interp2app(_mmap.__mul__, unwrap_spec=_mmap.__mul__.unwrap_spec),
     
 )
 

Modified: pypy/dist/pypy/module/mmap/test/test_mmap.py
==============================================================================
--- pypy/dist/pypy/module/mmap/test/test_mmap.py	(original)
+++ pypy/dist/pypy/module/mmap/test/test_mmap.py	Thu Aug 17 21:26:03 2006
@@ -306,7 +306,7 @@
         f.flush()
 
         m = mmap(f.fileno(), 6)
-        assert m.get_len() == 6
+        assert len(m) == 6
         m.close()
         f.close()
      
@@ -318,12 +318,12 @@
         f.flush()
         
         m = mmap(f.fileno(), 6)
-        fn = lambda: m.get_item("foo")
+        fn = lambda: m["foo"]
         raises(TypeError, fn)
-        fn = lambda: m.get_item(-7)
+        fn = lambda: m[-7]
         raises(IndexError, fn)
-        assert m.get_item(0) == 'f'
-        assert m.get_item(-1) == 'r'
+        assert m[0] == 'f'
+        assert m[-1] == 'r'
         # sl = slice(1, 2)
         # assert m.get_item(sl) == 'o'
         m.close()
@@ -337,14 +337,14 @@
         f.flush()
 
         m = mmap.mmap(f.fileno(), 6, access=mmap.ACCESS_READ)
-        fn = lambda: m.set_item(1, 'a')
+        def fn(): m[1] = 'a'
         raises(TypeError, fn)
         m = mmap.mmap(f.fileno(), 6, access=mmap.ACCESS_WRITE)
-        fn = lambda: m.set_item("foo", 'a')
+        def fn(): m["foo"] = 'a'
         raises(TypeError, fn)
-        fn = lambda: m.set_item(-7, 'a')
+        def fn(): m[-7] = 'a'
         raises(IndexError, fn)
-        fn = lambda: m.set_item(0, 'ab')
+        def fn(): m[0] = 'ab'
         raises(IndexError, fn)
         # def f(m): m[1:3] = u'xx'
         # py.test.raises(IndexError, f, m)
@@ -356,9 +356,9 @@
         # m[1:3] = 'xx'
         # assert m.read(6) == "fxxbar"
         # m.seek(0)
-        m.set_item(0, 'x')
-        assert m.get_item(0) == 'x'
-        m.set_item(-6, 'y')
+        m[0] = 'x'
+        assert m[0] == 'x'
+        m[-6] = 'y'
         data = m.read(6)
         assert data == "yoobar" # yxxbar with slice's stuff
         m.close()
@@ -372,11 +372,11 @@
         f.flush()
         
         m = mmap(f.fileno(), 6)
-        fn = lambda: m.del_item("foo")
+        def fn(): del m["foo"]
         raises(TypeError, fn)
         # def f(m): del m[1:3]
         # py.test.raises(TypeError, f, m)
-        fn = lambda: m.del_item(1)
+        def fn(): del m[1]
         raises(TypeError, fn)
         m.close()
         f.close()
@@ -389,12 +389,12 @@
         f.flush()
         
         m = mmap(f.fileno(), 6)
-        fn = lambda: m.add(1)
+        def fn(): m + 1
         raises(SystemError, fn)
-        # def f(m): m += 1
-        # py.test.raises(SystemError, f, m)
-        # f = lambda: 1 + m
-        # py.test.raises(TypeError, f)
+        def fn(m): m += 1
+        raises(SystemError, fn, m)
+        def fn(): 1 + m
+        raises(TypeError, fn)
         m.close()
         f.close()
 
@@ -406,13 +406,12 @@
         f.flush()
         
         m = mmap(f.fileno(), 6)
-        fn = lambda: m.mul(1)
+        def fn(): m * 1
         raises(SystemError, fn)
-        # def f(m):
-        #     m *= 1
-        # py.test.raises(SystemError, f, m)
-        # f = lambda: 1 * m
-        # py.test.raises(TypeError, f)
+        def fn(m): m *= 1
+        raises(SystemError, fn, m)
+        def fn(): 1 * m
+        raises(TypeError, fn)
         m.close()
         f.close()
 #         
@@ -442,16 +441,16 @@
     
         # sanity checks
         assert m.find("foo") == PAGESIZE
-        assert m.get_len() == 2 * PAGESIZE
-        assert m.get_item(0) == '\0'
+        assert len(m) == 2 * PAGESIZE
+        assert m[0] == '\0'
         # assert m[0:3] == '\0\0\0'
     
         # modify the file's content
-        m.set_item(0, '3')
+        m[0] = '3'
         # m[PAGESIZE+3:PAGESIZE+3+3] = 'bar'
     
         # check that the modification worked
-        assert m.get_item(0) == '3'
+        assert m[0] == '3'
         # assert m[0:3] == '3\0\0'
         # assert m[PAGESIZE-1:PAGESIZE+7] == '\0foobar\0'
 
@@ -463,17 +462,17 @@
         m.seek(42, 1)
         assert m.tell() == 42
         m.seek(0, 2)
-        assert m.tell() == m.get_len()
+        assert m.tell() == len(m)
         
         raises(ValueError, m.seek, -1)
         raises(ValueError, m.seek, 1, 2)
-        raises(ValueError, m.seek, -m.get_len() - 1, 2)
+        raises(ValueError, m.seek, -len(m) - 1, 2)
         
         # try resizing map
         if not (("darwin" in sys.platform) or ("freebsd" in sys.platform)):
             m.resize(512)
         
-            assert m.get_len() == 512
+            assert len(m) == 512
             raises(ValueError, m.seek, 513, 0)
             
             # check that the underlying file is truncated too
@@ -494,7 +493,7 @@
         # assert m[:] == 'a' * mapsize
         # def f(m): m[:] = 'b' * mapsize
         # py.test.raises(TypeError, f, m)
-        fn = lambda: m.set_item(0, 'b')
+        def fn(): m[0] = 'b'
         raises(TypeError, fn)
         def fn(m): m.seek(0, 0); m.write("abc")
         raises(TypeError, fn, m)
@@ -586,7 +585,7 @@
         f.close()
         f = open(filename, "rb+")
         m = mmap.mmap(f.fileno(), 0)
-        assert m.get_len() == 2**16
+        assert len(m) == 2**16
         assert m.read(2**16) == 2**16 * "m"
         m.close()
         f.close()



More information about the Pypy-commit mailing list