mirror of
https://github.com/Steffo99/async-chain.git
synced 2024-10-15 20:57:25 +00:00
A coroutine builder
.idea | ||
.media | ||
async_chain | ||
dist | ||
.gitignore | ||
async-chain.iml | ||
LICENSE.txt | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
Links
About
The problem
Have you ever felt that the await
syntax in Python was a bit clunky when chaining multiple methods together?
async def on_message(event):
message = await event.get_message()
author = await message.get_author()
await author.send_message("Hello world!")
Or even worse:
async def on_message(event):
(await (await (await event.get_message()).get_author()).send_message("Hello world!"))
async-chain
is here to solve your problem!
async def on_message(event):
await event.get_message().get_author().send_message("Hello world!")
The solution
First, install async_chain
with your favorite package manager:
$ pip install async_chain
$ pipenv install async_chain
$ poetry add async_chain
Then, add the @async_chain.method
decorator to any async method you wish to make chainable, and the problem will be
magically solved!
import async_chain
class MyEvent:
@async_chain.method
async def get_message(self):
...