You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mypy在pre-commit钩子运行时报‘Too many arguments for object’,本地无错

问题排查:pre-commit钩子mypy报错但本地执行无问题

代码示例

from typing import Callable, Type, TypeVar

T = TypeVar("T")

def repo(class_: Type[T]) -> Callable:
    def instantiate(*args, **kwargs) -> T:
        return class_(*args, **kwargs)

    return instantiate

问题现象

上述代码在pre-commit钩子中运行mypy时抛出错误:error: Too many arguments for 'object',但本地执行python poetry run mypy repo.py却无此错误。

排查线索

  • 检查pre-commit配置中mypy的版本,确认是否与本地环境的mypy版本一致。不同版本的mypy对类型推断逻辑可能存在差异,旧版本可能无法正确处理Type[T]的参数兼容性。
  • 查看pre-commit钩子中mypy的执行参数,是否包含本地执行时未启用的严格检查选项(如--strict、--disallow-any-generics等),这类选项会触发更严格的类型校验规则。
  • 确认pre-commit运行的隔离环境是否与本地环境一致:pre-commit会在独立虚拟环境中运行钩子,可能未安装项目依赖的类型库,或者依赖版本不同,导致类型推断异常。
  • 检查pre-commit配置中mypy钩子的工作目录,是否与本地执行时的目录不同,导致mypy未正确读取项目的mypy.ini或pyproject.toml配置,转而使用默认的严格检查规则。
  • 验证代码中调用repo函数的位置:如果pre-commit检查的是整个代码库,可能存在其他地方错误地将object类传入repo函数,而本地仅检查了repo.py单个文件,因此未触发该错误。

内容的提问来源于stack exchange,提问作者Joe Catin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:33:31