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.

Screen Shot 2022-10-07 at 2 22 49 PM

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](https://github.com/bytewax/bytewax/blob/main/docs/articles/advanced-concepts/custom-io-connectors.md).

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
from bytewax.operators import window as window_op
from bytewax.operators.window import EventClockConfig, TumblingWindow


# This is the accumulator function, and outputs a list of 2-tuples,
# containing the event's "value" and it's "time" (used later to print info)
def acc_values(acc, event):
    acc.append((event["value"], event["time"]))
    return acc


# 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.
cc = 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)
wc = TumblingWindow(align_to=align_to, length=timedelta(seconds=5))

running_avg_stream = window_op.fold_window(
    "running_average", keyed_stream, cc, wc, list, acc_values
)

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.

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

Total release size: 197.2 MB

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

Download URL bytewax-0.18.2-cp311-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ae0bf36bdf76ec07503e7a90c779873eca177ffbc2dc4526d1bc6818aaf2cfa0
BLAKE2b-256 checksum
How to use checksums
61db153f87e5dd90c6ca613405b75809a4f9f2ed418ef26cfe4b54e06429bfd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp311-cp311-manylinux_2_31_x86_64.whl
Size 8.1 MB
Tags CPython 3.11 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
d08204bb157cc0725e1d79518f9a95d197ca5b49ceacf8b467f3530bc5581090
BLAKE2b-256 checksum
How to use checksums
9daab0793c7425844e9e6f9c119c4ec9f2c1960dd45f757c2077909c9c09c18f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / bytewax-0.18.2-cp311-cp311-manylinux_2_27_x86_64.whl

Download URL bytewax-0.18.2-cp311-cp311-manylinux_2_27_x86_64.whl
Size 8.0 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
f7db1227be644d74604f8c77077088cb9a0ce3d5a4ea90085d6a9505750d4f6c
BLAKE2b-256 checksum
How to use checksums
2c2dbbbf7e3e285c3c7f1b0f414eff6842bb7b8030bed5fdef43a3dd20368fbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
3e19f2d4a8df3b1510b277e186f898c34699a60298b963609ec5d64cb931e5d9
BLAKE2b-256 checksum
How to use checksums
3573072e3e4211849de8d464a7fd07a35b47a40d70b38e9778a0f0d20776e37b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.0 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3695eaa4a626e26a102abae4cc2cedf345013224a0137e53d680240ca1f55d4d
BLAKE2b-256 checksum
How to use checksums
c96b1f8a18b672220abc7c4d064afa25fee4c87ca86eced077ee701c79974666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
64bcdaa9d32cc1db1afaaff458856792364ec9fa1f6220552a55ab436f3eb72a
BLAKE2b-256 checksum
How to use checksums
5deace3ee628a1fad00a846896c970bd61acd94f79afb51a45d8557bce45facf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp311-cp311-macosx_10_12_x86_64.whl
Size 6.1 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c4a7c1053f59aab99f165f3749ee46d1d62a0734aa3b9181caba2fc704bf2107
BLAKE2b-256 checksum
How to use checksums
d3d6b9d914e79aa4b5b9b525d2d02de6ede2439ceddefc51768a2cacead36df9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp310-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
75f9e780d42791265d41ba54ca20c21c0ed580209aeefef64a9b69967109a9b5
BLAKE2b-256 checksum
How to use checksums
33b0d6075987352cd89807382c8dfa4b10118761c2fc0ff6e1e095787db8e3ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp310-cp310-manylinux_2_31_x86_64.whl
Size 8.1 MB
Tags CPython 3.10 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
2e9aa1a321934a25304fb8a413506a75879cbeab91cd350f9621da707c857b37
BLAKE2b-256 checksum
How to use checksums
15bd51b89d8b596d3a18c49f1647bac6471a702cc02f186efe7fe6457c761416
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / bytewax-0.18.2-cp310-cp310-manylinux_2_27_x86_64.whl

Download URL bytewax-0.18.2-cp310-cp310-manylinux_2_27_x86_64.whl
Size 8.0 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
a48ec39bc437108ff55c2505a8678042d34b533e9f6d1b1111ab9506002bca3c
BLAKE2b-256 checksum
How to use checksums
b72585cb76be259b44dc6a0a62d73c7e41e127e2a43249e3201e60d56a49d0ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 7.8 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
65db1873b3578eeb087fabb384a8aa091a4e5e2f141af51a229d34eb2a27354c
BLAKE2b-256 checksum
How to use checksums
e64bc49854baa17106eb7f13b19c66c5fea5f170a3c021547dfde126f8d84170
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
f2431300d0751e7c60c259b35aa4989d38cb09697e7ec60099bea20ce6f6df71
BLAKE2b-256 checksum
How to use checksums
7d3a7af0bcb4e5f1e19719c3c09fc5a0088bf36ac10796c8d28009904a300ee6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
2205159f3bf95376dbfbf7db683ec054517ccdb77fed322cd91f72d3346adf35
BLAKE2b-256 checksum
How to use checksums
6e09ae0d7b0830df116d676159aa1ef84723afc4211f3b5ebc9932dc7a6c10c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp310-cp310-macosx_10_12_x86_64.whl
Size 6.1 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9b19b1c61440cab8a7e7ed558406621206d53029d6b008e516f2cfb10250b35d
BLAKE2b-256 checksum
How to use checksums
57c6d47841f14300f6b07bcb63ed1d118fdedce973e141ee6d2af549592b98d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp39-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
3b685de4482cbaf5ed4636763b82f81b108278882bc6613324ccdf313adc79ac
BLAKE2b-256 checksum
How to use checksums
dfdf9fa3470d94aae5afea14b04b0845375d8b8be8d7ff50fb2e972959f802d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp39-cp39-manylinux_2_31_x86_64.whl
Size 8.1 MB
Tags CPython 3.9 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
54187bc2c7677244962ae070aee5fb11e67dfd02b9114947ed2c001a73ed4337
BLAKE2b-256 checksum
How to use checksums
53f025be2343572c04e1f1a1e0268757beda2ea0517f169f58c01851d1f27daf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / bytewax-0.18.2-cp39-cp39-manylinux_2_27_x86_64.whl

