Существует один класс, который расширяет другой и переопределяет сопрограмму, которая возвращает итератор:
class Repository:
async def run(self, query: Query) -> AsyncIterator[int]:
...
class MyRepository(Repository):
async def run(self, query: Query) -> AsyncIterator[int]:
...
Запуск mypy возвращает эту ошибку:
error: Return type "AsyncIterator[int]" of "run" incompatible with return type "Coroutine[Any, Any, AsyncIterator[int]]" in supertype "Repository"
Сопрограммы набираются как обычнофункции , поэтому я не уверен, что правильный подход.
Использование классов ABC не исправит это:
class Repository(metaclass=ABCMeta):
@abstractmethod
async def run(self, query: Query) -> AsyncIterator[int]: