error: Incompatible types in assignment (expression has type "Union[List[str], Tuple[List[str], ...]]", variable has type "Union[str, List[str]]") [assignment]
Обходным решением может быть определение новых переменных и настройка возвращаемого типа foo следующим образом:
Скажи, что да [code]def foo(x: Union[str, list[str]], y: Union[str, list[str]]) -> tuple[list[str], list[str]]:
x = cast(Union[list[str], tuple[list[str], ...]], str2list(x)) y = cast(Union[list[str], tuple[list[str], ...]], str2list(y))
return x,y
def str2list(*args: Union[str, list[str]]) -> Union[list[str], tuple[list[str], ...]]: vals = [] for x in args: if not isinstance(x, list): x = [x] vals.append(x) if len(args) == 1: return vals[0] else: return tuple(vals)
x = 'My name is x' y = ['First element', 'Second element']
z = str2list(x,y) [/code] Как видите, в foo есть два вызова, но mypy все равно жалуется, что [code]error: Incompatible types in assignment (expression has type "Union[List[str], Tuple[List[str], ...]]", variable has type "Union[str, List[str]]") [assignment] [/code] Обходным решением может быть определение новых переменных и настройка возвращаемого типа foo следующим образом: [code]def foo( x: Union[str, list[str]], y: Union[str, list[str]] ) -> tuple[ Union[list[str], tuple[list[str], ...]], Union[list[str], tuple[list[str], ...]], ]: