强制 mypy 对第三方包进行类型检查

问题描述

我使用的是完全类型感知的第三方包(在本例中为 jsonrpcserver,但此问题可能适用于其他包),甚至在其源代码中包含一个 py.typed 文件.

但是,由于打包错误py.typed 文件未安装。

结果,mypy 坚持

error: Skipping analyzing 'jsonrpcserver.response': found module but no type hints or library stubs

尽管我可以说模块确实有类型提示。即使缺少 py.typed,我是否可以强制 mypy 分析这个包?我不应该为此目的创建存根库,因为该包在其他方面是可识别类型的。

解决方法

我不知道有什么好的方法可以做到这一点。 this mypy github issue 中有一些关于为此目的引入标志的讨论,但目前还没有。

目前不太好的方法是在运行 mypy 之前自己创建 py.typed 文件(提到 here)。也许作为设置测试环境或类似环境的脚本的一部分。

获取该文件的正确路径:

python -c 'import jsonrpcserver; print(jsonrpcserver.__path__[0] + "/py.typed")'