Можно ли требовать TypeVar
в mypy только для разрешения не-1002 * типов? Например,
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))
В этом примере bad_function
относится к типу def () -> Union[builtins.int, None]
. Я хотел бы, чтобы способ ограничить T
привязкой к любому типу, который не является обязательным (то есть, не Union
с None
), чтобы этот фрагмент кода не проходил проверку типа. Другие контролеры, такие как Typescript (и встроенная система типов Kotlin), поддерживают это по умолчанию, поэтому мне было интересно, возможно ли это сделать и в mypy. Я знаю, что можно связать TypeVar
s, но я не мог понять, что было бы правильно связать T
в этом случае.