Skip to main content

Actions Status PyPI Bytewax User Guide

Bytewax

Python Stateful Stream Processing Framework

Bytewax is a Python framework that simplifies event and stream processing. Because Bytewax couples the stream and event processing capabilities of Flink, Spark, and Kafka Streams with the friendly and familiar interface of Python, you can re-use the Python libraries you already know and love. Connect data sources, run stateful transformations and write to various different downstream systems with built-in connectors or existing Python libraries. Bytewax Dataflow Animation

How it all works

Bytewax is a Python framework and Rust distributed processing engine that uses a dataflow computational model to provide parallelizable stream processing and event processing capabilities similar to Flink, Spark, and Kafka Streams. You can use Bytewax for a variety of workloads from moving data à la Kafka Connect style all the way to advanced online machine learning workloads. Bytewax is not limited to streaming applications but excels anywhere that data can be distributed at the input and output.

Bytewax has an accompanying command line interface, waxctl, which supports the deployment of dataflows on cloud servers or Kubernetes. You can download it here.


Getting Started with Bytewax

pip install bytewax

Install waxctl

Dataflow, Input and Operators

A Bytewax dataflow is Python code that will represent an input, a series of processing steps, and an output. The inputs could range from a Kafka stream to a WebSocket and the outputs could vary from a data lake to a key-value store.

import json

from bytewax import operators as op
from bytewax.connectors.kafka import operators as kop
from bytewax.dataflow import Dataflow

Bytewax has input and output helpers for common input and output data sources but you can also create your own with the Sink and Source API.

At a high-level, the dataflow compute model is one in which a program execution is conceptualized as data flowing through a series of operator-based steps. Operators like map and filter are the processing primitives of Bytewax. Each of them gives you a “shape” of data transformation, and you give them regular Python functions to customize them to a specific task you need. See the documentation for a list of the available operators

BROKERS = ["localhost:19092"]
IN_TOPICS = ["in_topic"]
OUT_TOPIC = "out_topic"
ERR_TOPIC = "errors"


def deserialize(kafka_message):
    return json.loads(kafka_message.value)


def anonymize_email(event_data):
    event_data["email"] = "@".join(["******", event_data["email"].split("@")[-1]])
    return event_data


def remove_bytewax(event_data):
    return "bytewax" not in event_data["email"]


flow = Dataflow("kafka_in_out")
stream = kop.input("inp", flow, brokers=BROKERS, topics=IN_TOPICS)
# we can inspect the stream coming from the kafka topic to view the items within on std out for debugging
op.inspect("inspect-oks", stream.oks)
# we can also inspect kafka errors as a separate stream and raise an exception when one is encountered
errs = op.inspect("errors", stream.errs).then(op.raises, "crash-on-err")
deser_msgs = op.map("deserialize", stream.oks, deserialize)
anon_msgs = op.map("anon", deser_msgs, anonymize_email)
filtered_msgs = op.filter("filter_employees", anon_msgs, remove_bytewax)
processed = op.map("map", anon_msgs, lambda m: KafkaSinkMessage(None, json.dumps(m)))
# and finally output the cleaned data to a new topic
kop.output("out1", processed, brokers=BROKERS, topic=OUT_TOPIC)

Windowing, Reducing and Aggregating

Bytewax is a stateful stream processing framework, which means that some operations remember information across multiple events. Windows and aggregations are also stateful, and can be reconstructed in the event of failure. Bytewax can be configured with different state recovery mechanisms to durably persist state in order to recover from failure.

There are multiple stateful operators available like reduce, stateful_map and fold_window. The complete list can be found in the API documentation for all operators. Below we use the fold_window operator with a tumbling window based on system time to gather events and calculate the number of times events have occurred on a per-user basis.

from datetime import datetime, timedelta, timezone

from bytewax.dataflow import Dataflow
import bytewax.operators.window as win
from bytewax.operators.window import EventClockConfig, TumblingWindow
from bytewax.testing import TestingSource

flow = Dataflow("window_eg")

src = [
    {"user_id": "123", "value": 5, "time": "2023-1-1T00:00:00Z"},
    {"user_id": "123", "value": 7, "time": "2023-1-1T00:00:01Z"},
    {"user_id": "123", "value": 2, "time": "2023-1-1T00:00:07Z"},
]
inp = op.input("inp", flow, TestingSource(src))
keyed_inp = op.key_on("keyed_inp", inp, lambda x: x["user_id"])


