Skip to main content

Actions Status PyPI Bytewax User Guide

Bytewax is an open source Python framework for building highly scalable dataflows in a streaming or batch context.

Get started

Check out our getting started guide.

About

Bytewax lets you build Python based dataflows to process your data for augmentation, advanced analysis, machine learning and more. It is based on Timely Dataflow, which is a cyclic dataflow computational model. At a high-level, dataflow programming is a programming paradigm where program execution is conceptualized as data flowing through a series of operator based steps. Operators are the processing primitives of bytewax. Each of them gives you a “shape” of data transformation, and you give them functions to customize them to a specific task you need. The combination of each operator and their custom logic functions we call a dataflow step. You chain together steps in a dataflow to solve your high-level data processing problem.

At a high level, Bytewax provides a few major benefits:

  • The operators in Bytewax are largely “data-parallel”, meaning they can operate on independent parts of the data concurrently.
  • Bytewax offers the ability to express higher-level control constructs, like iteration.
  • Bytewax allows you to develop and run your code locally, and then easily scale that code to multiple workers or processes without changes.
  • Bytewax can be used in both a streaming and batch context
  • Ability to leverage the Python ecosystem directly

Community

Slack Is the main forum for communication and discussion.

GitHub Issues is reserved only for actual issues. Please use the slack community for discussions.

Code of Conduct

Usage

Install the latest release with pip:

pip install bytewax

Building From Source

To build a specific branch, you will need to use Maturin and have Rust installed on your machine. Once those have been installed run

maturin develop

And you will be able to import bytewax in your python file.

Example

Here is an example of a simple dataflow program using Bytewax:

from bytewax.dataflow import Dataflow
from bytewax.execution import run_main
from bytewax.inputs import ManualInputConfig
from bytewax.outputs import StdOutputConfig

def input_builder(worker_index, worker_count, resume_from):
    resume_from = None # Ignore recovery logic
    for e in range(10):
        yield resume_from, e

flow = Dataflow()
flow.input("input", ManualInputConfig(input_builder))
flow.map(lambda x: x * x)
flow.capture(StdOutputConfig())

if __name__ == "__main__":
    run_main(flow)

Running the program prints the following output:

0
1
4
9
16
25
36
49
64
81

For a more complete example, and documentation on the available operators, check out the User Guide.

For an exhaustive list of examples, checkout the /examples folder

License

Bytewax is licensed under the Apache-2.0 license.

Contributing

Contributions are welcome! This community and project would not be what it is without the contributors. All contributions, from bug reports to new features, are welcome and encouraged.



With ❤️ Bytewax

Metadata

Release files for bytewax 0.11.2

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

Built distributions (wheels)

Table of built distributions (wheels) for bytewax 0.11.2
File
bytewax-0.11.2-cp310-cp310-manylinux_2_31_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.31+ x86-64 Details
bytewax-0.11.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
bytewax-0.11.2-cp310-cp310-macosx_10_7_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.7+ x86-64 Details
bytewax-0.11.2-cp39-cp39-manylinux_2_31_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.31+ x86-64 Details
bytewax-0.11.2-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
bytewax-0.11.2-cp39-cp39-macosx_10_7_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.7+ x86-64 Details
bytewax-0.11.2-cp38-cp38-manylinux_2_31_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.31+ x86-64 Details
bytewax-0.11.2-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
bytewax-0.11.2-cp38-cp38-macosx_10_7_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.7+ x86-64 Details
bytewax-0.11.2-cp37-cp37m-manylinux_2_31_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.31+ x86-64 Details
bytewax-0.11.2-cp37-cp37m-macosx_11_0_arm64.whl CPython 3.7 CPython 3.7 pymalloc macOS 11.0+ ARM64 Details
bytewax-0.11.2-cp37-cp37m-macosx_10_7_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.7+ x86-64 Details

Total release size: 65.8 MB

Release files / bytewax-0.11.2-cp310-cp310-manylinux_2_31_x86_64.whl

Download URL bytewax-0.11.2-cp310-cp310-manylinux_2_31_x86_64.whl
Size 6.6 MB
Tags CPython 3.10 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
6c83493a22598bd34c15b0ec424216cac3e505728b2c53011cedbdecd81a3d59
BLAKE2b-256 checksum
How to use checksums
994e5f5200fea91fef8dd688fdebf74b7b784eaf4c7b2d75509488845abbe530
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL bytewax-0.11.2-cp310-cp310-macosx_11_0_arm64.whl
Size 4.7 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d131e400ef07e3f0ba13293b1bacf85746e3c2acf9bbda138e562e389a50dd3e
BLAKE2b-256 checksum
How to use checksums
c2789cddfd870f4ffbe0f82f2c1180a20572fc49213dc3784ce603e1878ff831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp310-cp310-macosx_10_7_x86_64.whl

