class DeferrableAnalysis(Analysis, ABC):
deferred = False
history = []
def step(self, state):
if deferred:
history.append(state)
else:
self.process(state)
def done(self):
if deferred:
for state in history:
self.process(state)
#to be extended
@abstractmethod
def process(self, state):
pass
something like