我最近在启用$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或...?
答案 0 :(得分:8)
要在特定行上明确禁止MyPy,请添加# type: ignore
形式的注释。
要在整个模块中隐藏MyPy,请在模块顶部添加相同的注释。