В документации Python typing написано:
В качестве альтернативы аннотируйте свой генератор как имеющий тип возвращаемого значения Iterable [YieldType] или Iterator [YieldType]:
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
Я написал очень простой пример печати бесконечного потока. У меня есть функция генератора, которая передается другой функции, а затем вызывается.
from typing import Iterator
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
def print_infinite_stream(inf_iterator: Iterator[int]):
for x in inf_iterator(5):
print(x)
print_infinite_stream(infinite_stream)
С mypy я получаю две ошибки:
ошибка: итератор [int] не вызывается
ошибка: аргумент 1 для print_infinite_stream имеет несовместимый тип «Callable [[int], Iterator [int]]»; ожидаемый "Iterator [int]"
Я не понимаю, почему я получаю эти ошибки, поскольку я работал в соответствии с документацией и у меня установлены последние версии python (3.6.5) и mypy (0.590). Что здесь не так?