如何使 mypy 中的通用 TypeVar 成为非可选?

Lui*_*ger 7 python-3.x mypy

是否可以要求TypeVarmypy 中的 a 仅解析为非Optional类型?例如

from typing import Callable, Optional, TypeVar
from typing_extensions import Protocol


T = TypeVar('T')

def mapper(callabl: Callable[..., T]) -> T:
    return callabl()

def bad_function() -> Optional[int]:
    return None

mapper(reveal_type(bad_function))
Run Code Online (Sandbox Code Playgroud)

在此示例中,bad_function显示为 类型def () -> Union[builtins.int, None]。我想要一种方法来限制T绑定到任何不可选的类型(即不是Unionwith None),这样该代码片段将无法进行类型检查。Typescript(和 Kotlin 的内置类型系统)等其他检查器默认支持这一点,所以我想知道是否也可以在 mypy 中执行此操作。我知道可以绑定TypeVars,但我无法弄清楚在这种情况下绑定什么是正确的T