Archived
fix: 修复 7 处变量可能未绑定的真缺陷,类型检查升到 standard
为什么:IDE 里成片的黄色波浪线并非风格噪声。ruff 与 pyright(basic) 都是 0 报错,但 basic 会整体漏报「变量可能未绑定」这类**可执行缺陷**;实测 standard 多报 7 处且全部为真——异常处理器引用了尚未赋值的局部变量,一旦走进 异常分支就会 NameError 二次崩溃,把原始异常彻底掩盖。 - core/db.py, core/http_client.py:3 处 @asynccontextmanager 的返回标注 AsyncIterator[X] 更正为 AsyncGenerator[X, None](前者不含 send 语义) - core/state.py:三个模块级缓存补 TypedDict 建模。原先无标注的 dict 字面量被 推断为「所有值类型的并集」(float | None),每个读写点都退化成联合类型; 拆成 _VipCache(data 可为 None 表示未探测)与 _VipEntry(data 必定存在)后, 类型检查立刻抓出 account.py 对未探测缓存的直接解包隐患 - services/batch.py:zip_valid 提到函数头。ZIP 构建前的业务错误(参数缺失/ 无歌曲)会 early raise,而异常处理器引用了该名字 → NameError 二次崩溃 - services/podcast.py:radio_name、pct 同理补初始化 - services/downloads.py:声明返回 str 却可能给出 None,改 `or ''` 满足契约 - web/routers/download.py:id_list 提前绑定 - web/auth_state.py:解包出的 c 未被使用 - pyproject.toml:typeCheckingMode 由 basic 升到 standard 作为门禁,并移除 已被 standard 覆盖的 reportGeneralTypeIssues 门禁:ruff All checks passed · pyright(standard) 0 errors 0 warnings
This commit is contained in:
1 parent
fc7fc21284
commit
183f5744d8
9 files changed
+58
-16
No files matched your search
+5
-2
@@ -92,11 +92,14 @@ exclude = [".venv", ".zcode", "data", "downloads", "templates", "static"]
|
||||
venvPath = "."
|
||||
venv = ".venv"
|
||||
pythonVersion = "3.12"
|
||||
typeCheckingMode = "basic"
|
||||
typeCheckingMode = "standard"
|
||||
reportMissingImports = true
|
||||
# standard 比 basic 多出「变量可能未绑定 / 实参类型不符 / 无意义重定义 / 未使用符号」
|
||||
# 等**可执行缺陷**(basic 全部漏报,实测 standard 多报 7 处真实缺陷),
|
||||
# 故作为门禁级别;strict 的 reportUnknown* 需要给全部第三方库补存根,暂不启用。
|
||||
# 以下三项在 standard 下已由类型系统覆盖,降为 warning 以避免第三方存根不全的噪声
|
||||
reportOptionalMemberAccess = "warning"
|
||||
reportAttributeAccessIssue = "warning"
|
||||
reportGeneralTypeIssues = "warning"
|
||||
|
||||
# ============ Pytest ============
|
||||
[tool.pytest.ini_options]
|
||||
|
||||
Reference in new issue
Block a user