Мне нужно что-то вроде asyncio.gather(), где возвращаемое значение — это возвращаемые значения сопрограмм в том же порядке, как указано в args.
Код: Выделить всё
async def f1() -> int: ...
async def f2() -> str: ...
async def f3() -> bool: ...
a, b, c = await asyncio.gather(f1(), f2(), f3())
- имеет тип int
Код: Выделить всё
a
- имеет тип str
Код: Выделить всё
b
- имеет тип bool
Код: Выделить всё
c
Код: Выделить всё
type PartialCoroutine[T] = partial[Coroutine[Any, Any, T]]
async def run runPartialCoroutines[T](*args: PartialCoroutine[T]) -> list[T]: ...
Код: Выделить всё
async def f1() -> int: ...
async def f2() -> str: ...
async def f3() -> bool: ...
a, b, c = await runPartialCoroutines(f1(), f2(), f3())
- имеет тип int
Код: Выделить всё
a
- имеет тип int
Код: Выделить всё
b
- имеет тип int
Код: Выделить всё
c
Я проверил подсказку типа asyncio.gather(), но у меня такое ощущение, что в средства проверки типов встроена некоторая специальная логика для этого случая.
Можно ли это сделать это вообще?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ncio-gathe