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
|