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)