modular_sdk/services/thread_local_storage_service.py (21 lines of code) (raw):

from threading import local from modular_sdk.commons.log_helper import get_logger _LOG = get_logger(__name__) class ThreadLocalStorageService: def __init__(self): self.__storage = None @property def storage(self): if not self.__storage: self.__storage = local() self.__storage.value = {} return self.__storage.value def set(self, key: str, value): _LOG.debug(f'Setting {key} to storage') self.storage[key] = value def get(self, key): _LOG.debug(f'Extracting {key} var from storage') return self.storage.get(key) def pop(self, key): _LOG.debug(f'Pop {key} var from storage') return self.storage.pop(key, None)