Skip to main content

No project description provided

Project description

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 vms or kuberentes. You can download it here.


Getting Started with Bytewax

pip install bytewax

Install waxctl

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.

from bytewax.dataflow import Dataflow
from bytewax.connectors.kafka import KafkaInput

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

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

import json


def deserialize(key_bytes__payload_bytes):
    _, payload_bytes = key_bytes__payload_bytes
    event_data = json.loads(payload_bytes) if payload_bytes else None
    return event_data["user_id"], event_data


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


def remove_bytewax(user_id__event_data):
    user_id, event_data = user_id__event_data
    return "bytewax" not in event_data["email"]


flow = Dataflow()
flow.input("inp", KafkaInput(brokers=["localhost:9092"], topic="web_events"))
flow.map(deserialize)
flow.map(anonymize_email)
flow.filter(remove_bytewax)

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 collections import defaultdict

from bytewax.window import TumblingWindow, SystemClockConfig


def build():
    return defaultdict(lambda: 0)


def count_events(results, event):
    results[event["type"]] += 1
    return results


cc = SystemClockConfig()
align_to = datetime(2023, 1, 1, tzinfo=timezone.utc)
wc = TumblingWindow(length=timedelta(seconds=5), align_to=align_to)

flow.fold_window("session_state_recovery", cc, wc, build, count_events)

Output mechanisms in Bytewax are managed in the output operator. There are a number of helpers that allow you to easily connect and write to other systems (output docs). If there isn’t a helper built, it is easy to build a custom version, which we will do below. Similar the input, Bytewax output can be parallelized and the client connection will occur on the worker.

import json

import psycopg2

from bytewax.outputs import PartitionedOutput, StatefulSink


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

    def write(self, user_id__user_data):
        user_id, user_data = user_id__user_data
        query_string = """
            INSERT INTO events (user_id, data)
            VALUES (%s, %s)
            ON CONFLICT (user_id)
            DO UPDATE SET data = %s;
        """
        self.cur.execute(
            query_string, (user_id, json.dumps(user_data), json.dumps(user_data))
        )

    def snapshot(self):
        pass

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


class PsqlOutput(PartitionedOutput):
    def list_parts(self):
        return {"single"}

    def assign_part(self, item_key):
        return "single"

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


flow.output("out", PsqlOutput())

Bytewax dataflows can be executed on a single host with multiple Python processes, or on multiple hosts. When processing data in a distributed fashion, Bytewax will ensure that all items with the same key are routed to the same host.

python -m bytewax.run my_dataflow:flow

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bytewax-0.17.0-cp311-none-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.11Windows x86-64

bytewax-0.17.0-cp311-cp311-manylinux_2_31_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

bytewax-0.17.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

bytewax-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

bytewax-0.17.0-cp311-cp311-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bytewax-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

bytewax-0.17.0-cp310-none-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.10Windows x86-64

bytewax-0.17.0-cp310-cp310-manylinux_2_31_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.31+ x86-64

bytewax-0.17.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

bytewax-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

bytewax-0.17.0-cp310-cp310-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bytewax-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

bytewax-0.17.0-cp39-none-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.9Windows x86-64

bytewax-0.17.0-cp39-cp39-manylinux_2_31_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.31+ x86-64

bytewax-0.17.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

bytewax-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

bytewax-0.17.0-cp39-cp39-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

bytewax-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

bytewax-0.17.0-cp38-none-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.8Windows x86-64

bytewax-0.17.0-cp38-cp38-manylinux_2_31_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.31+ x86-64

bytewax-0.17.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARMv7l

bytewax-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

bytewax-0.17.0-cp38-cp38-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

bytewax-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file bytewax-0.17.0-cp311-none-win_amd64.whl.

File metadata

  • Download URL: bytewax-0.17.0-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for bytewax-0.17.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 f14181be339beb5828f36fdb4276cec505cbcc5c1586458310028cb5ca477ff8
