statelyai / xstate-python

XState for Python
MIT License
179 stars 18 forks source link

Implement Strict Mode #47

Open FraserTooth opened 3 years ago

FraserTooth commented 3 years ago

Implement "strict": True as an option in the machine configuration to allow a throw on a non-defined event for a given node. As it's a bit tricky to implement this external to the machine at present, e.g.:

# Doesn't throw
new_state = machine.transition(state=current_state, event="💩")

# Example of current check you'd have to do
if new_state.value == current_state.value:
    print("Didn't transition, maybe was an illegal state 🤷")

Similar to the implementation in the TS version of xstate https://github.com/statelyai/xstate/blob/8b7c3e2573341c5ed91057aab77e1977f8de8555/packages/core/src/StateNode.ts#L1095

Happy to take a crack at this if you think its worthwhile.