# This function instructs the event clock on how to retrieve the
# event's datetime from the input.
# Note that the datetime MUST be UTC. If the datetime is using a different
# representation, we would have to convert it here.
def get_event_time(event):
    return datetime.fromisoformat(event["time"])


# Configure the `fold_window` operator to use the event time.
clock = EventClockConfig(get_event_time, wait_for_system_duration=timedelta(seconds=10))

# And a 5 seconds tumbling window
align_to = datetime(2023, 1, 1, tzinfo=timezone.utc)
windower = TumblingWindow(align_to=align_to, length=timedelta(seconds=5))

five_sec_buckets = win.collect_window("five_sec_buckets", keyed_inp, clock, windower)


def calc_avg(bucket):
    values = [event["value"] for event in bucket]
    if len(values) > 0:
        return sum(values) / len(values)
    else:
        return None


five_sec_avgs = op.map_value("avg_in_bucket", five_sec_buckets, calc_avg)

Merges and Joins

Merging or Joining multiple input streams is a common task for stream processing, Bytewax enables different types of joins to facilitate different patters.

Merging Streams

Merging streams is like concatenating, there is no logic and the resulting stream will potentially include heterogenous records.

from bytewax import operators as op

from bytewax.connectors.stdio import StdOutSink
from bytewax.dataflow import Dataflow
from bytewax.testing import TestingSource

flow = Dataflow("merge")

src_1 = [
    {"user_id": "123", "name": "Bumble"},
]
inp1 = op.input("inp1", flow, TestingSource(src_1))

src_2 = [
    {"user_id": "123", "email": "bee@bytewax.com"},
    {"user_id": "456", "email": "hive@bytewax.com"},
]
inp2 = op.input("inp2", flow, TestingSource(src_2))
merged_stream = op.merge("merge", inp1, inp2)
op.inspect("debug", merged_stream)
Joining Streams

Joining streams is different than merging because it uses logic to join the records in the streams together. The joins in Bytewax can be running or not. A regular join in streaming is more closely related to an inner join in SQL in that the dataflow will emit data downstream from a join when all of the sides of the join have matched on the key.

from bytewax import operators as op

from bytewax.connectors.stdio import StdOutSink
from bytewax.dataflow import Dataflow
from bytewax.testing import TestingSource

flow = Dataflow("join")

src_1 = [
    {"user_id": "123", "name": "Bumble"},
]
inp1 = op.input("inp1", flow, TestingSource(src_1))
keyed_inp_1 = op.key_on("key_stream_1", inp1, lambda x: x["user_id"])
src_2 = [
    {"user_id": "123", "email": "bee@bytewax.com"},
    {"user_id": "456", "email": "hive@bytewax.com"},
]
inp2 = op.input("inp2", flow, TestingSource(src_2))
keyed_inp_2 = op.key_on("key_stream_2", inp2, lambda x: x["user_id"])

merged_stream = op.join("join", keyed_inp_1, keyed_inp_2)
op.inspect("debug", merged_stream)

Output

Output in Bytewax is described as a sink and these are grouped into connectors. There are a number of basic connectors in the bytewax repo to help you during development. In addition to the built-in connectors, it is possible to use the input and output API to build a custom sink and source. There is also a hub for connectors built by the community, partners and Bytewax. Below is an example of a custom connector for Postgres using the psycopg2 library.

% skip: next

import psycopg2

from bytewax import operators as op
from bytewax.outputs import FixedPartitionedSink, StatefulSinkPartition


class PsqlSink(StatefulSinkPartition):
    def __init__(self):
        self.conn = psycopg2.connect("dbname=website user=bytewax")
        self.conn.set_session(autocommit=True)
        self.cur = self.conn.cursor()

    def write_batch(self, values):
        query_string = """
            INSERT INTO events (user_id, data)
            VALUES (%s, %s)
            ON CONFLICT (user_id)
            DO UPDATE SET data = %s;
        """
        self.cur.execute_values(query_string, values)

    def snapshot(self):
        pass

    def close(self):
        self.conn.close()


class PsqlOutput(FixedPartitionedSink):
    def list_parts(self):
        return ["single"]

    def build_part(step_id, for_part, resume_state):
        return PsqlSink()

Execution

Bytewax dataflows can be executed in a single Python process, or on multiple processes on multiple hosts with multiple worker threads. When processing data in a distributed fashion, Bytewax uses routing keys to ensure your state is updated in a correct way automatically.

