from kwargsparser import kwargsParser as kwargsParser class SimpleStateMachine(): def __init__(self,default_state,**kwargs): parser = kwargsParser(kwargs) self.log_cb = parser.parse_args("log_cb",None) parser.validate_args() self.current_state = None self.change_state(default_state) def log(self,log_string): if self.log_cb: self.log_cb(log_string) def change_state(self,new_state): if new_state != self.current_state: if self.current_state != None: if self.current_state.on_exit != None: self.current_state.on_exit() self.log(f"Changing from state {self.current_state.state_name} to {new_state.state_name}") else: self.log(f"Initialising with state {new_state.state_name}") self.current_state = new_state if self.current_state.on_enter != None: self.current_state.on_enter() class State(): def __init__(self,state_name,**kwargs): self.state_name = state_name parser = kwargsParser(kwargs) self.on_enter = parser.parse_args("on_enter_cb",None) self.on_exit = parser.parse_args("on_exit_cb",None) parser.validate_args()