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.9 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.16.0.tar.gz (77.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: trio_asyncio-0.16.0.tar.gz
  • Upload date:
  • Size: 77.1 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.16.0.tar.gz
Algorithm Hash digest
SHA256 9f4e80aa344555548bf440e0f43072743aac1b3a538ebe3994f52363b7752d6f
MD5 f2520909ff7f75aa7c89b27baa0fbfe8
BLAKE2b-256 e176b6317ad0536e155a9cce6c3f0db9a3b3f63e579e176779712ef3403d4af5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: trio_asyncio-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 39.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for trio_asyncio-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ab652259e7a3b0293319feea87ac6988b32eb07a49e191bb6cceb361c369deab
MD5 6b93b49056439ecf526cffadba421dac
BLAKE2b-256 7c6bedd95076b498d1d5ed0fdb7cfb42ad7ac80a5d0c2a39161540762ef981e3

See more details on using hashes here.

Supported by

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