Skip to main content

aiostream

Generator-based operators for asynchronous iteration

Synopsis

aiostream provides a collection of stream operators that can be combined to create asynchronous pipelines of operations.

It can be seen as an asynchronous version of itertools, although some aspects are slightly different. Essentially, all the provided operators return a unified interface called a stream. A stream is an enhanced asynchronous iterable providing the following features:

  • Operator pipe-lining - using pipe symbol |

  • Repeatability - every iteration creates a different iterator

  • Safe iteration context - using async with and the stream method

  • Simplified execution - get the last element from a stream using await

  • Slicing and indexing - using square brackets []

  • Concatenation - using addition symbol +

Stream operators

The stream operators are separated in 7 categories:

creation

iterate, preserve, just, call, empty, throw, never, repeat, count, range

transformation

map, enumerate, starmap, cycle, chunks

selection

take, takelast, skip, skiplast, getitem, filter, until, takewhile, dropwhile

combination

map, zip, merge, chain, ziplatest

aggregation

accumulate, reduce, list

advanced

concat, flatten, switch, concatmap, flatmap, switchmap

timing

spaceout, timeout, delay

miscellaneous

action, print

Demonstration

The following example demonstrates most of the streams capabilities:

import asyncio
from aiostream import stream, pipe


async def main():

    # Create a counting stream with a 0.2 seconds interval
    xs = stream.count(interval=0.2)

    # Operators can be piped using '|'
    ys = xs | pipe.map(lambda x: x**2)

    # Streams can be sliced
    zs = ys[1:10:2]

    # Use a stream context for proper resource management
    async with zs.stream() as streamer:

        # Asynchronous iteration
        async for z in streamer:

            # Print 1, 9, 25, 49 and 81
            print('->', z)

    # Streams can be awaited and return the last value
    print('9² = ', await zs)

    # Streams can run several times
    print('9² = ', await zs)

    # Streams can be concatenated
    one_two_three = stream.just(1) + stream.range(2, 4)

    # Print [1, 2, 3]
    print(await stream.list(one_two_three))


# Run main coroutine
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

More examples are available in the example section of the documentation.

Installation

You can install aiostream from PyPI as the aiostream package.

Contact

Vincent Michel: vxgmichel@gmail.com

Release files for aiostream 0.8.1

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

Source distribution (sdist)

Source distribution for aiostream 0.8.1
File Size Uploaded
aiostream-0.8.1.tar.gz 45.0 kB Details

Built distribution (wheel)

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

Total release size: 86.9 kB

Release files / aiostream-0.8.1.tar.gz

Download URL aiostream-0.8.1.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
32d180b4ab01ebb2fc59eda7fa59f496895a4d07b32fc57537d1dade2514a8a1
BLAKE2b-256 checksum
How to use checksums
02bec3e2b0e360a0350294df8f8d90cf51bef258ca1421b8bf1e4bea49a2661a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / aiostream-0.8.1-py3-none-any.whl

Download URL aiostream-0.8.1-py3-none-any.whl
Size 41.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f31c894f1e14a0825a45458e311e0b2a12d80b0d247a0fdf46d7d8ecaf4bc796
BLAKE2b-256 checksum
How to use checksums
7b8c018f92b5e71460ed4e83bb066a64c0a0072d8f90273464c75104bab73262
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.5

2 release files

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.6

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

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