From de10408eaaf1a8dc0cd294af10da76f35e6536d7 Mon Sep 17 00:00:00 2001 From: Morad Moqbel <116935498+MoradMoqbel@users.noreply.github.com> Date: Sun, 30 Aug 2026 08:24:52 +0300 Subject: [PATCH] [Beifong] [ApiPatch] Migrate deprecated pydantic API calls (6 files) (#1118) --- .../beifong/agents/search_agent.py | 4 ++-- .../beifong/models/podcast_config_schemas.py | 5 ++--- .../beifong/models/podcast_schemas.py | 16 ++++++---------- .../beifong/models/source_schemas.py | 5 ++--- .../beifong/models/tasks_schemas.py | 8 ++++---- .../beifong/routers/podcast_router.py | 2 +- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/agents/search_agent.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/agents/search_agent.py index c193b60c..0e06063c 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/agents/search_agent.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/agents/search_agent.py @@ -97,9 +97,9 @@ def search_agent_run(agent: Agent, query: str) -> str: session_id=session_id, ) response = search_agent.run(query, session_id=session_id) - response_dict = response.to_dict() + response_dict = response.model_dump() current_state["stage"] = "search" current_state["search_results"] = response_dict["content"]["items"] SessionService.save_session(session_id, current_state) has_results = "search_results" in current_state and current_state["search_results"] - return f"Found {len(response_dict['content']['items'])} sources about {query} {'and added to the search_results' if has_results else ''}" \ No newline at end of file + return f"Found {len(response_dict['content']['items'])} sources about {query} {'and added to the search_results' if has_results else ''}" diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_config_schemas.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_config_schemas.py index 0e8fc1e0..82b2440f 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_config_schemas.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_config_schemas.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, ConfigDict from typing import Optional @@ -20,8 +20,7 @@ class PodcastConfig(PodcastConfigBase): created_at: Optional[str] = None updated_at: Optional[str] = None - class Config: - from_attributes = True + model_config = ConfigDict(from_attributes=True) class PodcastConfigCreate(PodcastConfigBase): diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_schemas.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_schemas.py index a372d8ef..ff5028ca 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_schemas.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/podcast_schemas.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict, model_validator from typing import Optional, List, Dict, Any, Union @@ -17,8 +17,7 @@ class Podcast(PodcastBase): created_at: Optional[str] = None audio_path: Optional[str] = None - class Config: - from_attributes = True + model_config = ConfigDict(from_attributes=True) class PodcastContent(BaseModel): @@ -31,16 +30,13 @@ class PodcastSource(BaseModel): url: Optional[str] = None source: Optional[str] = None + @model_validator(mode='before') @classmethod - def __get_validators__(cls): - yield cls.validate - - @classmethod - def validate(cls, v): + def validate_source_input(cls, v): if isinstance(v, str): - return cls(url=v) + return {'url': v} if isinstance(v, dict): - return cls(**v) + return v raise ValueError("Source must be a string or a dict") diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/source_schemas.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/source_schemas.py index e36af089..dfb5ef8a 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/source_schemas.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/source_schemas.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict from typing import Optional, List @@ -32,8 +32,7 @@ class Source(SourceBase): created_at: Optional[str] = None last_crawled: Optional[str] = None - class Config: - from_attributes = True + model_config = ConfigDict(from_attributes=True) class SourceCreate(SourceBase): diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/tasks_schemas.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/tasks_schemas.py index dbf03fbb..6f743671 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/tasks_schemas.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/models/tasks_schemas.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, validator +from pydantic import BaseModel, field_validator, ConfigDict from typing import Optional, List, Dict, Any from enum import Enum @@ -62,7 +62,8 @@ class TaskBase(BaseModel): description: Optional[str] = None enabled: bool = True - @validator("task_type") + @field_validator("task_type") + @classmethod def set_command_from_type(cls, v): if v not in TASK_TYPES: raise ValueError(f"Invalid task type: {v}") @@ -75,8 +76,7 @@ class Task(TaskBase): last_run: Optional[str] = None created_at: Optional[str] = None - class Config: - from_attributes = True + model_config = ConfigDict(from_attributes=True) class TaskCreate(TaskBase): diff --git a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/routers/podcast_router.py b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/routers/podcast_router.py index 2dcc19a5..69e76679 100644 --- a/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/routers/podcast_router.py +++ b/advanced_ai_agents/multi_agent_apps/ai_news_and_podcast_agents/beifong/routers/podcast_router.py @@ -136,7 +136,7 @@ async def update_podcast(podcast_id: int = Path(..., description="The ID of the Returns the updated podcast metadata. """ - update_data = {k: v for k, v in podcast_data.dict().items() if v is not None} + update_data = {k: v for k, v in podcast_data.model_dump().items() if v is not None} return await podcast_service.update_podcast(podcast_id, update_data)