State Machines
May 30, 2026 | 5 min read
Simple State Machine
class StateMachine:
def __init__(self):
self.state = 'idle'
self.transitions = {
'idle': {'start': 'running'},
'running': {'pause': 'paused', 'stop': 'idle'},
'paused': {'resume': 'running', 'stop': 'idle'},
}
def handle(self, event: str):
next_state = self.transitions.get(self.state, {}).get(event)
if next_state:
self.state = next_state
return self.state
Table-Driven FSM
def run_fsm(states: dict, initial: str, events: list[str]) -> str:
state = initial
for event in events:
state = states.get(state, {}).get(event, state)
return state
Compiled State Machine
pyvorin run fsm.py --function run_fsm