Spaces:
Sleeping
Sleeping
| 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() |