sweetasync

Make your async code sweeter.


Keywords
asyncio decorators utils, async, asyncio, channels, python, python-3, syntactic-sugar
License
MIT
Install
pip install sweetasync==0.7.0

Documentation

Build Status codecov PyPi

Caution, this is a 0.x.y version, the public interfaces might break at any time.

Sweetasync

A collection of simple functions, decorators and classes to make your asynchronous python code sweeter.

  • only compatible with 3.5.2+ and 3.6+
  • use Semantic Versioning
  • the documentation is extracted with sphinx from the source's docstrings: sphinx-build ./ doc
  • to run the test suite, use (adapt accordingly to your installation of python): python3.6 setup.py test

Features

  • remove the boilerplate that comes with setting up and using an event loop with the aiorunner context manager and the @sync decorator for async functions; they also clean up after an exception happens so you don't get useless warnings about an unclosed event loop and the like
  • easily communicate between coroutines or between coroutines and threads with the Channel and BufferedChannel classes; they can be used as async iterators from coroutines and blocking iterators from threads
  • receive data from multiple channels with a Bundle by iterating on it
  • dispatch events to callbacks and async functions with EventEmitter; it even handles backpressure and errors
  • make your code sweeter with these small functions: aiter, asyncify, and as_await
  • implement synchronization primitives with waiter (such as channels!)

Examples

See the example directory for runnable examples.