# a single worker locally
python -m bytewax.run my_dataflow:flow

# Start two worker threads in a single process.
python -m bytewax.run my_dataflow -w 2

# Start a process on two separate machines to form a Bytewax cluster.
# Start the first process with two worker threads on `machine_one`.
machine_one$ python -m bytewax.run my_dataflow -w 2 -i0 -a "machine_one:2101;machine_two:2101"

# Then start the second process with three worker threads on `machine_two`.
machine_two$ python -m bytewax.run my_dataflow -w 3 -i1 -a "machine_one:2101;machine_two:2101"

It can also be run in a Docker container as described further in the documentation.

Kubernetes

The recommended way to run dataflows at scale is to leverage the kubernetes ecosystem. To help manage deployment, we built waxctl, which allows you to easily deploy dataflows that will run at huge scale across multiple compute nodes.

waxctl df deploy my_dataflow.py --name my-dataflow

Why Bytewax?

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 -E dev

Important: If you are testing with a maturin built version from source, you should use maturin build --release since maturin develop will be slower.

More Examples

For a more complete example, and documentation on the available operators, check out the User Guide and 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. Please view the contribution guidelines before getting started.



With ❤️ Bytewax

Metadata

Release files for bytewax 0.19.1

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.19.1
File
bytewax-0.19.1-cp312-none-win_amd64.whl CPython 3.12 none Windows x86-64 Details
bytewax-0.19.1-cp312-cp312-manylinux_2_31_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.31+ x86-64 Details
bytewax-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARMv7l Details
bytewax-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
bytewax-0.19.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
bytewax-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
bytewax-0.19.1-cp311-none-win_amd64.whl CPython 3.11 none Windows x86-64 Details
bytewax-0.19.1-cp311-cp311-manylinux_2_31_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.31+ x86-64 Details
bytewax-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARMv7l Details
bytewax-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
bytewax-0.19.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
bytewax-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
bytewax-0.19.1-cp310-none-win_amd64.whl CPython 3.10 none Windows x86-64 Details
bytewax-0.19.1-cp310-cp310-manylinux_2_31_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.31+ x86-64 Details
bytewax-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARMv7l Details
bytewax-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
bytewax-0.19.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
bytewax-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details
bytewax-0.19.1-cp39-none-win_amd64.whl CPython 3.9 none Windows x86-64 Details
bytewax-0.19.1-cp39-cp39-manylinux_2_31_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.31+ x86-64 Details
bytewax-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ ARMv7l Details
bytewax-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ ARM64 Details
bytewax-0.19.1-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
bytewax-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.12+ x86-64 Details
bytewax-0.19.1-cp38-none-win_amd64.whl CPython 3.8 none Windows x86-64 Details
bytewax-0.19.1-cp38-cp38-manylinux_2_31_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.31+ x86-64 Details
bytewax-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ ARMv7l Details
bytewax-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ ARM64 Details
bytewax-0.19.1-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
bytewax-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.12+ x86-64 Details

Total release size: 208.0 MB

Release files / bytewax-0.19.1-cp312-none-win_amd64.whl

Download URL bytewax-0.19.1-cp312-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3a2a0af89dd25919152faa0d4ad11694ab273070da8bb966a4c606358daa1a66
BLAKE2b-256 checksum
How to use checksums
643eafd90de10ec0e22403532d87ba3a97baa51e3346fad46429f4e3b3bb2e0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp312-cp312-manylinux_2_31_x86_64.whl

Download URL bytewax-0.19.1-cp312-cp312-manylinux_2_31_x86_64.whl
Size 8.2 MB
Tags CPython 3.12 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
222813fdadd76834d69e1bb65ec41908001f523b8c5e3e6a3a242b9cf004ddab
BLAKE2b-256 checksum
How to use checksums
e8c906670c4ee90c1c2d96f5619e073d3b973fb98c862e2af6eb3faf4ba164c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL bytewax-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.8 MB
Tags CPython 3.12 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
202036d5192bafbd764b0ddea886eec9d739e819a97f277e8a43884e808ebe06
BLAKE2b-256 checksum
How to use checksums
528cec2ffd3a9b1c2dbd1e322bf665b6f6efba0001c442e73671b1249296e992
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bytewax-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.1 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
8ee8302ef6e113232e222a8d50b018085372c927e0322203109df24eb53dbfed
BLAKE2b-256 checksum
How to use checksums
a428a3987b7ab5aba4634efcb3ecc265e520014495bed110f4b018202c285979
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL bytewax-0.19.1-cp312-cp312-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3c1276e843c724dc3876b7401405df23e3269071f2fd4a1eabb751dd77496d34
BLAKE2b-256 checksum
How to use checksums
02e65798ae29eb9f0334c87bd53950be1014626215fdbaa54a9d5cfada25f265
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL bytewax-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 6.2 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d92c74d72277d67517d09b2c2ba7328022247ce84b57a2a4c2b38e6b5fc5f931
BLAKE2b-256 checksum
How to use checksums
0ff37c6f58e1bd670788a30fdd4b9dc6f75a4120c66491db023168654ab7429d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-none-win_amd64.whl

