Вот протокол, который я определил:
Код: Выделить всё
class OnSubscribeFunc(Protocol):
def __call__(self, instrument: str, *, send: Callable[[str], Coroutine]) -> AsyncGenerator:
...
Код: Выделить всё
async def subscribe(self, instrument: str, *, send: Callable[[str], Coroutine]):
yield ...
Однако если я удалю * из своей реализации, предупреждение исчезнет. Я ожидал бы, что все будет наоборот, потому что отсутствие * позволяет реализации иметь аргументы, не состоящие только из ключевых слов, что может быть не тем, к чему я стремлюсь с помощью моего протокола.
Итак, для сравнения: эта реализация не выдает никаких предупреждений:
Код: Выделить всё
async def subscribe(self, instrument: str, send: Callable[[str], Coroutine]):
yield ...
Подробнее здесь: https://stackoverflow.com/questions/791 ... o-have-dif