其他
当需要从 mypy 排除列表移除指定模块并修复类型债时…
适用场景:并行处理 typing-debt,或收到从 `pyproject.toml` 的 mypy exclusion overrides 中移除指定模块的任务时,按小范围批次安全完成类型修复和验证。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
当需要从 mypy 排除列表移除指定模块特定
解决思路
- 开始前在任务提示中确认以下输入存在:worktree/分支名、要从排除列表中移除的确切模块列表、归属/域边界、预期验证命令(如有自定义);缺失则先询问,不要开始编辑。
- 仅从 `pyproject.toml` 的 mypy exclusion 列表中移除分配给你的模块条目。
- 代码更改保持在分配范围内,除非为了通过 typing/tests 必须改动直接依赖。
- 除非 manager 明确批准,不扩展到跨团队模块。
- 避免 blanket `# type: ignore`;如不可避免,使用窄范围 `ignore[code]` 并附简短原因。
- 执行排除变更:从 `pyproject.toml` 的 exclusion override 中移除分配模块。
- 对分配范围运行 mypy:优先使用定向路径以获得快速反馈。
- 使用显式类型模式修复 mypy 错误:`isinstance` narrowing、准确返回类型、带类型类属性、relation-safe model access。
- 对触及区域运行测试:对修改的模块/测试执行定向 pytest。
- 继续前修复回归。
- 对变更文件运行 pre-commit:`pre-commit run --files <changed files>`。
- 如果 hooks 自动修复文件,重复运行直到 clean。
- 最终验证:最终编辑后重新运行定向 mypy 和测试。
- 确保没有改动无关文件。
- 优先使用精确类型而不是 `Any`。
- 在访问联合类型属性前使用类型收窄。
- 保持方法 override 签名与基类兼容。
- 当推断较弱时,在测试/辅助代码中标注类属性。
- 当 stubs 不暴露原始 `*_id` 属性时,使用关系对象(`obj.related`)。
- 每个批次结束按固定模板返回结构化总结,包含:分支/worktree、归属/域、从排除列表移除的模块、变更文件、关键类型修复、验证(`mypy`、`pre-commit --files`、`pytest`)、备注(剩余阻塞、任何新增 ignore 条目)。
- 遇到修复需要触及另一个团队/域、`pyproject.toml` 中 exclusion 冲突无法安全解决、或错误量表明批次过大应拆分时,停止并上报给 manager,而不是扩大范围。
适用边界 · 注意事项
- 修复需要触及另一个团队/域时,不适用;应停止并上报。
- `pyproject.toml` 中 exclusion 冲突无法安全解决时,不适用;应停止并上报。
- 错误量表明批次过大、应拆分时,不适用;不要继续扩大范围。