MD5 f24c8990345aa9a09777b2492693a9c4
BLAKE2b-256 a15689a278e594c98507f20bc70d7dc289926435f2971aba370a0220721dd404

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 8e42774be46f1fe69b9a03ef4019ac40961a7f2a0439f2a7c040d342fc3b6c35
MD5 fc072f52cf837969bd62a1df3aee88cc
BLAKE2b-256 269add154e851df3d6cf4678781482a36c596fe8942f245a7fb4cdaed7a0e2d4

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7669a8a73d36edd7a6df9f5cf2c0eb76b6ca28ee748c411f6e46e4611c16c16b
MD5 35ccf0d5ed10507ca1834f76ff7dc8f1
BLAKE2b-256 f55db16591fe3be7363ef3575a0c516a26a6f230cd8f5ab4e9ae0969e84b58e3

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 92dd0bfab22ec9d5cb377252aaa5fe9dcb3f67ef45fe1556cf95918a969a359b
MD5 e5144044eb5591b1ed421d2cda05c23c
BLAKE2b-256 b2c7aab955ede4f84fa76919e6bdb7df1ebba4c224c871c48df90b4c8fe1a966

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44eb672cf2ed97a531037f4b2e876010a2e84343bdfb348a37970118ae2a236a
MD5 1b34bec98119b1a6a7fc6c0240e4eb37
BLAKE2b-256 9e7899335abd0ebaef0da21cf9e34ada363047ea0003b57a78881c00ae671423

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0b245aa971dd8a0e6ddfd5d127c05a0ca01dec4fed69ce8f7735daf57af28eb1
MD5 e18ea5a72b6cb0065a2bb4778743c44f
BLAKE2b-256 a38d7f16387a4908d2d22694c9800eb772c518427b5536748d1e550bf2186318

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-none-win_amd64.whl.

File metadata

  • Download URL: bytewax-0.17.0-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for bytewax-0.17.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 2380a0932961949257e935efd8eb52b63e8a0f778fbe08a22eaccca1853fb0ee
MD5 ec68721bbffc7f0d64e39ffe7229c8fc
BLAKE2b-256 e151297220422fe75d037e1bc14e0a3cc3274acc04bae85ffd07113c1a2d433a

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-cp310-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp310-cp310-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 ed9e301f27ffced618d4284f0b8d3198134d7e3c9e5878249fb44bb6ca8db274
MD5 777169411711796afd0d2e4a8dcb3c62
BLAKE2b-256 37b6a96729546e41ebdc613d18d1b3a4740f631f7149b77883c7a0b4440843b9

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 87a9cdae767a536ba5e1b570ac933f5ef96d673a1033a3081e0fab859e0c31cf
MD5 ab8521f51a6d2c2564b2244fd581fb46
BLAKE2b-256 2c12024737297eba9fc4f5f5af49f02dcf389047bf7fdd2be88efd05260ccdf7

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 10c07ac42911a6a1f8abe539c796641a0d931a8593d141e5af191569d8f0ec6d
MD5 b223cb75e64309e2958cab5934ffb6e6
BLAKE2b-256 e81b7e54fa617eaf5b7b119d78c5c3bc94cb99f6be7f95858544b421041c77b1

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 066b9ae8a1af6c511c4ef745be8846d596305a107d60617502ab988774ebfa4b
MD5 6e42b6dead39e710c7a02b2cdf79a89b
BLAKE2b-256 a8cec81921127707a643c43cdea6ff4fc0490cb022574b9d6102ef05ca1bae8f

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 052e0a10dc8a7e6c25dab2ecb215f95eab314390b6bdc2e2ffb14b8595e542c7
MD5 8af50aaf04b8d9027f6594cffee5ed5d
BLAKE2b-256 49c5ce1fa68cbe190d37d9ac7ab96ae8e12eb3fcaf06c6a692cabad53589f25f

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-none-win_amd64.whl.

