我想在包的源代码中强制执行类型提示,但不在测试代码中。有没有办法在排除测试目录的同时使用
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 错误。
您可以配置
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.*"]
您可以以相同的方式在每个模块的基础上调整大多数其他配置标志。