我一直在使用 MyPy python 类型分析,我试图忽略特定类型警告,
这是我的 mypy.ini
[mypy]
python_version = 3.9
# Needed because of bug in MyPy
disallow_subclassing_any = False
# Options to make the checking stricter.
check_untyped_defs = True
disallow_untyped_defs = True
disallow_untyped_calls = True
#Plugins
plugins = numpy.typing.mypy_plugin
[mypy-numpy.*]
allow_untyped_defs = True
allow_untyped_calls = True
implicit_reexport = True
这是我的示例 py 代码,
import numpy as np
import numpy.typing as npt
def test() -> npt.NDArray[np.float32]:
distance_win: npt.NDArray[np.float32] = np.kron(
np.ones((10, 1))
, np.ones((10, 1))
)
print (distance_win)
return distance_win
if __name__ == '__main__':
print (test())
当我像下面一样运行 mypy 时,
mypy --config-file mypy.ini tests/experiments/py_templ.py
我得到以下输出
tests\experiments\py_templ.py:32: error: Call to untyped function "kron" in typed context [no-untyped-call]
Found 1 error in 1 file (checked 1 source file)
但是,在ini文件中,我允许allow_untyped_calls,为什么MyPy仍然抱怨?
总的来说,我无法获得 MyPy.ini 规范的范围。请帮忙。
正如评论所指出的,如果您键入检查了 numpy 模块,则应用那里的配置,而不是在类型检查调用 numpy 时应用。
新版本的 mypy 为您提供了一种有选择地忽略特定无类型调用的方法,请参阅此配置选项:https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-untyped-calls-exclude
(新版本的 numpy 也有类型注释!)