diff --git a/devito/tools/data_structures.py b/devito/tools/data_structures.py index ea79506913..c33f8cbe50 100644 --- a/devito/tools/data_structures.py +++ b/devito/tools/data_structures.py @@ -43,6 +43,8 @@ class EnrichedTuple(tuple, Pickable): A tuple with an arbitrary number of additional attributes. """ + __rkwargs__ = ('getters',) + def __new__(cls, *items, getters=None, **kwargs): obj = super().__new__(cls, items) obj.__dict__.update(kwargs) @@ -76,6 +78,11 @@ def __getnewargs_ex__(self): def get(self, key, val=None): return self._getters.get(key, val) + @cached_property + def getters(self): + # Needed for `Pickable._rebuild` + return list(self._getters) + class ReducerMap(MultiDict):