From 5885fcc230f4aaee984d54b04699fb4516278cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 24 Jan 2025 16:36:36 -0800 Subject: [PATCH] add id and name properties --- src/pipecat/pipeline/task.py | 12 ++++++++++-- src/pipecat/pipeline/task_observer.py | 13 +++++++++++-- src/pipecat/processors/frame_processor.py | 12 ++++++++++-- src/pipecat/transports/base_transport.py | 12 ++++++++++-- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/pipecat/pipeline/task.py b/src/pipecat/pipeline/task.py index 34a7bb5eb..9149a41a2 100644 --- a/src/pipecat/pipeline/task.py +++ b/src/pipecat/pipeline/task.py @@ -94,8 +94,8 @@ class PipelineTask(BaseTask): params: PipelineParams = PipelineParams(), clock: BaseClock = SystemClock(), ): - self.id: int = obj_id() - self.name: str = f"{self.__class__.__name__}#{obj_count(self)}" + self._id: int = obj_id() + self._name: str = f"{self.__class__.__name__}#{obj_count(self)}" self._pipeline = pipeline self._clock = clock @@ -123,6 +123,14 @@ class PipelineTask(BaseTask): self._observer = TaskObserver(params.observers) + @property + def id(self) -> int: + return self._id + + @property + def name(self) -> str: + return self._name + def has_finished(self) -> bool: """Indicates whether the tasks has finished. That is, all processors have stopped. diff --git a/src/pipecat/pipeline/task_observer.py b/src/pipecat/pipeline/task_observer.py index 1bf4ff0f9..da5a6818f 100644 --- a/src/pipecat/pipeline/task_observer.py +++ b/src/pipecat/pipeline/task_observer.py @@ -12,7 +12,7 @@ from attr import dataclass from pipecat.frames.frames import Frame from pipecat.observers.base_observer import BaseObserver from pipecat.processors.frame_processor import FrameDirection, FrameProcessor -from pipecat.utils.utils import cancel_task, create_task, obj_count +from pipecat.utils.utils import cancel_task, create_task, obj_count, obj_id @dataclass @@ -55,9 +55,18 @@ class TaskObserver(BaseObserver): """ def __init__(self, observers: List[BaseObserver] = []): - self.name: str = f"{self.__class__.__name__}#{obj_count(self)}" + self._id: int = obj_id() + self._name: str = f"{self.__class__.__name__}#{obj_count(self)}" self._proxies: List[Proxy] = self._create_proxies(observers) + @property + def id(self) -> int: + return self._id + + @property + def name(self) -> str: + return self._name + async def stop(self): """Stops all proxy observer tasks.""" for proxy in self._proxies: diff --git a/src/pipecat/processors/frame_processor.py b/src/pipecat/processors/frame_processor.py index 1895147dd..6a8252677 100644 --- a/src/pipecat/processors/frame_processor.py +++ b/src/pipecat/processors/frame_processor.py @@ -41,8 +41,8 @@ class FrameProcessor: loop: asyncio.AbstractEventLoop | None = None, **kwargs, ): - self.id: int = obj_id() - self.name = name or f"{self.__class__.__name__}#{obj_count(self)}" + self._id: int = obj_id() + self._name = name or f"{self.__class__.__name__}#{obj_count(self)}" self._parent: "FrameProcessor" | None = None self._prev: "FrameProcessor" | None = None self._next: "FrameProcessor" | None = None @@ -83,6 +83,14 @@ class FrameProcessor: # the exception to this rule. This create this task. self.__create_push_task() + @property + def id(self) -> int: + return self._id + + @property + def name(self) -> str: + return self._name + @property def interruptions_allowed(self): return self._allow_interruptions diff --git a/src/pipecat/transports/base_transport.py b/src/pipecat/transports/base_transport.py index 00e269359..fd14033f2 100644 --- a/src/pipecat/transports/base_transport.py +++ b/src/pipecat/transports/base_transport.py @@ -53,13 +53,21 @@ class BaseTransport(ABC): output_name: Optional[str] = None, loop: Optional[asyncio.AbstractEventLoop] = None, ): - self.id: int = obj_id() - self.name = name or f"{self.__class__.__name__}#{obj_count(self)}" + self._id: int = obj_id() + self._name = name or f"{self.__class__.__name__}#{obj_count(self)}" self._input_name = input_name self._output_name = output_name self._loop = loop or asyncio.get_running_loop() self._event_handlers: dict = {} + @property + def id(self) -> int: + return self._id + + @property + def name(self) -> str: + return self._name + @abstractmethod def input(self) -> FrameProcessor: raise NotImplementedError