diff --git a/src/pipecat/pipeline/task.py b/src/pipecat/pipeline/task.py index e47c0f849..692f325d9 100644 --- a/src/pipecat/pipeline/task.py +++ b/src/pipecat/pipeline/task.py @@ -9,7 +9,7 @@ import time from typing import Any, AsyncIterable, Dict, Iterable, List, Optional, Tuple, Type from loguru import logger -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field from pipecat.clocks.base_clock import BaseClock from pipecat.clocks.system_clock import SystemClock @@ -69,10 +69,10 @@ class PipelineParams(BaseModel): enable_metrics: bool = False enable_usage_metrics: bool = False heartbeats_period_secs: float = HEARTBEAT_SECONDS - observers: List[BaseObserver] = [] + observers: List[BaseObserver] = Field(default_factory=list) report_only_initial_ttfb: bool = False send_initial_empty_metrics: bool = True - start_metadata: Dict[str, Any] = {} + start_metadata: Dict[str, Any] = Field(default_factory=dict) class PipelineTaskSource(FrameProcessor): diff --git a/src/pipecat/processors/frameworks/rtvi.py b/src/pipecat/processors/frameworks/rtvi.py index 7bd54237d..771c5a3e2 100644 --- a/src/pipecat/processors/frameworks/rtvi.py +++ b/src/pipecat/processors/frameworks/rtvi.py @@ -110,7 +110,7 @@ class RTVIActionArgument(BaseModel): class RTVIAction(BaseModel): service: str action: str - arguments: List[RTVIActionArgument] = [] + arguments: List[RTVIActionArgument] = Field(default_factory=list) result: Literal["bool", "number", "string", "array", "object"] handler: Callable[["RTVIProcessor", str, Dict[str, Any]], Awaitable[ActionResult]] = Field( exclude=True diff --git a/src/pipecat/services/openai_realtime_beta/events.py b/src/pipecat/services/openai_realtime_beta/events.py index c2dcb7f09..6fa38a8a1 100644 --- a/src/pipecat/services/openai_realtime_beta/events.py +++ b/src/pipecat/services/openai_realtime_beta/events.py @@ -115,7 +115,7 @@ class ResponseProperties(BaseModel): instructions: Optional[str] = None voice: Optional[str] = None output_audio_format: Optional[Literal["pcm16", "g711_ulaw", "g711_alaw"]] = None - tools: Optional[List[Dict]] = [] + tools: Optional[List[Dict]] = Field(default_factory=list) tool_choice: Optional[Literal["auto", "none", "required"]] = None temperature: Optional[float] = None max_response_output_tokens: Optional[Union[int, Literal["inf"]]] = None diff --git a/src/pipecat/transports/base_transport.py b/src/pipecat/transports/base_transport.py index 91270c365..c634babb8 100644 --- a/src/pipecat/transports/base_transport.py +++ b/src/pipecat/transports/base_transport.py @@ -7,7 +7,7 @@ from abc import abstractmethod from typing import List, Mapping, Optional -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field from pipecat.audio.filters.base_audio_filter import BaseAudioFilter from pipecat.audio.mixers.base_audio_mixer import BaseAudioMixer @@ -34,7 +34,7 @@ class TransportParams(BaseModel): audio_out_bitrate: int = 96000 audio_out_10ms_chunks: int = 4 audio_out_mixer: Optional[BaseAudioMixer | Mapping[Optional[str], BaseAudioMixer]] = None - audio_out_destinations: List[str] = [] + audio_out_destinations: List[str] = Field(default_factory=list) audio_in_enabled: bool = False audio_in_sample_rate: Optional[int] = None audio_in_channels: int = 1 @@ -49,7 +49,7 @@ class TransportParams(BaseModel): video_out_bitrate: int = 800000 video_out_framerate: int = 30 video_out_color_format: str = "RGB" - video_out_destinations: List[str] = [] + video_out_destinations: List[str] = Field(default_factory=list) vad_enabled: bool = False vad_audio_passthrough: bool = False vad_analyzer: Optional[VADAnalyzer] = None