@@ -154,10 +154,32 @@ def _setup(self, initial_transition: Transition):
154154 default_resolver = resolver_factory (machine , model )
155155
156156 register = partial (self ._callbacks_registry .register , resolver = default_resolver )
157- self ._visit_states_and_transitions (lambda x : x ._setup (register ))
157+
158+ observer_visitor = self ._build_observers_visitor (machine , model )
159+
160+ def setup_visitor (visited ):
161+ visited ._setup (register )
162+ observer_visitor (visited )
163+
164+ self ._visit_states_and_transitions (setup_visitor )
158165
159166 initial_transition ._setup (register )
160- self .add_observer (machine , model )
167+
168+ def _build_observers_visitor (self , * observers ):
169+ registry_callbacks = [
170+ (
171+ self ._callbacks_registry .build_register_function_for_resolver (
172+ resolver_factory (observer )
173+ )
174+ )
175+ for observer in observers
176+ ]
177+
178+ def _add_observer_for_resolver (visited ):
179+ for register in registry_callbacks :
180+ visited ._add_observer (register )
181+
182+ return _add_observer_for_resolver
161183
162184 def add_observer (self , * observers ):
163185 """Add an observer.
@@ -170,18 +192,8 @@ def add_observer(self, *observers):
170192 :ref:`observers`.
171193 """
172194
173- resolvers = [resolver_factory (ObjectConfig .from_obj (o )) for o in observers ]
174-
175- def _add_observer_for_resolver (x ):
176- for resolver in resolvers :
177- register = (
178- self ._callbacks_registry .build_register_function_for_resolver (
179- resolver
180- )
181- )
182- x ._add_observer (register )
183-
184- self ._visit_states_and_transitions (lambda x : _add_observer_for_resolver (x ))
195+ visitor = self ._build_observers_visitor (* observers )
196+ self ._visit_states_and_transitions (visitor )
185197 return self
186198
187199 def _repr_html_ (self ):
0 commit comments