Download URL bytewax-0.19.1-cp311-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b40ad44f0081aec617335b2b608a18b41995b18ddc614e2543abd0294d084b4d
BLAKE2b-256 checksum
How to use checksums
e16368305ef3b0e1067d54a60449340605f6a5e9b44438093b13c6581c8cd9d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-cp311-manylinux_2_31_x86_64.whl

Download URL bytewax-0.19.1-cp311-cp311-manylinux_2_31_x86_64.whl
Size 8.2 MB
Tags CPython 3.11 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
fc01278a9116b0b391daf8e14422ab0251f1c95c8b6532372f66afb453b2dff4
BLAKE2b-256 checksum
How to use checksums
c2bee0f96fe9fcdaaa65be3b89f871234e77cfd17f3b17e5d06678f7998a025e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL bytewax-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.8 MB
Tags CPython 3.11 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
0d7689794a33f3a4d9d383bf547bca5f2939e1f17bdeb9ace12759495d978ddf
BLAKE2b-256 checksum
How to use checksums
ab5a471ae2ed5f5238f84c74263692c94e491874ae7eb846caeb42342972e5d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bytewax-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.1 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
44fc0d387a2dbd91b12edcf6b7570a780c5f0b383ba9e728a85b6f91b6eafe73
BLAKE2b-256 checksum
How to use checksums
4948f47ac61aca6afa1c7144aa410e06b4f2494a3194fdea89e73fa4fcd7575e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL bytewax-0.19.1-cp311-cp311-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bae511307a2c1c5027b365136cbe3e126ca51055927d31519bb894e598fb166f
BLAKE2b-256 checksum
How to use checksums
57aec3c52f66effbf3f9fdb5b23cb02125a9207a126bd535b0f20b76025cc095
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL bytewax-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 6.2 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1fac0901106b1be851cf0bea6a6c7b2c69919e426bef10c281f71c8795c5444e
BLAKE2b-256 checksum
How to use checksums
c7e40e6461b5e0698020470435b91579b4f8113bffdb2a4b501942f3ae8f1c9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp310-none-win_amd64.whl

Download URL bytewax-0.19.1-cp310-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
ad19fe19a128c9b4883e77e1479a72df729117f02164f741ffd587ab52da20d7
BLAKE2b-256 checksum
How to use checksums
3f4248f92f391b32f94c4c3f8a8f3cfa5cc501e68284675021c15680d277d171
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp310-cp310-manylinux_2_31_x86_64.whl
Size 8.2 MB
Tags CPython 3.10 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
e88037d6aff46e194346020cb2aefc47829e35ec48318fc377c4f8a9317a87b1
BLAKE2b-256 checksum
How to use checksums
41ec115231f6b2379992c42e4ce945067495f3ce0c579a5aa55e3e1246131abe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL bytewax-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.9 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
22072ef551de5c66f86fa5f489415b2f665a912c7ae2356fbd3d52486d6110d7
BLAKE2b-256 checksum
How to use checksums
cacc3048d3f39cd5c6e562816d1888f4f9151f7786cecfa631b9dabc5b7ab34b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bytewax-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.1 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
46f7755809fdc7bc2a59e40a633bcc48a3072d85050e8f36f3b3c901efdb6a07
BLAKE2b-256 checksum
How to use checksums
a4aa5acd3108c8469751095ff2d8debd5af07dccd87675b160b0c1ac3dd12b77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp310-cp310-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d5f793537e6807dd75e4ed3fc71cb05f5667b9efdc5fbcf9b3178b3afad7df98
BLAKE2b-256 checksum
How to use checksums
f502ae6a326edd5f6bd147d1054af6b0accf23633bca82f6e39bb6d5864f3e8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl

