Skip to main content

Compatibility API between asyncio/Twisted/Trollius

Project description

Version Build Status Coverage Docs

txaio is a helper library for writing code that runs unmodified on both Twisted and asyncio / Trollius.

This is like six, but for wrapping over differences between Twisted and asyncio so one can write code that runs unmodified on both (aka source code compatibility). In other words: your users can choose if they want asyncio or Twisted as a dependency.

Note that, with this approach, user code runs under the native event loop of either Twisted or asyncio. This is different from attaching either one’s event loop to the other using some event loop adapter.

Platform support

txaio runs on CPython 3.5+ and PyPy 3, on top of Twisted or asyncio. Specifically, txaio is tested on the following platforms:

  • CPython 3.5, 3.7 and 3.8 on Twisted 18.7, 19.10, trunk and on asyncio (stdlib)

  • PyPy 3 on Twisted 18.7, 19.10, trunk and on asyncio (stdlib)

> Note: txaio up to version 18.8.1 also supported Python 2.7 and Python 3.4. Beginning with release v20.1.1, txaio only supports Python 3.5+.

How it works

Instead of directly importing, instantiating and using Deferred (for Twisted) or Future (for asyncio) objects, txaio provides helper-functions to do that for you, as well as associated things like adding callbacks or errbacks.

This obviously changes the style of your code, but then you can choose at runtime (or import time) which underlying event-loop to use. This means you can write one code-base that can run on Twisted or asyncio (without a Twisted dependency) as you or your users see fit.

Code like the following can then run on either system:

import txaio
txaio.use_twisted()  # or .use_asyncio()

f0 = txaio.create_future()
f1 = txaio.as_future(some_func, 1, 2, key='word')
txaio.add_callbacks(f0, callback, errback)
txaio.add_callbacks(f1, callback, errback)
# ...
txaio.resolve(f0, "value")
txaio.reject(f1, RuntimeError("it failed"))

Please refer to the documentation for description and usage of the library features.

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

txaio-20.4.1.tar.gz (52.6 kB view details)

Uploaded Source

Built Distribution

txaio-20.4.1-py2.py3-none-any.whl (30.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file txaio-20.4.1.tar.gz.

File metadata

  • Download URL: txaio-20.4.1.tar.gz
  • Upload date:
  • Size: 52.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for txaio-20.4.1.tar.gz
Algorithm Hash digest
SHA256 17938f2bca4a9cabce61346758e482ca4e600160cbc28e861493eac74a19539d
MD5 c998be8d5837218c809266c0fce94687
BLAKE2b-256 e7ddc0c90b080c3fad0ac8e2382eddbe86591d4fa1a5c1aea652de0adf245fc0

See more details on using hashes here.

File details

Details for the file txaio-20.4.1-py2.py3-none-any.whl.

File metadata

  • Download URL: txaio-20.4.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 30.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for txaio-20.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 38a469daf93c37e5527cb062653d6393ae11663147c42fab7ddc3f6d00d434ae
MD5 d0428b98bfd1b3985de02bd9007014d3
BLAKE2b-256 4f820cd8d81d57e55a598cd4cef10c6e971dbcaf437e4f138dc1624cf7c1388e

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