Skip to main content

A re-implementation of the asyncio mainloop on top of Trio

Project description

trio-asyncio is a re-implementation of the asyncio mainloop on top of Trio.

Rationale

There are quite a few asyncio-compatible libraries.

On the other hand, Trio has native concepts of tasks and task cancellation. Asyncio, on the other hand, is based on chaining Future objects, albeit with nicer syntax.

Thus, being able to use asyncio libraries from Trio is useful.

Principle of operation

The core of the “normal” asyncio main loop is the repeated execution of synchronous code that’s submitted to call_soon or add_reader/add_writer.

Everything else within asyncio, i.e. Futures and async/await, is just syntactic sugar. There is no concept of a task; while a Future can be cancelled, that in itself doesn’t affect the code responsible for fulfilling it.

On the other hand, trio has genuine tasks with no separation between returning a value asynchronously, and the code responsible for providing that value.

trio_asyncio implements a task which runs (its own version of) the asyncio main loop. It also contains shim code which translates between these concepts as transparently and correctly as possible, and it supplants a few of the standard loop’s key functions.

This works rather well: trio_asyncio consists of just ~700 lines of code (asyncio: ~8000) but passes the complete Python 3.6 test suite with no errors.

trio_asyncio requires Python 3.8 or later.

Author

Matthias Urlichs <matthias@urlichs.de>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trio_asyncio-0.15.0.tar.gz (75.7 kB view details)

Uploaded Source

Built Distribution

trio_asyncio-0.15.0-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

File details

Details for the file trio_asyncio-0.15.0.tar.gz.

File metadata

  • Download URL: trio_asyncio-0.15.0.tar.gz
  • Upload date:
  • Size: 75.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for trio_asyncio-0.15.0.tar.gz
Algorithm Hash digest
SHA256 061e31a71fb039d5074f064ec868dc0e6759e6cca33bf3080733a20ee9667781
MD5 5b7d3de715f3d7216e533b7ab353b307
BLAKE2b-256 b229f1b5dd48796526dc00849d2f6ca276724930aa2f96c32bca9bed01802c3b

See more details on using hashes here.

File details

Details for the file trio_asyncio-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for trio_asyncio-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7dad5a5edcc7c90c5b80b777dcaef11c22668ce7ddc374633068c2b35d683d62
MD5 1378eb4cbd6778022ad11cd0782c3054
BLAKE2b-256 2b3fa529b02ae6a4145721eaf952cdf19f2627bd4f5e248b010f77c0064eb4f6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page