Skip to main content
Join chatroom Documentation Status Automated test status Automated test status (Windows) Test coverage

The async_generator library

Python 3.6 added async generators. (What’s an async generator? Check out my 5-minute lightning talk demo from PyCon 2016.) Python 3.7 adds some more tools to make them usable, like contextlib.asynccontextmanager.

This library gives you all that back to Python 3.5.

For example, this code only works in Python 3.6+:

async def load_json_lines(stream_reader):
    async for line in stream_reader:
        yield json.loads(line)

But this code does the same thing, and works on Python 3.5+:

from async_generator import async_generator, yield_

@async_generator
async def load_json_lines(stream_reader):
    async for line in stream_reader:
        await yield_(json.loads(line))

Or in Python 3.7, you can write:

from contextlib import asynccontextmanager

@asynccontextmanager
async def background_server():
    async with trio.open_nursery() as nursery:
        value = await nursery.start(my_server)
        try:
            yield value
        finally:
            # Kill the server when the scope exits
            nursery.cancel_scope.cancel()

This is the same, but back to 3.5:

from async_generator import async_generator, yield_, asynccontextmanager

@asynccontextmanager
@async_generator
async def background_server():
    async with trio.open_nursery() as nursery:
        value = await nursery.start(my_server)
        try:
            await yield_(value)
        finally:
            # Kill the server when the scope exits
            nursery.cancel_scope.cancel()

(And if you’re on 3.6, you can use @asynccontextmanager with native generators.)

Let’s do this

Release files for async_generator 1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for async_generator 1.10
File Size Uploaded
async_generator-1.10.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for async_generator 1.10
File Interpreter ABI Platform
async_generator-1.10-py3-none-any.whl Python 3 none any Details

Total release size: 48.7 kB

Release files / async_generator-1.10.tar.gz

Download URL async_generator-1.10.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144
BLAKE2b-256 checksum
How to use checksums
ceb66fa6b3b598a03cba5e80f829e0dadbb49d7645f523d209b2fb7ea0bbb02a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5

Release files / async_generator-1.10-py3-none-any.whl

Download URL async_generator-1.10-py3-none-any.whl
Size 18.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b
BLAKE2b-256 checksum
How to use checksums
715239d20e03abd0ac9159c162ec24b93fbcaa111e8400308f2465432495ca2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5

Release history Release notifications | RSS feed

This release

1.10 This release

2 release files

1.9

2 release files

1.8

2 release files

1.7

2 release files

1.6

2 release files

1.5

2 release files

1.4

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page