Metadata-Version: 2.1
Name: tilakone
Version: 0.1.0
Summary: Super simple state machine
Author: Panu Oksiala
Author-email: panu@oksiala.fi
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown

# Tilakone

Super simple state machine

```PYTHON
from tilakone import StateChart, StateMachine
from typing import Literal

States = Literal["ON", "OFF"]
Events = Literal["toggle", "turn_off"]

state_chart = StateChart[States, Events]({
    "OFF": {
        "initial": True,
        "on": {
            "toggle": "ON"
        }
    },
    "ON": {
        "initial": False,
        "on": {
            "toggle": "OFF",
            "turn_off": "OFF"
        }
    }
})

machine = StateMachine(state_chart)
assert machine.current_state == "OFF"

transitioned = machine.send("toggle")
assert transitioned == True
assert machine.current_state == "ON"

transitioned = machine.send("turn_off")
assert transitioned == True
assert machine.current_state == "OFF"

# Irrelevant events are ignored
transitioned = machine.send("turn_off")
assert transitioned == False
assert machine.current_state == "OFF"

```
