mypy:预提交结果不同于

Ibo*_*lit 1 mypy pre-commit.com

我试图引入pre-commit一个相当大的现有项目并将现有的直接调用替换为mypypre-commit但是,结果有所不同。试图详细描述我所尝试过的一切或期望得到关于该做什么的明确答案是不合理的。我只是希望得到一些关于如何诊断这种情况的指导或建议。

问题就在这里。当我运行“旧版”mypy 调用时,一切都会过去,但是当我调用 时pre-commit run mypy --all-files,我会收到很多错误,如下所示:

pack_a/pack_b/pack_c/json_formatter.py:171:13: error: Returning
Any from function declared to return "str"  [no-any-return]
                return orjson.dumps(result, self._default).decode('UTF-8')
Run Code Online (Sandbox Code Playgroud)

有问题的函数确实被声明为 return str,但也是如此orjson.dumps,所以看起来这应该通过(它返回bytes是精确的,但不是Any)。

我得到的另一种错误是Unused "type: ignore" comment

我试图找出配置之间的差异,但找不到。

mypy现在的调用方式如下:

$(VENV)/bin/mypy --install-types --non-interactive $(CODE)
Run Code Online (Sandbox Code Playgroud)

$(CODE)包含“代码”的所有目录的列表在哪里(而不是测试和支持脚本)

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v0.950
  hooks:
    - id: mypy
      args: [
         "--config-file=setup.cfg",
          --no-strict-optional,
          --ignore-missing-imports,
        ]
      additional_dependencies:
        - pydantic
        - returns
         ... (I checked all the types-* files the old mypy installs and added them here)
      exclude: (a regex to exclude the non-code dirs)

Run Code Online (Sandbox Code Playgroud)

我不确定如何检查这两种配置是否检查同一组文件,但它们报告的检查文件数量是相同的。

还有一个问题是,当我编辑文件然后运行时pre-commit run mypy,我得到的错误比pre-commit run mypy --all-files

有什么我可以尝试诊断的吗?

Ant*_*ile 6

mirrors -mypy 自述文件解决了这个问题——

因为从隔离的 virtualenvpre-commit运行mypy(没有依赖项),您可能还会发现添加类型化依赖项很有用,additional_dependencies这样mypy可以更好地执行动态分析

至少从你的描述来看你失踪orjson了——也许更多


免责声明:我写了预提交