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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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