Hat statechart engine
Project description
This library is part of Hat Open project - open-source framework of tools and libraries for developing applications used for remote monitoring, control and management of intelligent electronic devices such as IoT devices, PLCs, industrial automation or home automation systems.
Development of Hat Open and associated repositories is sponsored by Končar - Power Plant and Electric Traction Engineering Inc. (Končar KET - https://www.koncar-ket.hr).
For more information see:
hat-stc documentation - https://core.hat-open.com/docs/libraries/stc/index.html
Hat Core homepage - https://core.hat-open.com
Hat Core git repository - https://github.com/hat-open/hat-core.git
About
Hierarchical state machine library with support for SCXML and Graphviz visualization:
EventName = str """Event name""" StateName = str """State name""" ActionName = str """Action name""" ConditionName = str """Condition name""" class Event(typing.NamedTuple): name: EventName payload: typing.Any = None class Transition(typing.NamedTuple): event: EventName target: typing.Optional[StateName] actions: typing.List[ActionName] = [] conditions: typing.List[ConditionName] = [] internal: bool = False class State(typing.NamedTuple): name: StateName children: typing.List['State'] = [] transitions: typing.List[Transition] = [] entries: typing.List[ActionName] = [] exits: typing.List[ActionName] = [] final: bool = False Action = typing.Callable[[typing.Optional[Event]], None] """Action function""" Condition = typing.Callable[[typing.Optional[Event]], bool] """Condition function""" class Statechart: """Statechart engine""" def __init__(self, states: typing.Iterable[State], actions: typing.Dict[str, Action], conditions: typing.Dict[str, Condition] = {}): ... @property def state(self) -> typing.Optional[StateName]: """Current state""" def register(self, event: Event): """Add event to queue""" async def run(self): """Run statechart""" def parse_scxml(scxml: typing.Union[typing.TextIO, pathlib.Path] ) -> typing.List[State]: """Parse SCXML""" def create_dot_graph(states: typing.Iterable[State]) -> str: """Create DOT representation of statechart"""
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 Distributions
Built Distribution
File details
Details for the file hat_stc-0.4.1.dev20210407-cp38.cp39-none-any.whl
.
File metadata
- Download URL: hat_stc-0.4.1.dev20210407-cp38.cp39-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: CPython 3.8, CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63a9a8e0d0f678ffe1b47343df5429eec1f22854969bba0fb74e499d3f33085b |
|
MD5 | 278436e0763c2564bf1dec47106e1978 |
|
BLAKE2b-256 | ba7ba43226acc2815e7dd4a9162782781a75e9f7502eae5839cf13af1d92fe87 |