From c8d4080ef5e5ed4ccf969703969cdc70bf68783c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Thu, 19 Dec 2019 13:58:48 +0100 Subject: [PATCH] Fix fsm.update messages being thiggered without a state change --- tfw/fsm/fsm_base.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tfw/fsm/fsm_base.py b/tfw/fsm/fsm_base.py index c35d094..707b4da 100644 --- a/tfw/fsm/fsm_base.py +++ b/tfw/fsm/fsm_base.py @@ -1,6 +1,7 @@ import logging from collections import defaultdict from datetime import datetime +from contextlib import suppress from transitions import Machine, MachineError @@ -62,14 +63,12 @@ class FSMBase(Machine, CallbackMixin): ) if all(predicate_results): - try: + with suppress(AttributeError, MachineError): from_state = self.state - self.trigger(trigger) - self.update_event_log(from_state, trigger) - return True - except (AttributeError, MachineError): - LOG.debug('FSM failed to execute nonexistent trigger: "%s"', trigger) - return False + if self.trigger(trigger): + self.update_event_log(from_state, trigger) + return True + LOG.debug('FSM failed to execute nonexistent trigger: "%s"', trigger) def update_event_log(self, from_state, trigger): self.event_log.append({