Я пытаюсь запустить следующий код (урезанный из другого проекта) для mypy:
import attr
from typing import Tuple
@attr.s
class Test:
x: Tuple[int, ...] = attr.ib(converter=tuple)
l = [1, 2]
Test(l)
Однако я получаю следующее сообщение об ошибке:
<string>:7: error: Argument 1 to "Test" has incompatible type "List[int]"; expected "Iterable[_T_co]"
Единственный способ найти это сообщение об ошибке - это явно определить функцию-обертку, подобную этой
def int_tpl(int_lst: Iterable[int]) -> Tuple[int, ...]:
return tuple(int_lst)
, и использовать ее для определения преобразователя для атрибута:
x: Tuple[int, ...] = attr.ib(converter=int_tpl)
Но я вижу в этом слишком много стандартного кода. Есть ли лучший подход для решения этой проблемы или это единственный способ?