禁止非类型化定义,测试目录除外

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

我想在包的源代码中强制执行类型提示,但不在测试代码中。有没有办法在排除测试目录的同时使用

disallow_untyped_defs = true

这是我尝试过的:

pyproject.toml

[tool.mypy]
disallow_untyped_defs = true
untyped_calls_exclude = ["tests"]

src/mymodule/file.py

def hello_world() -> None:
    print("hi there!")

一个空的

src/mymodule/__init__.py
,和
tests/test_file.py

def test_1():
    assert 1 < 2

但是运行

mypy tests src/mymodule
返回:

tests/test_file.py:1:错误:函数缺少返回类型注释 [no-untyped-def]
test/test_file.py:1:注意:如果函数不返回值,请使用“-> None”
在 1 个文件中发现 1 个错误(检查了 3 个源文件)

我知道我可以通过运行

mypy src/mymodule
来限制输入来限制输入目录,但我仍然想在测试目录中检查其他类型的提示警告。我还想消除开发时 VSCode Mypy Type Checker 扩展引发的 untyped-def 错误。

python mypy
1个回答
0
投票

您可以配置

mypy
以消除任何所需模块中的部分或全部错误。在
pyproject.toml
中,以下内容将消除测试文件夹中的所有
mypy
错误(我总是这样做,因为为非库代码键入测试毫无意义,但您可能不想要)。

[[tool.mypy.overrides]]
ignore_errors = true
module = ["test.*"]

以下仅允许无类型声明:

[[tool.mypy.overrides]]
disallow_incomplete_defs = false
disallow_untyped_defs = false
module = ["test.*"]

您可以以相同的方式在每个模块的基础上调整大多数其他配置标志

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