我可以在线抑制mypy错误吗?

时间:2019-02-25 06:14:09

标签: python python-3.x mypy

我最近在启用$PYTHONSTARTUP语法检查的情况下打开我的mypy文件时犯了一个错误。结果,我开始出现此错误:

startup.py|79 col 2 error| Incompatible types in assignment (expression has type "HistoryPrompt", variable has type "str")

第79行:

sys.ps1 = HistoryPrompt()

我立即想到:“ {@ {1}},乔夫!你是完全正确的!但是,那正是我想做的,所以你也错了!”

我去看看mypy模块是否有某种“存根”,但找不到任何东西。我猜测sys是通过查看存储在变量中的值来确定类型的(默认值为“ >>>”,它是mypy)。

当然,实际上,类型必须是不存在的str,表示要响应typing.Stringifiable的对象。

已经到了尽头,我去寻找一种方法告诉str(x)来抑制错误。如此众多的其他工具都支持mypy,我认为必须 正确,对吧?

错了。或至少在我的版本中找不到,该版本是:# noqa: xxx

所以我设计了一个 hack 聪明的解决方法:

mypy 0.670

我的问题是:有没有一种方式来抑制此特定错误,即在线(最佳),import typing # Work around mypy error: Incompatible types in assignment suppress_mypy_error: typing.Any = HistoryPrompt() sys.ps1 = suppress_mypy_error 或通过向mypy.ini提交PR或...?

1 个答案:

答案 0 :(得分:8)

要在特定行上明确禁止MyPy,请添加# type: ignore形式的注释。

要在整个模块中隐藏MyPy,请在模块顶部添加相同的注释。

来源:https://mypy.readthedocs.io/en/latest/common_issues.html#spurious-errors-and-locally-silencing-the-checker