From 2e57bb74d2b23db084f2cece3ecd1b6c8324f93c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Sat, 24 May 2025 21:01:04 -0700 Subject: [PATCH] BaseObject: do not raise exception if event handler not registered --- CHANGELOG.md | 2 ++ src/pipecat/utils/base_object.py | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 538b01f1e..f7db1e97d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Don't raise an exception if event handler is not registered. + - Upgraded `deepgram-sdk` to 4.1.0. - Updated `GoogleTTSService` to use Google's streaming TTS API. The default diff --git a/src/pipecat/utils/base_object.py b/src/pipecat/utils/base_object.py index 49705a899..03b42ade0 100644 --- a/src/pipecat/utils/base_object.py +++ b/src/pipecat/utils/base_object.py @@ -49,14 +49,16 @@ class BaseObject(ABC): return decorator def add_event_handler(self, event_name: str, handler): - if event_name not in self._event_handlers: - raise Exception(f"Event handler {event_name} not registered") - self._event_handlers[event_name].append(handler) + if event_name in self._event_handlers: + self._event_handlers[event_name].append(handler) + else: + logger.warning(f"Event handler {event_name} not registered") def _register_event_handler(self, event_name: str): - if event_name in self._event_handlers: - raise Exception(f"Event handler {event_name} already registered") - self._event_handlers[event_name] = [] + if event_name not in self._event_handlers: + self._event_handlers[event_name] = [] + else: + logger.warning(f"Event handler {event_name} not registered") async def _call_event_handler(self, event_name: str, *args, **kwargs): # If we haven't registered an event handler, we don't need to do