# test from https://github.com/pytransitions/transitions/blob/master/tests/test_nesting.py from transitions.extensions import HierarchicalMachine as Machine states = ['standing', 'walking', {'name': 'caffeinated', 'children': ['dithering', 'running']}] transitions = [ ['walk', 'standing', 'walking'], ['stop', 'walking', 'standing'], ['drink', 'caffeinated_dithering', '='], ['drink', 'caffeinated', 'caffeinated_dithering'], ['drink', '*', 'caffeinated'], ['walk', 'caffeinated', 'caffeinated_running'], ['relax', 'caffeinated', 'standing'] ] machine = Machine(states=states, transitions=transitions, initial='standing', ignore_invalid_triggers=True) machine.walk() # Walking now machine.stop() # let's stop for a moment machine.drink() # coffee time machine.state print(machine.state) machine.drink() # again! print(machine.state) machine.drink() # and again! print(machine.state) machine.walk() # we have to go faster print(machine.state) machine.stop() # can't stop moving! machine.state print(machine.state) machine.relax() # leave nested state machine.state # phew, what a ride print(machine.state)