- Notifications
You must be signed in to change notification settings - Fork12
Versatile and flexible Python State Machine library
License
pgularski/pysm
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Versatile and flexible Python State Machine library.
It can do simple things like this:
Or somewhat more complex like that:
The State Patternsolves many problems, untangles the code and saves one's sanity.Yet.., it's a bit rigid and doesn't scale. The goal of this library is to giveyou a close to the State Pattern simplicity with much more flexibility. And,if needed, the full state machine functionality, includingFSM,HSM,PDA and other tasty things.
- Provide a State Pattern-like behavior with more flexibility (seeDocumentation forexamples)
- Be explicit and don't add any magic code to objects that use pysm
- Handle directly any kind of event or input (not only strings) - parsingstrings is cool again!
- Keep it simple, even for someone who's not very familiar with the FSMterminology
- Finite State Machine (FSM)
- Hierarchical State Machine (HSM) with Internal/External/Local transitions
- Pushdown Automaton (PDA)
- Transition callbacks - action, before, after
- State hooks - enter, exit, and other event handlers
- Entry and exit actions are associated with states, not transitions
- Events may be anything as long as they're hashable
- States history and transition to previous states
- Conditional transitions (if/elif/else-like logic)
- Explicit behaviour (no method or attribute is added to the object containing a state machine)
- No need to extend a class with State Machine class (composition over inheritance)
- Fast (even with hundreds of transition rules)
- Not too many pythonisms, so that it's easily portable to other languages (ie.JavaScript).
- Micropython support
Install pysm fromPyPI:
pip install pysm
or clone theGithub pysm repository:
git clone https://github.com/pgularski/pysmcd pysmpython setup.py install
Read the docs for API documentation and examples -http://pysm.readthedocs.io/
See Unit Tests to see it working and extensively tested.
The library works with pyboards!:
import upipupip.install('upysm')About
Versatile and flexible Python State Machine library
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.

