@@ -1709,13 +1709,11 @@ async def get_var_value(self, var: Var[VAR_TYPE]) -> VAR_TYPE:
17091709 )
17101710 return getattr (other_state , var_data .field_name )
17111711
1712- def _get_event_handler (
1713- self , event : Event
1714- ) -> tuple [BaseState | StateProxy , EventHandler ]:
1712+ def _get_event_handler (self , event : Event | str ) -> tuple [BaseState , EventHandler ]:
17151713 """Get the event handler for the given event.
17161714
17171715 Args:
1718- event: The event to get the handler for.
1716+ event: The event to get the handler for, or a dotted handler name string .
17191717
17201718
17211719 Returns:
@@ -1725,18 +1723,15 @@ def _get_event_handler(
17251723 ValueError: If the event handler or substate is not found.
17261724 """
17271725 # Get the event handler.
1728- path = event .name .split ("." )
1726+ name = event .name if isinstance (event , Event ) else event
1727+ path = name .split ("." )
17291728 path , name = path [:- 1 ], path [- 1 ]
17301729 substate = self .get_substate (path )
17311730 if not substate :
17321731 msg = "The value of state cannot be None when processing an event."
17331732 raise ValueError (msg )
17341733 handler = substate .event_handlers [name ]
17351734
1736- # For background tasks, proxy the state
1737- if handler .is_background :
1738- substate = StateProxy (substate )
1739-
17401735 return substate , handler
17411736
17421737 async def _process (self , event : Event ) -> AsyncIterator [StateUpdate ]:
@@ -1751,6 +1746,10 @@ async def _process(self, event: Event) -> AsyncIterator[StateUpdate]:
17511746 # Get the event handler.
17521747 substate , handler = self ._get_event_handler (event )
17531748
1749+ # For background tasks, proxy the state.
1750+ if handler .is_background :
1751+ substate = StateProxy (substate )
1752+
17541753 # Run the event generator and yield state updates.
17551754 async for update in self ._process_event (
17561755 handler = handler ,
0 commit comments