MyPy:无法抑制[无类型调用]

问题描述 投票:0回答:1

我一直在使用 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 规范的范围。请帮忙。

python python-3.x mypy static-typing
1个回答
0
投票

正如评论所指出的,如果您键入检查了 numpy 模块,则应用那里的配置,而不是在类型检查调用 numpy 时应用。

新版本的 mypy 为您提供了一种有选择地忽略特定无类型调用的方法,请参阅此配置选项:https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-untyped-calls-exclude

(新版本的 numpy 也有类型注释!)

© www.soinside.com 2019 - 2024. All rights reserved.