class FSMUpdater: def __init__(self, fsm): self.fsm = fsm @property def fsm_update(self): return { 'key': 'fsm_update', **self.fsm_update_data } @property def fsm_update_data(self): valid_transitions = [ {'trigger': trigger} for trigger in self.fsm.get_triggers(self.fsm.state) ] last_fsm_event = self.fsm.event_log[-1] last_fsm_event['timestamp'] = last_fsm_event['timestamp'].isoformat() return { 'current_state': self.fsm.state, 'valid_transitions': valid_transitions, 'in_accepted_state': self.fsm.in_accepted_state, 'last_event': last_fsm_event }