Restore performance of some dumb database methods (regression introduced by #19385).

This commit is contained in:
Serhiy Storchaka 2014-05-28 18:49:52 +03:00
parent b49eff25b7
commit 12c575f2f6

View file

@ -216,8 +216,10 @@ class _Database(collections.MutableMapping):
self._commit() self._commit()
def keys(self): def keys(self):
self._verify_open() try:
return list(self._index.keys()) return list(self._index)
except TypeError:
raise error('DBM object has already been closed') from None
def items(self): def items(self):
self._verify_open() self._verify_open()
@ -226,17 +228,26 @@ class _Database(collections.MutableMapping):
def __contains__(self, key): def __contains__(self, key):
if isinstance(key, str): if isinstance(key, str):
key = key.encode('utf-8') key = key.encode('utf-8')
self._verify_open() try:
return key in self._index return key in self._index
except TypeError:
if self._index is None:
raise error('DBM object has already been closed') from None
else:
raise
def iterkeys(self): def iterkeys(self):
self._verify_open() try:
return iter(self._index.keys()) return iter(self._index)
except TypeError:
raise error('DBM object has already been closed') from None
__iter__ = iterkeys __iter__ = iterkeys
def __len__(self): def __len__(self):
self._verify_open() try:
return len(self._index) return len(self._index)
except TypeError:
raise error('DBM object has already been closed') from None
def close(self): def close(self):
self._commit() self._commit()