changeset: 90885:95207bcd8298 branch: 3.4 parent: 90883:4a0987b8f630 user: Serhiy Storchaka date: Wed May 28 18:49:52 2014 +0300 files: Lib/dbm/dumb.py description: Restore performance of some dumb database methods (regression introduced by #19385). diff -r 4a0987b8f630 -r 95207bcd8298 Lib/dbm/dumb.py --- a/Lib/dbm/dumb.py Wed May 28 18:38:27 2014 +0300 +++ b/Lib/dbm/dumb.py Wed May 28 18:49:52 2014 +0300 @@ -216,8 +216,10 @@ self._commit() def keys(self): - self._verify_open() - return list(self._index.keys()) + try: + return list(self._index) + except TypeError: + raise error('DBM object has already been closed') from None def items(self): self._verify_open() @@ -226,17 +228,26 @@ def __contains__(self, key): if isinstance(key, str): key = key.encode('utf-8') - self._verify_open() - return key in self._index + try: + 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): - self._verify_open() - return iter(self._index.keys()) + try: + return iter(self._index) + except TypeError: + raise error('DBM object has already been closed') from None __iter__ = iterkeys def __len__(self): - self._verify_open() - return len(self._index) + try: + return len(self._index) + except TypeError: + raise error('DBM object has already been closed') from None def close(self): self._commit()