fix pydantic

This commit is contained in:
jxxghp
2025-11-01 09:51:23 +08:00
parent 09a19e94d5
commit d523c7c916
47 changed files with 160 additions and 135 deletions

View File

@@ -2,7 +2,7 @@
from datetime import datetime
from typing import Dict, List, Optional, Any
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict, field_serializer
class ConversationMemory(BaseModel):
@@ -16,10 +16,11 @@ class ConversationMemory(BaseModel):
created_at: datetime = Field(default_factory=datetime.now, description="创建时间")
updated_at: datetime = Field(default_factory=datetime.now, description="更新时间")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
model_config = ConfigDict()
@field_serializer('created_at', 'updated_at', when_used='json')
def serialize_datetime(self, value: datetime) -> str:
return value.isoformat()
class AgentState(BaseModel):
@@ -30,10 +31,11 @@ class AgentState(BaseModel):
is_thinking: bool = Field(default=False, description="是否正在思考")
last_activity: datetime = Field(default_factory=datetime.now, description="最后活动时间")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
model_config = ConfigDict()
@field_serializer('last_activity', when_used='json')
def serialize_datetime(self, value: datetime) -> str:
return value.isoformat()
class UserMessage(BaseModel):

View File

@@ -1,7 +1,7 @@
from pathlib import Path
from typing import Optional, Dict, Any, List, Set, Callable
from pydantic import BaseModel, Field, root_validator
from pydantic import BaseModel, Field, model_validator
from app.schemas.message import MessageChannel
from app.schemas.file import FileItem
@@ -68,7 +68,8 @@ class AuthCredentials(ChainEventData):
channel: Optional[str] = Field(default=None, description="认证渠道")
service: Optional[str] = Field(default=None, description="服务名称")
@root_validator(pre=True)
@model_validator(mode='before')
@classmethod
def check_fields_based_on_grant_type(cls, values): # noqa
grant_type = values.get("grant_type")
if not grant_type:

View File

@@ -1,6 +1,6 @@
from typing import Optional, Any
from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict
class DownloadHistory(BaseModel):
@@ -51,8 +51,7 @@ class DownloadHistory(BaseModel):
# 自定义剧集组
episode_group: Optional[str] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class TransferHistory(BaseModel):
@@ -97,5 +96,4 @@ class TransferHistory(BaseModel):
# 日期
date: Optional[str] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)

View File

@@ -1,7 +1,7 @@
from pathlib import Path
from typing import Optional, Dict, Union, List, Any
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict
from app.schemas.types import MediaType
@@ -125,8 +125,7 @@ class MediaServerItem(BaseModel):
lst_mod_date: Optional[str] = None
user_state: Optional[MediaServerItemUserState] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class MediaServerSeasonInfo(BaseModel):

View File

@@ -40,7 +40,7 @@ class CommingMessage(BaseModel):
"""
转换为字典
"""
items = self.dict()
items = self.model_dump()
for k, v in items.items():
if isinstance(v, MessageChannel):
items[k] = v.value
@@ -88,7 +88,7 @@ class Notification(BaseModel):
"""
转换为字典
"""
items = self.dict()
items = self.model_dump()
for k, v in items.items():
if isinstance(v, MessageChannel) \
or isinstance(v, NotificationType):

View File

@@ -1,6 +1,6 @@
from typing import Optional, Any, Union, Dict
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict
class Site(BaseModel):
@@ -47,8 +47,7 @@ class Site(BaseModel):
# 下载器
downloader: Optional[str] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class SiteStatistic(BaseModel):
@@ -67,8 +66,7 @@ class SiteStatistic(BaseModel):
# 备注
note: Optional[Any] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class SiteUserData(BaseModel):

View File

@@ -1,6 +1,6 @@
from typing import Optional, List, Dict, Any
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict
class Subscribe(BaseModel):
@@ -76,8 +76,7 @@ class Subscribe(BaseModel):
# 剧集组
episode_group: Optional[str] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class SubscribeShare(BaseModel):

View File

@@ -73,10 +73,10 @@ class TransferTask(BaseModel):
返回字典
"""
dicts = vars(self).copy()
dicts["fileitem"] = self.fileitem.dict() if self.fileitem else None
dicts["meta"] = self.meta.dict() if self.meta else None
dicts["mediainfo"] = self.mediainfo.dict() if self.mediainfo else None
dicts["target_directory"] = self.target_directory.dict() if self.target_directory else None
dicts["fileitem"] = self.fileitem.model_dump() if self.fileitem else None
dicts["meta"] = self.meta.model_dump() if self.meta else None
dicts["mediainfo"] = self.mediainfo.model_dump() if self.mediainfo else None
dicts["target_directory"] = self.target_directory.model_dump() if self.target_directory else None
return dicts
@@ -144,8 +144,8 @@ class TransferInfo(BaseModel):
返回字典
"""
dicts = vars(self).copy()
dicts["fileitem"] = self.fileitem.dict() if self.fileitem else None
dicts["target_item"] = self.target_item.dict() if self.target_item else None
dicts["fileitem"] = self.fileitem.model_dump() if self.fileitem else None
dicts["target_item"] = self.target_item.model_dump() if self.target_item else None
return dicts

View File

@@ -1,6 +1,6 @@
from typing import Optional
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict
# Shared properties
@@ -22,8 +22,7 @@ class UserBase(BaseModel):
# 个性化设置
settings: Optional[dict] = Field(default_factory=dict)
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
# Properties to receive via API on creation
@@ -48,8 +47,7 @@ class UserUpdate(UserBase):
class UserInDBBase(UserBase):
id: Optional[int] = None
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
# Additional properties to return via API

View File

@@ -1,6 +1,6 @@
from typing import Optional, List
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, ConfigDict
from app.schemas.context import Context, MediaInfo
from app.schemas.download import DownloadTask
@@ -29,8 +29,7 @@ class Workflow(BaseModel):
add_time: Optional[str] = Field(default=None, description="创建时间")
last_time: Optional[str] = Field(default=None, description="最后执行时间")
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)
class ActionParams(BaseModel):
@@ -108,5 +107,4 @@ class WorkflowShare(BaseModel):
date: Optional[str] = Field(default=None, description="分享时间")
count: Optional[int] = Field(default=0, description="复用人次")
class Config:
orm_mode = True
model_config = ConfigDict(from_attributes=True)