[pypy-commit] pypy default: fix test_shelve
fijal
noreply at buildbot.pypy.org
Thu May 15 17:33:36 CEST 2014
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch:
Changeset: r71530:e0db2ffd444e
Date: 2014-05-15 17:32 +0200
http://bitbucket.org/pypy/pypy/changeset/e0db2ffd444e/
Log: fix test_shelve
diff --git a/lib_pypy/gdbm.py b/lib_pypy/gdbm.py
--- a/lib_pypy/gdbm.py
+++ b/lib_pypy/gdbm.py
@@ -53,6 +53,7 @@
def __init__(self, filename, iflags, mode):
res = lib.gdbm_open(filename, 0, iflags, mode, ffi.NULL)
+ self.size = -1
if not res:
self._raise_from_errno()
self.ll_dbm = res
@@ -67,8 +68,14 @@
raise error(os.strerror(ffi.errno))
raise error(lib.gdbm_strerror(lib.gdbm_errno))
+ def __len__(self):
+ if self.size < 0:
+ self.size = len(self.keys())
+ return self.size
+
def __setitem__(self, key, value):
self._check_closed()
+ self._size = -1
r = lib.gdbm_store(self.ll_dbm, _fromstr(key), _fromstr(value),
lib.GDBM_REPLACE)
if r < 0:
More information about the pypy-commit
mailing list