@@ -328,7 +328,6 @@ def execute_something():
328328
329329 try :
330330 _check_signature (handler , "handler" , self , * (event_args + args ), ** kwargs )
331- # Use weak reference to break circular reference
332331 self ._event_handlers [event_name ].append ((handler , (weakref .ref (self ),) + args , kwargs ))
333332 except ValueError :
334333 _check_signature (handler , "handler" , * (event_args + args ), ** kwargs )
@@ -433,15 +432,15 @@ def _fire_event(self, event_name: Any, *event_args: Any, **event_kwargs: Any) ->
433432 self .last_event_name = event_name
434433 for func , args , kwargs in self ._event_handlers [event_name ]:
435434 kwargs .update (event_kwargs )
436- # Resolve weak references if present
437435 if args and isinstance (args [0 ], weakref .ref ):
438436 resolved_engine = args [0 ]()
439437 if resolved_engine is None :
440- # Engine was garbage collected, skip this handler
441- continue
438+ raise RuntimeError ("Engine reference not resolved. Cannot execute event handler." )
442439 first , others = ((resolved_engine ,), args [1 :])
443440 else :
444- first , others = ((args [0 ],), args [1 :]) if (args and args [0 ] == self ) else (tuple (), args )
441+ # metrics do not provide engine when registered
442+ first , others = ((), args )
443+
445444 func (* first , * (event_args + others ), ** kwargs )
446445
447446 def fire_event (self , event_name : Any ) -> None :
0 commit comments