Mypy未检测到await返回None的函数调用错误,如何解决?
解决Mypy无法检测
await非可等待对象的问题 你遇到的情况是Mypy默认未启用对await非可等待对象的检查,并非操作有误或已知限制,通过以下方式可以让Mypy检测到该错误:
临时启用检查(命令行方式):
运行Mypy时添加--disallow-awaiting-non-awaitable参数,示例命令:mypy --disallow-awaiting-non-awaitable your_script.py此时Mypy会抛出类似错误:
error: Expression of type "None" cannot be used in "await" expression。永久启用检查(配置文件方式):
在项目的pyproject.toml或mypy.ini中添加对应配置:
若使用pyproject.toml:[tool.mypy] disallow_awaiting_non_awaitable = true若使用
mypy.ini:[mypy] disallow_awaiting_non_awaitable = True启用严格模式:
直接使用--strict参数运行Mypy,该模式会自动包含disallow_awaiting_non_awaitable在内的一系列严格检查规则,命令示例:mypy --strict your_script.py
你给a()标注-> None后无效果,是因为该检查规则默认处于关闭状态,Mypy不会主动验证await的对象是否实现了Awaitable协议,必须手动开启上述选项才能触发检测。
内容的提问来源于stack exchange,提问作者nicoco
相关产品推荐
相关产品推荐

