1-
21import collections
32import observable
43
@@ -43,8 +42,9 @@ def has_state(self, state):
4342 def register (self , from_state , value , to_state ):
4443 if from_state in self ._states and value in self ._states [from_state ]:
4544 raise AlreadyRegistered (
46- 'Transition for `%s` is already registered for state `%s`' % (
47- value , from_state ))
45+ "Transition for `%s` is already registered for state `%s`"
46+ % (value , from_state )
47+ )
4848 self ._states [from_state ][value ] = to_state
4949 self ._allstates .update ([from_state , to_state ])
5050
@@ -60,16 +60,16 @@ def register_fallback(self, from_state, to_state):
6060
6161 if from_state in self ._fallbacks :
6262 raise AlreadyRegistered (
63- ' Fallback transition for `%s` '
64- 'is already registered' % from_state )
63+ " Fallback transition for `%s` " "is already registered" % from_state
64+ )
6565
6666 self ._fallbacks [from_state ] = to_state
6767 self ._allstates .update ([from_state , to_state ])
6868
6969 def can (self , value , current_state ):
7070 return bool (
71- self ._states .get (current_state ) and
72- self . _states [ current_state ]. get ( value ) )
71+ self ._states .get (current_state ) and self . _states [ current_state ]. get ( value )
72+ )
7373
7474 def execute (self , value , current_state ):
7575 try :
@@ -79,8 +79,9 @@ def execute(self, value, current_state):
7979 return self ._fallbacks [current_state ]
8080 except KeyError :
8181 raise UnknownTransition (
82- 'Can not find transition for `%s` in state `%s`' % (
83- value , current_state ))
82+ "Can not find transition for `%s` in state `%s`"
83+ % (value , current_state )
84+ )
8485
8586
8687class MetaMachine (type ):
@@ -93,36 +94,38 @@ def __new__(cls, name, bases, attrs):
9394 cls .add_exception_classes (new_class )
9495 return new_class
9596
96- meta = attrs .pop (' Meta' , None )
97+ meta = attrs .pop (" Meta" , None )
9798
9899 class Options :
99100 def __init__ (self , meta ):
100101 self .transitions = Transitions (
101- transitions = getattr (meta , 'transitions' , None ),
102- fallbacks = getattr (meta , 'fallbacks' , None ))
103- self .initial = getattr (meta , 'initial' , None )
102+ transitions = getattr (meta , "transitions" , None ),
103+ fallbacks = getattr (meta , "fallbacks" , None ),
104+ )
105+ self .initial = getattr (meta , "initial" , None )
104106
105107 new_class = super_new (cls , name , bases , {})
106108 cls .add_exception_classes (new_class )
107- setattr (new_class , ' _meta' , Options (meta ))
109+ setattr (new_class , " _meta" , Options (meta ))
108110
109111 return new_class
110112
111113 def add_exception_classes (new_class ):
112- setattr (new_class , ' FSMException' , FSMException )
113- setattr (new_class , ' UnknownTransition' , UnknownTransition )
114+ setattr (new_class , " FSMException" , FSMException )
115+ setattr (new_class , " UnknownTransition" , UnknownTransition )
114116
115117
116118class StateMachine (metaclass = MetaMachine ):
117119 def __init__ (self , initial = None , transitions = None ):
118- meta = getattr (self , ' _meta' , None )
120+ meta = getattr (self , " _meta" , None )
119121 self ._eventhandler = observable .Observable ()
120- self ._transitions = transitions or getattr (
121- meta , 'transitions' , None ) or Transitions ()
122- self ._initial = initial or getattr (meta , 'initial' , None )
122+ self ._transitions = (
123+ transitions or getattr (meta , "transitions" , None ) or Transitions ()
124+ )
125+ self ._initial = initial or getattr (meta , "initial" , None )
123126 self ._state = None
124127 self ._inputhandlers = collections .defaultdict (list )
125- self ._eventhandler .on (' input' , self ._inputhandler )
128+ self ._eventhandler .on (" input" , self ._inputhandler )
126129 self .reset ()
127130
128131 @property
@@ -133,11 +136,10 @@ def process(self, value):
133136 new_state = self ._transitions .execute (value , self .state )
134137
135138 if not self .state == new_state :
136- self ._eventhandler .trigger (
137- 'change' , state = new_state , previous = self .state )
139+ self ._eventhandler .trigger ("change" , state = new_state , previous = self .state )
138140
139141 self ._state = new_state
140- self ._eventhandler .trigger (' input' , state = new_state , value = value )
142+ self ._eventhandler .trigger (" input" , state = new_state , value = value )
141143
142144 return self .state
143145
@@ -155,9 +157,8 @@ def reset(self):
155157
156158 old_state = self ._state
157159 self ._state = self ._initial
158- self ._eventhandler .trigger (
159- 'change' , state = self ._state , previous = old_state )
160- self ._eventhandler .trigger ('reset' )
160+ self ._eventhandler .trigger ("change" , state = self ._state , previous = old_state )
161+ self ._eventhandler .trigger ("reset" )
161162 return self .state
162163
163164 def when (self , state , func ):
0 commit comments