Source code for CADETProcess.dataStructure.cache

from .dataStructure import Structure
from .parameter import Bool


[docs] class cached_property_if_locked(property): def __get__(self, instance, cls=None): if instance.lock: try: return instance.cached_properties[self.name] except KeyError: pass value = super().__get__(instance, cls) if instance.lock: instance.cached_properties[self.name] = value return value @property def name(self): return self.fget.__name__
[docs] class CachedPropertiesMixin(Structure): _lock = Bool(default=False) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cached_properties = {} @property def lock(self): return self._lock @lock.setter def lock(self, lock): self._lock = lock self.cached_properties = {}