Python PEP484类型——如何用NoReturn类型注释Callable?

Python PEP484类型——如何用NoReturn类型注释Callable?,python,python-3.x,python-typing,Python,Python 3.x,Python Typing,是否可以使用NoReturn类型注释Callable 我希望这样做会产生一个错误: from sys import exit from typing import Callable, NoReturn f: Callable[..., NoReturn] = exit >>> from sys import exit >>> from typing import Callable, NoReturn >>> f: Callable[...

是否可以使用
NoReturn
类型注释
Callable

我希望这样做会产生一个错误:

from sys import exit
from typing import Callable, NoReturn

f: Callable[..., NoReturn] = exit
>>> from sys import exit
>>> from typing import Callable, NoReturn
>>> f: Callable[..., NoReturn] = exit
>>>
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/ceral/python/3.7.0/Frameworks/python.framework/Versions/3.7/lib/python3.7/typing.py”,第755行,在__
返回self.\u getitem\u inner\u(参数)
文件“/usr/local/ceral/python/3.7.0/Frameworks/python.framework/Versions/3.7/lib/python3.7/typing.py”,第251行,内部
返回函数(*args,**kwds)
文件“/usr/local/ceral/python/3.7.0/Frameworks/python.framework/Versions/3.7/lib/python3.7/typing.py”,第774行,位于__
结果=\类型\检查(结果,消息)
文件“/usr/local/ceral/python/3.7.0/Frameworks/python.framework/Versions/3.7/lib/python3.7/typing.py”,第135行,输入检查
raise TypeError(f“普通{arg}作为类型参数无效”)
TypeError:普通类型.NoReturn作为类型参数无效
编辑:对于将来遇到此问题的任何人来说,问题是Python 3.7.0中的一个bug,升级到Python 3.7.2可以缓解此问题。

对于我(使用Python 3.7.2),它可以正常工作:

from sys import exit
from typing import Callable, NoReturn

f: Callable[..., NoReturn] = exit
>>> from sys import exit
>>> from typing import Callable, NoReturn
>>> f: Callable[..., NoReturn] = exit
>>>

mypy处理得对吗?我看到发问者的错误消息来自于试图运行代码,而不是试图在代码上运行mypy,但mypy处理也很重要。mypy在我的情况下正确地没有对此抱怨。升级了3.7.0->3.7.2,现在可以工作了!Brilliant这可能与Python3.7.2有关,已在Python3.7.2中修复。问题中的再生产情况不同,但根本原因可能相同。