Typehint *args для гетерогенных возвращаемых значений переменной длины, таких как asyncio.gather() ⇐ Python

Программы на Python
Anonymous
Typehint *args для гетерогенных возвращаемых значений переменной длины, таких как asyncio.gather()

Сообщение Anonymous »

У меня здесь проблемы с системой типов.
Мне нужно что-то вроде asyncio.gather(), где возвращаемое значение — это возвращаемые значения сопрограмм в том же порядке, как указано в args.

Код: Выделить всё

async def f1() -> int: ...
async def f2() -> str: ...
async def f3() -> bool: ...

a, b, c = await asyncio.gather(f1(), f2(), f3())
Это работает: У меня есть функция, которая принимает несколько частичных [Coroutine[Any, Any, T]]< /code>.

Код: Выделить всё

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())
Это не работает: Я понимаю, почему он это делает, но не могу найти способ сделать это работает.
Я проверил подсказку типа asyncio.gather(), но у меня такое ощущение, что в средства проверки типов встроена некоторая специальная логика для этого случая.
Можно ли это сделать это вообще?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ncio-gathe

Вернуться в «Python»