Download URL bytewax-0.11.2-cp310-cp310-macosx_10_7_x86_64.whl
Size 5.1 MB
Tags CPython 3.10 macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
3856f9a5adab0a5056505ac3b25e94c096471125c36e7e0e62c07bbd081b8192
BLAKE2b-256 checksum
How to use checksums
2499348e6b604b60b5c38e9a88696a113ea38dba595cd37697af737170fdde3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp39-cp39-manylinux_2_31_x86_64.whl

Download URL bytewax-0.11.2-cp39-cp39-manylinux_2_31_x86_64.whl
Size 6.6 MB
Tags CPython 3.9 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
15aae527cd65387723204f9960029f53a87d3902560abff8b9fddc6ffd974e6b
BLAKE2b-256 checksum
How to use checksums
0ce81164a3609f9ef1b8165587b79b565f86a7fda4b0bf5f6bc500a33f065d30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp39-cp39-macosx_11_0_arm64.whl

Download URL bytewax-0.11.2-cp39-cp39-macosx_11_0_arm64.whl
Size 4.7 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
17e4f977772b3443cffd3f453b0cb184e700717196de7dfc8dcf1ffde9abd091
BLAKE2b-256 checksum
How to use checksums
314614a6d3ff89d194745fcdf53f9fd6d815c2d96ea4b37be5da7b8b18d15b53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp39-cp39-macosx_10_7_x86_64.whl

Download URL bytewax-0.11.2-cp39-cp39-macosx_10_7_x86_64.whl
Size 5.1 MB
Tags CPython 3.9 macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
88ac6b54c6af5d50360949702dc7f072af9c2e39fd86cbac251fc2e1c477415f
BLAKE2b-256 checksum
How to use checksums
8a6e32f802e8b6951b8e5cd2a1332b45f167048f496087bb0b38cf2aac84be6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp38-cp38-manylinux_2_31_x86_64.whl

Download URL bytewax-0.11.2-cp38-cp38-manylinux_2_31_x86_64.whl
Size 6.6 MB
Tags CPython 3.8 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
c313e886433b1c6fb3f9e0c1085c849d18dfc9063780706c7e8d88de37094bca
BLAKE2b-256 checksum
How to use checksums
d64246a155b92a97413c67f9fd1de106dd48a9302855a31d2adf2d1cd57cab08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp38-cp38-macosx_11_0_arm64.whl

Download URL bytewax-0.11.2-cp38-cp38-macosx_11_0_arm64.whl
Size 4.7 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f9bd0c87a1e89ae53e50edd2e6c5c686db0a6f8cf47272d45d7748fc0ad42c38
BLAKE2b-256 checksum
How to use checksums
33cc067fbb85f8da9820389ba5f3d0e6bd462b14ae4a64a37fbb2b1c9cad2880
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp38-cp38-macosx_10_7_x86_64.whl

Download URL bytewax-0.11.2-cp38-cp38-macosx_10_7_x86_64.whl
Size 5.1 MB
Tags CPython 3.8 macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
09a2eaff501648bad202ddb900f75ffcf96b8503ffb6479a10292cfd49ea1b67
BLAKE2b-256 checksum
How to use checksums
d83cd9a638015a696e22ee4204985dc86af0e1215ff940d82ad621102c37a8b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp37-cp37m-manylinux_2_31_x86_64.whl

Download URL bytewax-0.11.2-cp37-cp37m-manylinux_2_31_x86_64.whl
Size 6.6 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
26fcdf30f8c27ad8eeb7fc3f07c8ba37b342d3d06e9bfddddab4d9bd0299724e
BLAKE2b-256 checksum
How to use checksums
abc2fd0a3f6103feeff39119246e3faa4c6083fabd5b3ff1fa06ac7a544f0635
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp37-cp37m-macosx_11_0_arm64.whl

Download URL bytewax-0.11.2-cp37-cp37m-macosx_11_0_arm64.whl
Size 4.7 MB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f3fe7994151d19daccc29243d4d94296a094f57390c63c6947604c56b0f2f56c
BLAKE2b-256 checksum
How to use checksums
638b6cd722a2f2fa7f0d749cace148b1e117aab363cde4ac9a3c8386d4c8afe2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bytewax-0.11.2-cp37-cp37m-macosx_10_7_x86_64.whl

Download URL bytewax-0.11.2-cp37-cp37m-macosx_10_7_x86_64.whl
Size 5.1 MB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
73a0382d5de1e8cc646e55a98640767cc34a8922957f67e7f0fd2c58becab00a
BLAKE2b-256 checksum
How to use checksums
e20dadbad688d743ef51a866d2ce9a7dfc25f3f05d37aba5977de3b75c2f168f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13
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