Download URL bytewax-0.18.2-cp39-cp39-manylinux_2_27_x86_64.whl
Size 8.0 MB
Tags CPython 3.9 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
b767e24ce45838d87181051d0709dd0eb8006c472e480294769a2233588405e2
BLAKE2b-256 checksum
How to use checksums
5a9c1d151becbfe5661664578a65a78f0b0ba076109abc5c390ad29bd6e4badc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
32682a710903bf46882bc7ce79ff02a78684e6ce7ae73d51f17a095b2c2933d8
BLAKE2b-256 checksum
How to use checksums
b75d8fbdfd9cee9a30ba1ee2551162858776b44d1facd8abb355540a64437f48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
c0668e0b6a55c259a8b42b9733bc3e8698a81f43eba8f6ebb2119f4f094f8ec2
BLAKE2b-256 checksum
How to use checksums
c2496855e25243d92ca9321585f0856fae58dcf8ab6cf5af27c60dd5069f53fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
67b70ed859d2a582daf9374b8d2bbc1e1f7040eb50cd9a11b67aead0e883bbd3
BLAKE2b-256 checksum
How to use checksums
fa4129bdbb7c025d99067a6e5f9d6b2cba1144c8a820614088a2115b07efbafa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp39-cp39-macosx_10_12_x86_64.whl
Size 6.1 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7cb772028cb28553840f6f74f4e16c6ea4c016dab3d0f1dcdcc4d921fcfc5233
BLAKE2b-256 checksum
How to use checksums
1f90932c3901ac669c3eb3806f5290d4ac1c43dfd45ce4bba76cfc803ecf8fed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp38-none-win_amd64.whl
Size 5.3 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
cfdceb7ebbd633963cc8dbcfb10b72d004312fbf63fb8d2d20b3d64eeefe8d67
BLAKE2b-256 checksum
How to use checksums
e7843594ca643edae07609540ced4daca9b0c4ab9ad457c8eb0064731f58dddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp38-cp38-manylinux_2_31_x86_64.whl
Size 8.1 MB
Tags CPython 3.8 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
c014e4c75b2fc7eb85fddcc188b970d9385a62e5c056dee2e1ee594bdeb2ef93
BLAKE2b-256 checksum
How to use checksums
b2a348831433788ffd7d3f7db6c530dc4fafca0987400b2e66932c0eff482f1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / bytewax-0.18.2-cp38-cp38-manylinux_2_27_x86_64.whl

Download URL bytewax-0.18.2-cp38-cp38-manylinux_2_27_x86_64.whl
Size 8.0 MB
Tags CPython 3.8 Linux glibc 2.27+ x86-64
SHA-256 checksum
How to use checksums
58ff54593aea261639dad4d0b4bd589a7259d411458096fd4fe2417d3a6d54ab
BLAKE2b-256 checksum
How to use checksums
88f554c81ba5260cec2f21883264b45312c1b9bf842287226d5493db6f755812
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
7605bb9ecd12c4bc7a2888a5bec0b17ded9e376ea9bd87d739ea3389f83d86f3
BLAKE2b-256 checksum
How to use checksums
71c3a75fbfb5e9c7e4f0af5e3bd706f91e9feed88db761908ca9611880ae4b62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
864856902bc02763caa031bd0af0e64ec0aba257f693c05122266b3d1e1ad103
BLAKE2b-256 checksum
How to use checksums
a38543e87b702b6729a72a80c1bdd54ae3a88c244e8096d490d4c4b69e56ff80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-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
acec71f9bb15c392d05352b539ca5d5cfae9a038e954291f981801e8c6c9b795
BLAKE2b-256 checksum
How to use checksums
3c8f8bacc2baff1ea8b3fa8d4a3e867510de77e96263517aa20ac5eda08b1d45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

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

Download URL bytewax-0.18.2-cp38-cp38-macosx_10_12_x86_64.whl
Size 6.1 MB
Tags CPython 3.8 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6f19e71242cc364fcfdac0d58c263a7620030be7600fa0d71d403db167dfb939
BLAKE2b-256 checksum
How to use checksums
8f311261dd7ba11c9e5018efc08cb210e93dcebc84efff5c34dd4f222663e14b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18
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