9 _currently_opened_container =
None
12 super(StateMachine, self).
__init__(*args, **kwargs)
24 StateMachine._currently_opened_container = self
37 return iter(state.name
for state
in self.
_states)
42 def add(label, state, transitions, remapping=None):
43 self = StateMachine.get_opened_container()
45 raise StateMachineError(
"No container openend, activate one first by: 'with state_machine:'")
47 raise StateMachineError(
"The label %s has already been added to this state machine!" % label)
49 raise StateMachineError(
"The label %s is an outcome of this state machine!" % label)
57 state.set_parent(self)
61 return StateMachine._currently_opened_container
65 def spin(self, userdata=None):
68 outcome = self.
execute(userdata)
69 if outcome
is not None:
92 if outcome
is not None:
97 raise StateError(
"Returned outcome '%s' is not registered as transition!" % str(e))
145 for transition_target
in transitions.values():