Yet another finite state automaton
Project description
Yet another finite state automaton for python.
Introduction
The emphasis is on a simple, readable configuration:
automata1: start: Occupied states: Occupied: {} Alarmed: {} transitions: Occupied->Alarmed: when: house.presence.empty Occupied->Alarmed: when: house.presence.occupied
It’s particularly suited to home automation (my use case).
Example
For an example of using finite for home automation, see: test/test1.dfa.
Configuration
The configuration format is yaml.
Each automata has a start state, a set of states and a set of transitions:
automata1: start: Occupied states: Occupied: {} Alarmed: {} transitions: Occupied->Alarmed: when: house.presence.empty Occupied->Alarmed: when: house.presence.occupied
Transitions may have actions associated with them:
Occupied->Alarmed: when: house.presence.empty actions: - speak('Alarm activated')
These callbacks are called on the ‘callback’ object passed when make_world.
A yaml file may list multiple automaton:
automata1: start: State1 states: ... transitions: ... automata2: start: State2 states: ... transitions: ...
Code
Example:
from finite import dfa # create a callback class Callback(object): def speak(self, msg): # do some speaking pass callback = Callback() # create automaton worlds = dfa.Worlds() automatons = dfa.Loader.load_file('my.dfa') for aut in automatons: world = aut.make_world(callback) self.worlds.add(world) # trigger a state change ev = dfa.Event('house.presence.empty', True) worlds.process(ev)
Changelog
0.1.0
First release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
finite-0.1.0.tar.gz
(6.8 kB
view details)
File details
Details for the file finite-0.1.0.tar.gz
.
File metadata
- Download URL: finite-0.1.0.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb1ca4ba0570cb641009e17468615a92040e24f5ed8132204c26bbae658ee0e0 |
|
MD5 | 680f8c1b30cd591a92dc2acef61c455f |
|
BLAKE2b-256 | eac95824c2cb1bcee08caf6b44ea4fb2a9d23df63eb5481ad7961c2e5832d054 |