[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