diff --git a/common/python/nomadcore/baseclasses.py b/common/python/nomadcore/baseclasses.py index d6ab46c33aa26e01fb1f5f0ce2fff0607cc16b10..572ff23f9b878ce6babb38cdf39d1e3721996d57 100644 --- a/common/python/nomadcore/baseclasses.py +++ b/common/python/nomadcore/baseclasses.py @@ -6,6 +6,7 @@ from builtins import str from builtins import object import os +import copy import numpy as np import logging from abc import ABCMeta, abstractmethod @@ -505,13 +506,14 @@ class ParserContext(object): class CacheObject(object): """Wraps an intermediate value stored during parsing. """ - def __init__(self, name, value, single=True, update=True): + def __init__(self, name, default_value=None, single=True, update=True): self.name = name self.update = update - self._value = value + self.default_value = copy.copy(default_value) + self._value = default_value self._single = single self._pushed = False - self._updated = value is not None + self._updated = default_value is not None @property def value(self): @@ -521,6 +523,10 @@ class CacheObject(object): def value(self, value): self._value = value + def clear(self): + self._updated = True + self._value = self.default_value + #=============================================================================== class CacheService(object): @@ -565,7 +571,8 @@ class CacheService(object): def clear(self): """Frees all object from the cache. """ - self._cache.clear() + for cache_object in self._cache.values(): + cache_object.clear() def add(self, name, value=None, single=True, update=True): """Used to add a cache object. Two cache objects with the same name are