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.windowing as win
from bytewax.operators.windowing import EventClock, TumblingWindower
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 = EventClock(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 = TumblingWindower(align_to=align_to, length=timedelta(seconds=5))

five_sec_buckets_win_out = 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_win_out.down, 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 heterogeneous 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 community Slack for discussions.

Code of Conduct

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 Guide for how to get started.



With ❤️ Bytewax

Metadata

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

Total release size: 205.0 MB

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

Download URL bytewax-0.20.1-cp312-none-win_amd64.whl
Size 5.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b295364d8b219edeeb8171a108e341bb0471f2c1fc18f813e0fbbcb9bcf08472
BLAKE2b-256 checksum
How to use checksums
5b25cc5e86afb49eefeecebdbccdbb8e5ea42c9d9b37665333772b962a9a1a1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp312-cp312-manylinux_2_31_x86_64.whl
Size 8.0 MB
Tags CPython 3.12 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
a0e9477eaa84432ef666d5ace29a7138ff39d7342d3457ac788ed76803f9cf30
BLAKE2b-256 checksum
How to use checksums
31ea4de0f6795c6b397cf80c7cbe9fffc24d7f45efbf999438c4342b13d49332
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.7 MB
Tags CPython 3.12 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
085d09b1b4e4eb63e055ea797fc6141897effc549fc4968126586b247199c276
BLAKE2b-256 checksum
How to use checksums
a3542b207d91a6be8b5c3665bb1d75bf9ba7822702ee823832a036b2d3d321d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.0 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a8f9bed60b099fcecebba1677b14fe78fddc16491641c83b1b0d3cee1b6f0c84
BLAKE2b-256 checksum
How to use checksums
52af1e902abf33229da90b8bd96449b9d4b3d759e6b07f64c03f027be49be547
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp312-cp312-macosx_11_0_arm64.whl
Size 6.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
26510bc1e24d684059bc68feb04993c6278b57d5fe5d0e9e1a49a5a4d2af26ae
BLAKE2b-256 checksum
How to use checksums
963bb7631f5273c443b58158fcfb6db52576085bb364194ba5c046d1caa5c339
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.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
d557415eb96593d6bc51262e989affc0b95dce3d1b63ab8a901598bd12f6ea41
BLAKE2b-256 checksum
How to use checksums
a4fc110da3fc3d1e47c6eed2e822e088ca2a96109270c66780c80e286e67a208
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp311-none-win_amd64.whl
Size 5.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
01a0ddf6003d6fd630bf77407c55cb080bcf3d59fc3933b2540855f6861a21b7
BLAKE2b-256 checksum
How to use checksums
e0f50189db6be0d502b685fa40929da88975dbfe5b9bb4f80287cc21c3cfef7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp311-cp311-manylinux_2_31_x86_64.whl
Size 8.0 MB
Tags CPython 3.11 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
475ce6cae8ed441e4f8cf696993bec7ac5a2235c463ff251af7214736b452390
BLAKE2b-256 checksum
How to use checksums
27c73f9bab95311c4d70dc3709d9e8c9c255a6c2b2c929c38d0bdcc423495ec8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.7 MB
Tags CPython 3.11 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
63b12b05c4c2efec9ec9d04b77975188a2a0d9cdc8a1be5963716492df5892c4
BLAKE2b-256 checksum
How to use checksums
35d1b4c818192378e348a4336da720c505cf498a5e4da8148ae84e40cf858036
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 7.9 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
40c04113df82f1dde12e7e5084d97fc764ff51df7d59ba4c8497bfca93d93113
BLAKE2b-256 checksum
How to use checksums
582f3332535e2a7b1aaaeec7a3274511d9ae02333ee2dac8c22dc7a5458a9490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp311-cp311-macosx_11_0_arm64.whl
Size 6.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a7d486ca1223bc31208c067a735cd5fa852e97d94fa3e291b45b93ab9c346244
BLAKE2b-256 checksum
How to use checksums
c9ebb62aff8a09d52d41de473c3c338233816bdf19b8b57aed588cf28e8713d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.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
7134fd37e18233620ee0d942da50473f9e957387e20d631f185a91326e02638d
BLAKE2b-256 checksum
How to use checksums
2744e3c0275d9ea80430c487f532650cbe9fe843dacece4598a365232d6aa273
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp310-none-win_amd64.whl
Size 5.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e60bd5ee0b89c23e392f476f69964082f096c0488b3d365509a36cbda29ff8ef
BLAKE2b-256 checksum
How to use checksums
ac11add0d75c5bf6cfa4f68bf1bffa036f894cd276156f1a4f0766ca5b985a31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp310-cp310-manylinux_2_31_x86_64.whl
Size 8.0 MB
Tags CPython 3.10 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
25c15b9e1bd0c20e9f167cd1e5344a312ff4a99e9d0df22095d4beb4eb032517
BLAKE2b-256 checksum
How to use checksums
37be96d5215cfc28a162b072ba5b2e62ecffd45da2a5b4c825d895f077ba5caa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.7 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
1c893998515eb3b759f7635871754cacd954a2fb8cb8f20688f39af2cb267322
BLAKE2b-256 checksum
How to use checksums
a4b6c56ca5dd07514128d5de24b0f1b59de1f0b480d0f3dde1425562e5c47642
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 7.9 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
25cb66534097bf95461c02b1e58123a96662381437bb54b988f209fcaeb96763
BLAKE2b-256 checksum
How to use checksums
7d6c35d01c7cdbcb6c8753cafe1913687e1cef7419532b0a55947892baa51eaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp310-cp310-macosx_11_0_arm64.whl
Size 6.1 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2164997d1f428bb71b2dd52d898eaaf9e7219746d9df713c456a635aca9e87fc
BLAKE2b-256 checksum
How to use checksums
455c2dd0e0e87c33dd057a9b802d08185f0b1020cd564e7242c2a07bc688f853
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.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
055e423f6b355634637ccc7b3efe6138265528622c02da0d349a0526e1d4dd1d
BLAKE2b-256 checksum
How to use checksums
19a25aa15e872c862439b779bdf1bb48374788ee2fb7630ce45b9a123ea6dd60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp39-none-win_amd64.whl
Size 5.2 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
295e23e11793c0b756797ce9acad3a576ccb8755f6c77877c2cccb5b351343fb
BLAKE2b-256 checksum
How to use checksums
47a297a8d93865a413df64f226d96204a85ed9a421748b9132ecf06fa3c7b0fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp39-cp39-manylinux_2_31_x86_64.whl
Size 8.0 MB
Tags CPython 3.9 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
30f6619a8d1bec58ac21b6517bac2cf5d95e2cdd3665b7f976184762f89a3561
BLAKE2b-256 checksum
How to use checksums
41bdda8c2599cbb6c5a62651c43ef28d1bac23ded0725ca28879b3ec4dbc5f31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.7 MB
Tags CPython 3.9 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
89b334e8e78c735c8facbb0a5c4d383bfc841479b71fb30856cd22b5871c67b3
BLAKE2b-256 checksum
How to use checksums
67f35a6a4e33bc5f4e47a5fab4d2ed966ab38650d6a29dfcbb159bcb944845f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.0 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
da911d70a28751208e976cb6a705ae1d1417fb40850b76d0b56a099b25a86f1a
BLAKE2b-256 checksum
How to use checksums
aba423c0a339f761d5203228ce98d65aaf981efe021925da3de2cdb06b41fa6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp39-cp39-macosx_11_0_arm64.whl
Size 6.1 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
aa034f95d412a88746ff7fa9802eb22f4a70ffb4765528d0f9991e050b1eb618
BLAKE2b-256 checksum
How to use checksums
9f125668bdc7e56a1ab01552cbc60eff705b27a3828ad323eef37159b36e46d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.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
044fb3352db054f77c5ebb32eeb1ea8d6d5ed5d896727453e5643412de80283c
BLAKE2b-256 checksum
How to use checksums
d18a5dfc238671f7743f31ddb91d8e71abcfdba53d55c9dddc21a6ef8a9202f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp38-none-win_amd64.whl
Size 5.2 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
6e03b120d6f2436220355ec73158b36564cc551ded202284a5e6b35a1a792a08
BLAKE2b-256 checksum
How to use checksums
911ebe77db1ceffc37d0fbf052911d33d53f471dce8a2d856ae62689a6967719
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp38-cp38-manylinux_2_31_x86_64.whl
Size 8.0 MB
Tags CPython 3.8 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
a558f5523367336e29e2a0a9322fef039b717b5580bdb8d0f265cc3350d331a0
BLAKE2b-256 checksum
How to use checksums
a44622b031e7c611dd740ce55b0635887557360aa272d4063b3fbbfd15850a1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.7 MB
Tags CPython 3.8 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
d76cb40eb4161bcc62441ea8396798d3e973c0ce36a9ad24c378c532f8026bc5
BLAKE2b-256 checksum
How to use checksums
e595f0454d99b006299e643f500a37e72f455b4b4fee8c40e0473a55fab8901f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

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

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

Download URL bytewax-0.20.1-cp38-cp38-macosx_11_0_arm64.whl
Size 6.1 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4db9054f8e7af5f653a8d4edb93f9db1fa8bd17db7f88e89b53b31532f719355
BLAKE2b-256 checksum
How to use checksums
0d769a4a2b5ac784b62a3ad25ce64873d7fd972b81958412e552d184f758c308
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.9.19

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

Download URL bytewax-0.20.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
b241118e6179c1eb3a7363ac1b85243ece51ba2a69c7736395081ff120c4990d
BLAKE2b-256 checksum
How to use checksums
3ad4348b9e73d9ea8a126a6379c06a18b9567a95f9d51168836791469b6dcf49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.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