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

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

39 lines
1.4 KiB
INI

[mypy]
python_version = 3.14
strict = True
warn_unused_configs = True
ignore_missing_imports = False
follow_imports = skip
show_error_codes = True
pretty = True
files =
app,
scripts/architecture/async_blocking.py,
scripts/architecture/mypy_policy.py
exclude = ^app/plugins(?:/|$)
platform = linux
# 完整宿主源码读取真实 .py/.pyi 合同;运行时插件副本由插件发布链路治理。
[mypy-app.*]
follow_imports = silent
follow_imports_for_stubs = True
# 读取已安装供应方的真实装饰器与路由签名,避免把已声明类型的接口视为 Any。
[mypy-click.*,fastapi.*]
follow_imports = silent
# 读取 Slack SDK 已声明的事件回调与客户端签名。
[mypy-slack_bolt.*,slack_sdk.*]
follow_imports = silent
# 使用 Pydantic 模型与 Uvicorn 的真实类型,避免从 Any 继承或擦除校验入口。
[mypy-pydantic.*,pydantic_settings.*,typing_extensions.*,uvicorn.*,pytest.*,_pytest.*]
follow_imports = silent
[mypy-langchain.*,langchain_core.*,langgraph.*,starlette.*]
follow_imports = silent
# 这些既有 SDK 未提供 py.typed 或类型桩;新增依赖不能复用全局缺失导入豁免。
[mypy-lxml.*,Pinyin2Hanzi.*,anitopy.*,apscheduler.*,boto3.*,botocore.*,cloakbrowser.*,cn2an.*,http_ece.*,moviepilot_rust.*,oss2.*,pillow_avif.*,py_vapid.*,pyquery.*,pystray.*,smbclient.*,smbprotocol.*,telegramify_markdown.*,torrentool.*]
ignore_missing_imports = True