Source code for errbot.storage.memory

from typing import Any

from errbot.storage.base import StorageBase, StoragePluginBase

ROOTS = {}  # make a little bit of an emulated persistence.


[docs] class MemoryStorage(StorageBase):
[docs] def __init__(self, namespace): self.namespace = namespace self.root = ROOTS.get(namespace, {})
[docs] def get(self, key: str) -> Any: if key not in self.root: raise KeyError(f"{key} doesn't exist.") return self.root[key]
[docs] def set(self, key: str, value: Any) -> None: self.root[key] = value
[docs] def remove(self, key: str): if key not in self.root: raise KeyError(f"{key} doesn't exist.") del self.root[key]
[docs] def len(self): return len(self.root)
[docs] def keys(self): return self.root.keys()
[docs] def close(self) -> None: ROOTS[self.namespace] = self.root
[docs] class MemoryStoragePlugin(StoragePluginBase):
[docs] def open(self, namespace: str) -> StorageBase: return MemoryStorage(namespace)