pyawaitable 1.2.0

Last updated:

0 purchases

pyawaitable 1.2.0 Image
pyawaitable 1.2.0 Images
Add to Cart

Description:

pyawaitable 1.2.0

PyAwaitable
CPython API for asynchronous functions



Docs
Source
PyPI

What is it?
PyAwaitable is the only library to support writing and calling asynchronous Python functions from pure C code (with the exception of manually implementing an awaitable class from scratch, which is essentially what PyAwaitable does).
It was originally designed to be directly part of CPython - you can read the scrapped PEP about it. Since this library only uses the public ABI, it's better fit outside of CPython, as a library.
Installation
Add it to your project's build process:
# pyproject.toml example with setuptools
[build-system]
requires = ["setuptools", "pyawaitable"]
build-backend = "setuptools.build_meta"

[project]
# ...
dependencies = ["pyawaitable"]

Include it in your extension:
from setuptools import setup, Extension
import pyawaitable

if __name__ == "__main__":
setup(
...,
ext_modules=[Extension(..., include_dirs=[pyawaitable.include()])]
)

Example
#include <pyawaitable.h>

// Assuming that this is using METH_O
static PyObject *
hello(PyObject *self, PyObject *coro) {
// Make our awaitable object
PyObject *awaitable = pyawaitable_new();

if (!awaitable)
return NULL;

// Mark the coroutine for being awaited
if (pyawaitable_await(awaitable, coro, NULL, NULL) < 0) {
Py_DECREF(awaitable);
return NULL;
}

// Return the awaitable object to yield to the event loop
return awaitable;
}

# Assuming top-level await
async def coro():
await asyncio.sleep(1)
print("awaited from C!")

# Use our C function to await it
await hello(coro())

Copyright
pyawaitable is distributed under the terms of the MIT license.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.