|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| from typing import Callable
|
|
|
|
|
| class Cache:
|
| """Caching reusable args for faster inference"""
|
|
|
| def __init__(self, disable=False, prefix="", cache=None):
|
| self.cache = cache if cache is not None else {}
|
| self.disable = disable
|
| self.prefix = prefix
|
|
|
| def __call__(self, key: str, fn: Callable):
|
| if self.disable:
|
| return fn()
|
|
|
| key = self.prefix + key
|
| try:
|
| result = self.cache[key]
|
| except KeyError:
|
| result = fn()
|
| self.cache[key] = result
|
| return result
|
|
|
| def namespace(self, namespace: str):
|
| return Cache(
|
| disable=self.disable,
|
| prefix=self.prefix + namespace + ".",
|
| cache=self.cache,
|
| )
|
|
|
| def get(self, key: str):
|
| key = self.prefix + key
|
| return self.cache[key]
|
|
|