mirror of
https://github.com/python/cpython.git
synced 2025-12-11 03:20:01 +00:00
Restore performance of some dumb database methods (regression introduced by #19385).
This commit is contained in:
parent
b49eff25b7
commit
12c575f2f6
1 changed files with 19 additions and 8 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue