adafruit / adafruit/Adafruit_CircuitPython_asyncio

add TaskGroup here or in another library

Open
#7 2 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
30
Forks
16
PR merge metrics
No merged PRs in 30d

Description

asyncio could really use a `TaskGroup` implementation, as provided by [Trio](https://trio.readthedocs.io/en/stable/) (aka nurseries), [Curio](https://curio.readthedocs.io/en/stable/), [aiotools](https://aiotools.readthedocs.io/en/latest/aiotools.taskgroup.html), and [EdgeDB](https://github.com/edgedb/edgedb/blob/master/edb/common/taskgroup.py).

`TaskGroup` was originally slated to be added Python as long ago as 3.8, but was held up because exception group handling was not available. However, exception groups are now being added: [PEP 654](https://www.python.org/dev/peps/pep-0654/), [PR](https://github.com/python/cpython/pull/29581)). Once that PEP is implemented, `TaskGroup` will probably follow. But the timeline for PEP 654 to go into the MicroPython core is unclear. So any TaskGroup we add will not be quite compatible, and we probably want to add it in an ancillary library (`adafruit_asyncio` or `asynciox` or `xasyncio` or ??).

Contributor guide

No contributing guide indexed for this repository

Research direction

Compare the referenced Trio, Curio, aiotools, and EdgeDB implementations, starting with edb/common/taskgroup.py, and review the PEP 654 and linked CPython pull request context. First establish whether TaskGroup belongs in this library or an ancillary library. Done means the placement, compatibility expectations, and implementation scope are agreed.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.