@@ -3038,7 +3038,7 @@ async def on_event(self, event: events.Event) -> None:
30383038 await super ().on_event (event )
30393039
30403040 def _parse_action (
3041- self , action : str , default_namespace : DOMNode
3041+ self , action : str | ActionParseResult , default_namespace : DOMNode
30423042 ) -> tuple [DOMNode , str , tuple [object , ...]]:
30433043 """Parse an action.
30443044
@@ -3051,7 +3051,11 @@ def _parse_action(
30513051 Returns:
30523052 A tuple of (node or None, action name, tuple of parameters).
30533053 """
3054- destination , action_name , params = actions .parse (action )
3054+ if isinstance (action , tuple ):
3055+ destination , action_name , params = action
3056+ else :
3057+ destination , action_name , params = actions .parse (action )
3058+
30553059 action_target : DOMNode | None = None
30563060 if destination :
30573061 if destination not in self ._action_targets :
@@ -3098,14 +3102,9 @@ async def run_action(
30983102 Returns:
30993103 True if the event has been handled.
31003104 """
3101- if isinstance (action , str ):
3102- action_target , action_name , params = self ._parse_action (
3103- action , self if default_namespace is None else default_namespace
3104- )
3105- else :
3106- # assert isinstance(action, tuple)
3107- _ , action_name , params = action
3108- action_target = self
3105+ action_target , action_name , params = self ._parse_action (
3106+ action , self if default_namespace is None else default_namespace
3107+ )
31093108
31103109 if action_target .check_action (action_name , params ):
31113110 return await self ._dispatch_action (action_target , action_name , params )
0 commit comments