Download URL bytewax-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl
Size 6.2 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
48606da5a8013ff5cfc912f4b96900008432af00bc210ac02c7003600e7873ee
BLAKE2b-256 checksum
How to use checksums
04ac6553d6983ad0ca3dec8e38d438542d9d75bad73ccc0d31d2528efc191ebe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp39-none-win_amd64.whl

Download URL bytewax-0.19.1-cp39-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
97bc286659c260c84a48426f257ee7e19ab45152742b8fa97d034bb4cf6715d1
BLAKE2b-256 checksum
How to use checksums
858bef843a4147ded165505657e3b8a388872458495c9637a18610225961df12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp39-cp39-manylinux_2_31_x86_64.whl
Size 8.2 MB
Tags CPython 3.9 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
cddc41c8e3f731aa6cf664ee38d5da182e685cee9db5d981f0273b1940e4059c
BLAKE2b-256 checksum
How to use checksums
9f54386f3c16328bb80c0a47f2c590b314fa6e4643031bc5dc3d1e4991a7b71f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL bytewax-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.8 MB
Tags CPython 3.9 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
202a9bacf9da4f8b4323f7cb249f7d5a86143bbbc1325f89241106c9742aaa22
BLAKE2b-256 checksum
How to use checksums
4f952f196ccc591ac7e705b9274a414b4ad7e629d862d1d32a95938203db2f11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bytewax-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.1 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4f1fe5e5d74bd31c69b601dd87bb0fd9a66e5e556e035b02b6b1d472e24b0769
BLAKE2b-256 checksum
How to use checksums
cf60ece50f1dd7d65362619e766b48014d126761ccaba0fc013118b4eda7a0b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp39-cp39-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a90f1dfa26961d2543d10b3274f806ee82a1b22abff22064efe51d72496cad05
BLAKE2b-256 checksum
How to use checksums
6cc3bc294a4301087659931330206cd4194dcb7caff278438d7b5b00e7c6717b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl

Download URL bytewax-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl
Size 6.2 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
aa8b91c835c39f00d47e1549b4dfae82ff055bba70a12740fe922f9e0c6c874e
BLAKE2b-256 checksum
How to use checksums
4593175c753987baf494de45da3b91c59d6c497e56ccb77168df1067f6b356ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp38-none-win_amd64.whl

Download URL bytewax-0.19.1-cp38-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
7bc518529f43f674a19e2f1eb4b936207ebea8710cadd45402dc8c81f4ba92dc
BLAKE2b-256 checksum
How to use checksums
3b6c50ebdc8087e0a1626456853d4a1e063074fd45e60beaa98714dfd203caec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp38-cp38-manylinux_2_31_x86_64.whl
Size 8.2 MB
Tags CPython 3.8 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
74371c66c7b90631b050775de973a7a99cf938871f0bcb1abf0815b03d189834
BLAKE2b-256 checksum
How to use checksums
8658216ea4fcd275516d0db5680a21719e81f45affc51b86ad5e8fac025d2c76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL bytewax-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.8 MB
Tags CPython 3.8 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
2e4718066f6ce646eb732304000fac9b0c0ba96fef9d6210a0c2a141cbc090d6
BLAKE2b-256 checksum
How to use checksums
75c5733de13b86ac28bc3c45d74dfab4f75d6896743a7dddb4b4cf5e03c974ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bytewax-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.1 MB
Tags CPython 3.8 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6f5da60bdbe4617e77ecc78381d1ba1b4aea6389878f4f89c5d3232929d1b8b3
BLAKE2b-256 checksum
How to use checksums
dc9800a026e4dae21dec9378909fb3c15a04a70cddb0173912367a4b54e37495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

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

Download URL bytewax-0.19.1-cp38-cp38-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d98463e4f67ab4557ff580b78ead719114fc788e969c9e4c43fa230ed3a959c2
BLAKE2b-256 checksum
How to use checksums
1f08c07f5e7a6e18b77298813d4701c58fc0fb7f4f99510b47e9ac8951d9c1e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / bytewax-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl

Download URL bytewax-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl
Size 6.2 MB
Tags CPython 3.8 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
76b1ef316bde07291d9b5beeed8dff91959f092254a8e0c7b3260fcdeb95210d
BLAKE2b-256 checksum
How to use checksums
cfba1d310150b0c9d9d6b588fd2dabd175e2824d27de058eb3f42e9c4008385d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19
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