async def add_if_not_present(self, obj): try: id_ = self._key_func(obj) except Exception as e: raise store.StoreKeyError(obj) from e async with self._lock: self._add_if_not_present(id_, obj)
async def delete(self, obj): try: id_ = self._key_func(obj) except Exception as e: raise store.StoreKeyError(obj) from e async with self._lock: self._populated = True del self._items[id_]
def key_of(self, obj): if isinstance(obj, Deltas): if not obj: raise store.StoreKeyError(obj) from ZeroLengthDeltasObjectError obj = obj.newest().object if isinstance(obj, DeletedFinalStateUnknown): return obj.key return self._key_func(obj)
async def add(self, obj): try: id_ = self._key_func(obj) except Exception as e: raise store.StoreKeyError(obj) from e async with self._lock: self._populated = True if id_ not in self._items: self._queue.append(id_) self._items[id_] = obj self._cond.notify_all()
async def replace(self, list_, resource_version): items = {} for item in list_: try: key = self._key_func(item) except Exception as e: raise store.StoreKeyError(item) from e items[key] = item async with self._lock: if not self._populated: self._populated = True self._initial_population_count = len(items) self._items = items self._queue = list(items) if self._queue: self._cond.notify_all()
def get(self, obj): try: key = self._key_func(obj) except Exception as e: raise store.StoreKeyError(obj) from e return self.get_by_key(key)