import gradio as gr, io, sys class FSM: def __init__(self, initial_state, transitions): self.state = initial_state self.transitions = transitions def handle(self, event): key = (self.state, event) if key in self.transitions: self.state = self.transitions[key] print(f" Event: {event:7s} => State: {self.state}") transitions = { ("closed", "open"): "opened", ("closed", "lock"): "locked", ("opened", "close"): "closed", ("locked", "unlock"): "closed", } fsm = FSM("closed", transitions) buf = io.StringIO() sys.stdout = buf for event in ["open", "close", "lock", "open", "unlock", "open", "close"]: fsm.handle(event) sys.stdout = sys.__stdout__ gr.Interface(fn=lambda: buf.getvalue(), inputs=[], outputs="text").launch()