mypy 和 pyproject.toml,选项仅在全局范围内有效

Uba*_*eri 23 mypy pyproject.toml

我希望仅对某些特定模块使用这些选项disable_error_code = ["name-defined"]ignore_missing_imports = true但我正在努力使其工作。以下是我的非工作pyproject.toml文件的摘录:

[tool.mypy]
python_version = "3.9"
disallow_untyped_defs = true
show_error_codes = true
no_implicit_optional = true
warn_return_any = true
warn_unused_ignores = true
exclude = ["scripts", "docs", "test"]


[[tool.mypy.overrides]]
module = [
    "firstmodule",
    "secondmodule",
    "utils",
    "config",
]
disable_error_code = ["name-defined"]
ignore_missing_imports = true
Run Code Online (Sandbox Code Playgroud)

更具体地说,如果我disable_error_code = ["name-defined"]按照上面的指示进行操作,那么我会收到以下错误:

pyproject.toml:[module =“utils”]:每个模块部分应该只指定每个模块标志(disable_error_code)

如果我ignore_missing_imports = true按照上面的指示保留,那么它会被忽略,并且会发出由于缺少导入而导致的错误。

相反,如果我将上述两个选项移至[tool.mypy]一切正常下方。

小智 19

我还想有选择地禁用尚未有类型提示的包的警告,这种方法似乎对我有用:

[[tool.mypy.overrides]]
module = "firstmodule.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "secondmodule.*"
ignore_missing_imports = true
Run Code Online (Sandbox Code Playgroud)


Wil*_*ing 10

我发现[[tool.mypy.overrides]]当禁用丢失的导入警告时,我可以使用带有逗号分隔的包名称列表的单个部分 - 例如

[[tool.mypy.overrides]]
module = "firstmodule.*,secondmodule.*"
ignore_missing_imports = true
Run Code Online (Sandbox Code Playgroud)