Files
MoviePilot/app/schemas/common.py
jxxghp 6d4ce83837 fix(types): clear host mypy debt and prevent typing regressions
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。

修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00

107 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
API 端点共享的小型业务数据模型。
"""
from typing import Any, Dict, Optional
from typing import Union as Union
from pydantic import BaseModel, Field, RootModel
from typing_extensions import TypeAliasType as TypeAliasType
# 这些类型构造器曾由 app.schemas 根入口导出,保留兼容导出。
type JsonData = (
dict[str, JsonData] | list[JsonData] | str | int | float | bool | None
)
"""
可递归序列化的 JSON 数据;OpenAPI 会展示每一种合法 JSON 结构。
"""
class JsonObject(RootModel[dict[str, JsonData]]):
"""
字段由运行时扩展点决定的 JSON 对象。
"""
class JsonObjectList(RootModel[list[JsonObject]]):
"""
字段由运行时扩展点决定的 JSON 对象列表。
"""
class IdData(BaseModel):
"""
创建资源后返回的资源 ID。
"""
id: Optional[int | str] = Field(default=None, description="资源 ID")
class ValueData(BaseModel):
"""
单个动态配置值。
"""
value: JsonData = Field(default=None, description="配置值")
class FileNameData(BaseModel):
"""
文件操作结果中的文件名。
"""
filename: Optional[str] = Field(default=None, description="文件名")
class NameData(BaseModel):
"""
名称计算结果。
"""
name: Optional[str] = Field(default=None, description="名称")
class ServiceClientInfo(BaseModel):
"""
可选择的下载器或媒体服务器摘要。
"""
name: Optional[str] = Field(default=None, description="实例名称")
type: Optional[str] = Field(default=None, description="服务类型")
class ProgressKeyData(BaseModel):
"""
异步任务进度查询标识。
"""
progress_key: str = Field(description="进度查询标识")
class BatchProgressKeyData(ProgressKeyData):
"""
批量异步任务进度查询标识。
"""
history_ids: list[int] = Field(default_factory=list, description="历史记录 ID 列表")
class TimeData(BaseModel):
"""
网络请求耗时。
"""
time: int | float = Field(description="耗时毫秒数")
class ManageRequest(BaseModel):
"""
通用管理请求:目标标识 + 管理动作 + 透传参数。
用于通知渠道、网盘存储等统一管理能力入口,
动作与参数的具体语义由目标模块自行解释
"""
target: str = Field(description="管理目标标识,如渠道名或存储类型")
action: str = Field(description="管理动作标识")
params: Dict[str, Any] = Field(default_factory=dict, description="表单与动作参数,透传给目标模块")