Код: Выделить всё
def f(x: Tuple[int, ...]) -> Union[int, List[int]]:
if len(x) == 1:
return x[0]
return list(x)
Чтобы закодировать зависимость типа вывода от типа ввода, я попробовал следующее:
Код: Выделить всё
from typing import overload, List, Tuple
@overload
def f(x: Tuple[int]) -> int: ...
@overload
def f(x: Tuple[int, ...]) -> List[int]: ...
def f(x: Tuple[int, ...]) -> Union[int, List[int]]:
if len(x) == 1:
return x[0]
return list(x)
Код: Выделить всё
script.py:4: error: Overloaded function signatures 1 and 2 overlap with incompatible return types
Found 1 error in 1 file (checked 1 source file)