"""A simple callback manager for tracing Geneator calls"""fromtypingimportCallable,Literal
[docs]classCallbackManager:def__init__(self):self.callbacks={"on_success":[],"on_failure":[],"on_complete":[],# You can define more event types as needed.}
[docs]defregister_callback(self,event_type:Literal["on_success","on_failure","on_complete"],callback:Callable,):"""Register a callback for a specific event type."""ifevent_typeinself.callbacks:self.callbacks[event_type].append(callback)else:raiseValueError(f"Unsupported event type: {event_type}")
[docs]deftrigger_callbacks(self,event_type:Literal["on_success","on_failure","on_complete"],*args,**kwargs,):"""Invoke all callbacks for a given event type."""ifevent_typeinself.callbacks:forcallbackinself.callbacks[event_type]:callback(*args,**kwargs)else:raiseValueError(f"Unsupported event type: {event_type}")