@@ -99,12 +99,15 @@ class InitializeStateReturnValue(Immutable, Generic[State, Action, Event]):
9999 autorun : AutorunType [State ]
100100
101101
102- class SideEffectRunnerThread (threading .Thread ):
103- def __init__ (self : SideEffectRunnerThread , task_queue : queue .Queue ) -> None :
102+ class SideEffectRunnerThread (threading .Thread , Generic [Event ]):
103+ def __init__ (
104+ self : SideEffectRunnerThread [Event ],
105+ task_queue : queue .Queue [tuple [EventHandler [Event ], Event ] | None ],
106+ ) -> None :
104107 super ().__init__ ()
105108 self .task_queue = task_queue
106109
107- def run (self : SideEffectRunnerThread ) -> None :
110+ def run (self : SideEffectRunnerThread [ Event ] ) -> None :
108111 while True :
109112 task = self .task_queue .get ()
110113 if task is None :
@@ -113,7 +116,10 @@ def run(self: SideEffectRunnerThread) -> None:
113116
114117 try :
115118 event_handler , event = task
116- event_handler (event )
119+ if len (signature (event_handler ).parameters ) == 1 :
120+ cast (Callable [[Event ], Any ], event_handler )(event )
121+ else :
122+ cast (Callable [[], Any ], event_handler )()
117123 finally :
118124 self .task_queue .task_done ()
119125
@@ -134,7 +140,7 @@ def create_store(
134140 actions : list [Action ] = []
135141 events : list [Event ] = []
136142
137- event_handlers_queue = queue .Queue [tuple [EventHandler , Event ] | None ]()
143+ event_handlers_queue = queue .Queue [tuple [EventHandler [ Event ] , Event ] | None ]()
138144 for _ in range (_options .threads ):
139145 worker = SideEffectRunnerThread (event_handlers_queue )
140146 worker .start ()
0 commit comments