core (memory/persistent): fixed "items", added "all" + "adel" to LazyPersistentBinaryDict:

- `items` was returning the dict with all values, it now returns a Deferred with actual dict items()
- `all` new method does return the dict with all values (in a Deferred)
- `adel` has been added to LazyPersistentBinaryDict
This commit is contained in:
Goffi 2020-04-14 20:36:24 +02:00
commit 68a4d8ea98

View file

@ -66,7 +66,7 @@ class PersistentDict:
return iter(self._cache.items())
def items(self):
return list(self._cache.items())
return self._cache.items()
def __repr__(self):
return self._cache.__repr__()
@ -178,6 +178,11 @@ class LazyPersistentBinaryDict(PersistentBinaryDict):
raise NotImplementedError
def items(self):
d = self.storage.getPrivates(self.namespace, binary=self.binary, profile=self.profile)
d.addCallback(lambda data_dict: data_dict.items())
return d
def all(self):
return self.storage.getPrivates(self.namespace, binary=self.binary, profile=self.profile)
def __repr__(self):
@ -257,6 +262,12 @@ class LazyPersistentBinaryDict(PersistentBinaryDict):
return self.storage.setPrivateValue(self.namespace, key, value,
self.binary, self.profile)
def adel(self, key):
"""Async del, return a Deferred fired when value is actually deleted"""
# XXX: similar as PersistentDict.adel, but doesn't use cache
return self.storage.delPrivateValue(
self.namespace, key, self.binary, self.profile)
def setdefault(self, key, default):
raise NotImplementedError