mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2024-11-22 21:21:32 +00:00
Add first version of YamlFSM
This commit is contained in:
parent
7c0e6d49bc
commit
5e4303ac06
@ -4,3 +4,4 @@
|
|||||||
from .event_handler_base import EventHandlerBase, TriggeredEventHandler, BroadcastingEventHandler
|
from .event_handler_base import EventHandlerBase, TriggeredEventHandler, BroadcastingEventHandler
|
||||||
from .fsm_base import FSMBase
|
from .fsm_base import FSMBase
|
||||||
from .linear_fsm import LinearFSM
|
from .linear_fsm import LinearFSM
|
||||||
|
from .yaml_fsm import YamlFSM
|
||||||
|
18
lib/tfw/yaml_fsm.py
Normal file
18
lib/tfw/yaml_fsm.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import yaml
|
||||||
|
from transitions import State
|
||||||
|
|
||||||
|
from tfw import FSMBase
|
||||||
|
|
||||||
|
|
||||||
|
class YamlFSM(FSMBase):
|
||||||
|
def __init__(self, config_file):
|
||||||
|
self.config = self.parse_config(config_file)
|
||||||
|
self.states = [State(**state) for state in self.config['states']]
|
||||||
|
super(YamlFSM, self).__init__()
|
||||||
|
for transition in self.config['transitions']:
|
||||||
|
self.machine.add_transition(**transition)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_config(config_file):
|
||||||
|
with open(config_file, 'r') as ifile:
|
||||||
|
return yaml.load(ifile)
|
@ -3,3 +3,4 @@ pyzmq==17.0.0
|
|||||||
transitions==0.6.4
|
transitions==0.6.4
|
||||||
terminado==0.8.1
|
terminado==0.8.1
|
||||||
watchdog==0.8.3
|
watchdog==0.8.3
|
||||||
|
PyYAML==3.12
|
||||||
|
Loading…
Reference in New Issue
Block a user