File metadata

  • Download URL: bytewax-0.17.0-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for bytewax-0.17.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 14beb16ade1c3c33170e0e6771b7ee71eb3987d0c4f4e323a21290795edc406a
MD5 0cd7213fa379db840ea949e3b9182282
BLAKE2b-256 99a84d5961e7d2f40a6a258da10d7360147900c5e7389a1f9f7e6661bf0a9d40

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-cp39-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp39-cp39-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 98d7d5abcf6435b2d5468d217a7dc631b1507a3e2001a2505c3ef732f5374830
MD5 b84828e21ff72edf4f9cc2babb418287
BLAKE2b-256 a6f37fd066bb7e29be846e36b9c938f907f8974f6cbe2c650dee0457343e5292

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 13e3e4db296223a0672aefe3bbfd1aaab7228babc51511e153970e78d5abf1e4
MD5 d8f4885fead9f2fddf2317970efded9d
BLAKE2b-256 4ee2a50fac2371e25aca81411644033b83032376514af61a12418ff0f2005de3

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 57cbeb169df4fbb1adef805dc5f3bffca25a5533c4494d277c083b46d7dd6cfe
MD5 a040a01f8a08779e9c198d628f4129dd
BLAKE2b-256 fb0ee5fd07853598a761f95d345b519c43f50a4f85604e1b9ebf96a05ca691fd

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 470e3ca39dfedd0654e4a14d7d2e805526c489aa9461d4e8e89f0a7e7df61d5d
MD5 9be921b96fdf8b731e0420646aa4d995
BLAKE2b-256 ba15b57c055318ca6e5ff834fb237c57e07b22d57c773a2a2c3dac71f52ecae8

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 57b2a0ea48e36ed0ebc3921bf064c76e7d515be3b64678e0677891be7c7b6021
MD5 18089d6a12904e6db44b3c55fcc4c375
BLAKE2b-256 1b93277e96294e4d606bdf32e550a18464b0bedc34b143144d6da61f87933248

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-none-win_amd64.whl.

File metadata

  • Download URL: bytewax-0.17.0-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for bytewax-0.17.0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 d4fa6a885548789acade47f24552c87ce28e9bbc566275249fe9db612acd4300
MD5 8b0658a26f2b613f026ef8ea55fac281
BLAKE2b-256 5e2b235c7121a17c349528e604865085a1817546b9fc9a166a2417f0effe7853

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-cp38-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp38-cp38-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 49212ec618e4381b68b9489795ff2e92736faa08d2aed674d8be176755bb0e2e
MD5 d3b17b60ad7f3f9d2091086ba7cbc807
BLAKE2b-256 38e3404718620ef93f52804189d7eb64f81c6b5a12b34639485dc9204c8a7da9

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6a8c170bf31571cc09d881a487cc3b1715d68d6d345f343dfe7db9fb86840673
MD5 2fa0127cf70659b7f98094e2c743d511
BLAKE2b-256 98e4889d8988d3cb0d20fa80e49a248c288bafc8406f9b101551dbfa6bcc3e3e

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 421fb183fe154c884fdecf9318e237f039f289d3c9fad797de1abb1dce8c9cc8
MD5 b2c756eb3857f2b10db1898dfa205acc
BLAKE2b-256 9b00b2c20678e4767cc48af196f1832632f4f69fcf48d2332bd98abff041b1c6

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 344973a08e1df7729728127a3c483340e568047f32df8857108800b5a5be0224
MD5 ef2eb636a20d0817ca52179dff687df3
BLAKE2b-256 bf7dc496a48633c448bcd980c34f9699cd9f87f607175cb42a758fe750589b78

See more details on using hashes here.

File details

Details for the file bytewax-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for bytewax-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d5d8e6e7aa091fd0e3748c7a76ae3b423794e69497560a3dbb010c173cf5c757
MD5 877cf8a54b0172fba62b56fba5a3ecc3
BLAKE2b-256 8981db14ee05a680e8715c185c4a38902975d91dc04718f5e4718757dea487e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page