Skip to main content

Python Stream Processing. A Faust fork

Project description

faust

Python Stream Processing Fork

python versions version codecov slack Code style: black pre-commit license downloads

Installation

pip install faust-streaming

Documentation

Why the fork

We have decided to fork the original Faust project because there is a critical process of releasing new versions which causes uncertainty in the community. Everybody is welcome to contribute to this fork, and you can be added as a maintainer.

We want to:

  • Ensure continues release
  • Code quality
  • Use of latest versions of kafka drivers (for now only aiokafka)
  • Support kafka transactions
  • Update the documentation

and more...

Usage

# Python Streams
# Forever scalable event processing & in-memory durable K/V store;
# as a library w/ asyncio & static typing.
import faust

Faust is a stream processing library, porting the ideas from Kafka Streams to Python.

It is used at Robinhood to build high performance distributed systems and real-time data pipelines that process billions of events every day.

Faust provides both stream processing and event processing, sharing similarity with tools such as Kafka Streams, Apache Spark, Storm, Samza, Flink,

It does not use a DSL, it's just Python! This means you can use all your favorite Python libraries when stream processing: NumPy, PyTorch, Pandas, NLTK, Django, Flask, SQLAlchemy, ++

Faust requires Python 3.6 or later for the new async/await_ syntax, and variable type annotations.

Here's an example processing a stream of incoming orders:

app = faust.App('myapp', broker='kafka://localhost')

# Models describe how messages are serialized:
# {"account_id": "3fae-...", amount": 3}
class Order(faust.Record):
    account_id: str
    amount: int

@app.agent(value_type=Order)
async def order(orders):
    async for order in orders:
        # process infinite stream of orders.
        print(f'Order for {order.account_id}: {order.amount}')

The Agent decorator defines a "stream processor" that essentially consumes from a Kafka topic and does something for every event it receives.

The agent is an async def function, so can also perform other operations asynchronously, such as web requests.

This system can persist state, acting like a database. Tables are named distributed key/value stores you can use as regular Python dictionaries.

Tables are stored locally on each machine using a super fast embedded database written in C++, called RocksDB.

Tables can also store aggregate counts that are optionally "windowed" so you can keep track of "number of clicks from the last day," or "number of clicks in the last hour." for example. Like Kafka Streams, we support tumbling, hopping and sliding windows of time, and old windows can be expired to stop data from filling up.

For reliability, we use a Kafka topic as "write-ahead-log". Whenever a key is changed we publish to the changelog. Standby nodes consume from this changelog to keep an exact replica of the data and enables instant recovery should any of the nodes fail.

To the user a table is just a dictionary, but data is persisted between restarts and replicated across nodes so on failover other nodes can take over automatically.

You can count page views by URL:

# data sent to 'clicks' topic sharded by URL key.
# e.g. key="http://example.com" value="1"
click_topic = app.topic('clicks', key_type=str, value_type=int)

# default value for missing URL will be 0 with `default=int`
counts = app.Table('click_counts', default=int)

@app.agent(click_topic)
async def count_click(clicks):
    async for url, count in clicks.items():
        counts[url] += count

The data sent to the Kafka topic is partitioned, which means the clicks will be sharded by URL in such a way that every count for the same URL will be delivered to the same Faust worker instance.

Faust supports any type of stream data: bytes, Unicode and serialized structures, but also comes with "Models" that use modern Python syntax to describe how keys and values in streams are serialized:

# Order is a json serialized dictionary,
# having these fields:

class Order(faust.Record):
    account_id: str
    product_id: str
    price: float
    quantity: float = 1.0

orders_topic = app.topic('orders', key_type=str, value_type=Order)

@app.agent(orders_topic)
async def process_order(orders):
    async for order in orders:
        # process each order using regular Python
        total_price = order.price * order.quantity
        await send_order_received_email(order.account_id, order)

Faust is statically typed, using the mypy type checker, so you can take advantage of static types when writing applications.

The Faust source code is small, well organized, and serves as a good resource for learning the implementation of Kafka Streams.

Learn more about Faust in the introduction introduction page to read more about Faust, system requirements, installation instructions, community resources, and more.

or go directly to the quickstart tutorial to see Faust in action by programming a streaming application.

then explore the User Guide for in-depth information organized by topic.

Local development

  1. Clone the project
  2. Create a virtualenv: python3.7 -m venv venv && source venv/bin/activate
  3. Install the requirements: ./scripts/install
  4. Run lint: ./scripts/lint
  5. Run tests: ./scripts/tests

Faust key points

Simple

Faust is extremely easy to use. To get started using other stream processing solutions you have complicated hello-world projects, and infrastructure requirements. Faust only requires Kafka, the rest is just Python, so If you know Python you can already use Faust to do stream processing, and it can integrate with just about anything.

Here's one of the easier applications you can make::

import faust

class Greeting(faust.Record):
    from_name: str
    to_name: str

app = faust.App('hello-app', broker='kafka://localhost')
topic = app.topic('hello-topic', value_type=Greeting)

@app.agent(topic)
async def hello(greetings):
    async for greeting in greetings:
        print(f'Hello from {greeting.from_name} to {greeting.to_name}')

@app.timer(interval=1.0)
async def example_sender(app):
    await hello.send(
        value=Greeting(from_name='Faust', to_name='you'),
    )

if __name__ == '__main__':
    app.main()

You're probably a bit intimidated by the async and await keywords, but you don't have to know how asyncio works to use Faust: just mimic the examples, and you'll be fine.

The example application starts two tasks: one is processing a stream, the other is a background thread sending events to that stream. In a real-life application, your system will publish events to Kafka topics that your processors can consume from, and the background thread is only needed to feed data into our example.

Highly Available

Faust is highly available and can survive network problems and server crashes. In the case of node failure, it can automatically recover, and tables have standby nodes that will take over.

Distributed

Start more instances of your application as needed.

Fast

A single-core Faust worker instance can already process tens of thousands of events every second, and we are reasonably confident that throughput will increase once we can support a more optimized Kafka client.

Flexible

Faust is just Python, and a stream is an infinite asynchronous iterator. If you know how to use Python, you already know how to use Faust, and it works with your favorite Python libraries like Django, Flask, SQLAlchemy, NLTK, NumPy, SciPy, TensorFlow, etc.

Bundles

Faust also defines a group of setuptools extensions that can be used to install Faust and the dependencies for a given feature.

You can specify these in your requirements or on the pip command-line by using brackets. Separate multiple bundles using the comma:

pip install "faust-streaming[rocksdb]"

pip install "faust-streaming[rocksdb,uvloop,fast,redis,aerospike]"

The following bundles are available:

Faust with extras

Stores

RocksDB

For using RocksDB for storing Faust table state. Recommended in production.

pip install faust-streaming[rocksdb] (uses RocksDB 6)

pip install faust-streaming[rocksdict] (uses RocksDB 8, not backwards compatible with 6)

Aerospike

pip install faust-streaming[aerospike] for using Aerospike for storing Faust table state. Recommended if supported

Aerospike Configuration

Aerospike can be enabled as the state store by specifying store="aerospike://"

By default, all tables backed by Aerospike use use_partitioner=True and generate changelog topic events similar to a state store backed by RocksDB. The following configuration options should be passed in as keys to the options parameter in Table namespace : aerospike namespace

ttl: TTL for all KV's in the table

username: username to connect to the Aerospike cluster

password: password to connect to the Aerospike cluster

hosts : the hosts parameter as specified in the aerospike client

policies: the different policies for read/write/scans policies

client: a dict of host and policies defined above

Caching

faust-streaming[redis] for using Redis as a simple caching backend (Memcached-style).

Codecs

faust-streaming[yaml] for using YAML and the PyYAML library in streams.

Optimization

faust-streaming[fast] for installing all the available C speedup extensions to Faust core.

Sensors

faust-streaming[datadog] for using the Datadog Faust monitor.

faust-streaming[statsd] for using the Statsd Faust monitor.

faust-streaming[prometheus] for using the Prometheus Faust monitor.

Event Loops

faust-streaming[uvloop] for using Faust with uvloop.

faust-streaming[eventlet] for using Faust with eventlet

Debugging

faust-streaming[debug] for using aiomonitor to connect and debug a running Faust worker.

faust-streaming[setproctitle]when the setproctitle module is installed the Faust worker will use it to set a nicer process name in ps/top listings.vAlso installed with the fast and debug bundles.

Downloading and installing from source

Download the latest version of Faust from https://pypi.org/project/faust-streaming/

You can install it by doing:

$ tar xvfz faust-streaming-0.0.0.tar.gz
$ cd faust-streaming-0.0.0
$ python setup.py build
# python setup.py install

The last command must be executed as a privileged user if you are not currently using a virtualenv.

Using the development version

With pip

You can install the latest snapshot of Faust using the following pip command:

pip install https://github.com/faust-streaming/faust/zipball/master#egg=faust

FAQ

Can I use Faust with Django/Flask/etc

Yes! Use eventlet as a bridge to integrate with asyncio.

Using eventlet

This approach works with any blocking Python library that can work with eventlet

Using eventlet requires you to install the faust-aioeventlet module, and you can install this as a bundle along with Faust:

pip install -U faust-streaming[eventlet]

Then to actually use eventlet as the event loop you have to either use the -L <faust --loop> argument to the faust program:

faust -L eventlet -A myproj worker -l info

or add import mode.loop.eventlet at the top of your entry point script:

#!/usr/bin/env python3
import mode.loop.eventlet  # noqa

It's very important this is at the very top of the module, and that it executes before you import libraries.

Can I use Faust with Tornado

Yes! Use the tornado.platform.asyncio bridge

Can I use Faust with Twisted

Yes! Use the asyncio reactor implementation: https://twistedmatrix.com/documents/current/api/twisted.internet.asyncioreactor.html

Will you support Python 2.7 or Python 3.5

No. Faust requires Python 3.10 or later, since it heavily uses features that were introduced in Python 3.6 (async, await, variable type annotations).

I get a maximum number of open files exceeded error by RocksDB when running a Faust app locally. How can I fix this

You may need to increase the limit for the maximum number of open files. On macOS and Linux you can use:

ulimit -n max_open_files to increase the open files limit to max_open_files.

On docker, you can use the --ulimit flag:

docker run --ulimit nofile=50000:100000 <image-tag> where 50000 is the soft limit, and 100000 is the hard limit See the difference.

What kafka versions faust supports

Faust supports kafka with version >= 0.10.

Getting Help

Slack

For discussions about the usage, development, and future of Faust, please join the fauststream Slack.

Resources

Bug tracker

If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/faust-streaming/faust/issues/

License

This software is licensed under the New BSD License. See the LICENSE file in the top distribution directory for the full license text.

Contributing

Development of Faust happens at GitHub

You're highly encouraged to participate in the development of Faust.

Code of Conduct

Everyone interacting in the project's code bases, issue trackers, chat rooms, and mailing lists is expected to follow the Faust Code of Conduct.

As contributors and maintainers of these projects, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in these projects a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.

Examples of unacceptable behavior by participants include:

  • The use of sexualized language or imagery
  • Personal attacks
  • Trolling or insulting/derogatory comments
  • Public or private harassment
  • Publishing other's private information, such as physical or electronic addresses, without explicit permission
  • Other unethical or unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.

This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

Project details


Release history Release notifications | RSS feed

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.

faust_streaming-0.12.0-cp313-cp313-win_amd64.whl (828.9 kB view details)

Uploaded CPython 3.13Windows x86-64

faust_streaming-0.12.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

faust_streaming-0.12.0-cp313-cp313-macosx_11_0_arm64.whl (516.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

faust_streaming-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl (528.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

faust_streaming-0.12.0-cp312-cp312-win_amd64.whl (830.2 kB view details)

Uploaded CPython 3.12Windows x86-64

faust_streaming-0.12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

faust_streaming-0.12.0-cp312-cp312-macosx_11_0_arm64.whl (518.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

faust_streaming-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl (530.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

faust_streaming-0.12.0-cp311-cp311-win_amd64.whl (830.1 kB view details)

Uploaded CPython 3.11Windows x86-64

faust_streaming-0.12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

faust_streaming-0.12.0-cp311-cp311-macosx_11_0_arm64.whl (518.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

faust_streaming-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl (527.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

faust_streaming-0.12.0-cp310-cp310-win_amd64.whl (830.1 kB view details)

Uploaded CPython 3.10Windows x86-64

faust_streaming-0.12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

faust_streaming-0.12.0-cp310-cp310-macosx_11_0_arm64.whl (519.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

faust_streaming-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl (528.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file faust_streaming-0.12.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 48854c8d70dba14ad055d2dac33746861a7596b8b26c7a287ddcc8a0a04eb11c
MD5 ce9e58bc48527042836996beec931721
BLAKE2b-256 f085a909ec620a30d9341193ce415e79f37ae8f1abb34cf32ddfcbf26a12f279

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp313-cp313-win_amd64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94b6d325fe83126f1bbb3e0647d21eda6ea7ed93796dfb4b33bb6e8024461993
MD5 85359b9dcefe060a63de4bf950192e3c
BLAKE2b-256 a386309ea286907da296bd48bc836c1ca1812c59ddb424baf917ab9418847d8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6052fe6868f635b440dd3131eadf25a2e3c41ea510280156829a4a9300f9e3c
MD5 e7bb73575e8bc61815da2e36112135d8
BLAKE2b-256 f5bcc7a76f62b8b50c9e5f703ee64fb7ddbd76edbdfb5cadb88acd8a7aaa1e8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 dd41b6092b208e5dabca57d23f802a0c65459cfb2331dd3d2a943939b372ce45
MD5 0ca2148136d4b3dc2c12c8a20768f49c
BLAKE2b-256 11084bc41c1dcd4a6e14c09652d832ce8c79b18a3956dd7c7af273d0f6650dbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 35b34c6952d96a79212ee7ccada9d0ee25a6f1e1a2646553c9ee30cf3785c5e8
MD5 c1141819adbb6373b6e1a9c26a99d7bf
BLAKE2b-256 58bb4c84796a3d1f377cd356827ffac5a5766aeb6b3fe973f11ecc16a9de43ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp312-cp312-win_amd64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a79d07574e9265dcfa988ce51542d916038e9d4f5315b87336dfc696e726f13
MD5 80d66e9539e05cac0c0deb117e0fcad9
BLAKE2b-256 3d49a12c7c89534c0d4386e2f9f5d588abeb3e1c373a0ccdd653fd9b663adc8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c9b14e484398f36494878e42ae0bcee05358de30888d5efb5a33f514b60c724
MD5 71984e5bcfa47075a4062b231dc82a46
BLAKE2b-256 321687b181044c3c5149de7a43030e8f71116cc87852d94bd90fb5d9091d8766

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bcedc07a7fde74110c315165bc0690f13d135d16a48659af887aa201a53a0572
MD5 a65bbcfc3faf02a2e94deac54085eef4
BLAKE2b-256 534bc8c90c891dde516802178ab51645251f43242ca5b6d3ec66ce8997092afb

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 67ee1a3f4096075525f1aa2d42647f87d70b3465ad8de71937bbaf0521d0e7f6
MD5 b29bc9d1461e4278d5dec331a71504d4
BLAKE2b-256 9b9d8263fd75abe5606ec0aa6b37de02a588e232c3872244315d580dec753f4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp311-cp311-win_amd64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02e5360d464826aadf01ab779460986d3799664f72518b94d9130448a46b9454
MD5 97034ed450c26460402d147c85bfc28d
BLAKE2b-256 6b338f09267eafa7752362c6fb7e747f428b2f066abed309a25fb46f4dfae994

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 642830bfb0db44cd3d216596bf6752f891ba84bb1d61bf803211ec1d136a6188
MD5 4ad3cd5f631f7323a325dcbe21c8d12a
BLAKE2b-256 3413a5027cf80e572a12802e4634bfa8686aef84489bb0bce489da917fbfdf2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a1aba0a73fcdc63db93117ebed454cc707cf635adec11e963c6cffa1406c203b
MD5 f34ee670f10c882e8c3ac4bbd2f0fb2c
BLAKE2b-256 b4087210d38a644d36779280e405a8354c6e721cf8f6fc7741d250021f7f0fdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 353a08b0c93bb32dddd06e462f3cc6fce368d380674108ffb0943b3f45272c12
MD5 51679a2d9efe20c1d991d5ecdfe9a206
BLAKE2b-256 78e2f7343ef26f607a26bae72f654b92525d484f054f9cde8421b0dc96344601

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp310-cp310-win_amd64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bcb1c4279d100469c3981c4baecc5e2af7b3a82224d85a5ffcbfcc2d6fdd587
MD5 c6ea1f1cf955dca2ba9e19be796bc1b7
BLAKE2b-256 d7092b198e60751837594db6c3946ba72ee21342128f11498a1e7edda954f911

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 277b9c88be62b351a30a43ab74cdcff6e21888e188b9698a769b1c7daef7192b
MD5 db66fdfa6fbf0cdd6058256ee7635894
BLAKE2b-256 a40c47d5c82e0b416fdd04674e1d67f5f88c47012d75730e3056d1ce9e106c84

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faust_streaming-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for faust_streaming-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6883977ca25c7e6ee0dc89dde4d5eaa788237be408aedb644803eecb8715b0d9
MD5 b00d3dfb444742507460b9b82708a668
BLAKE2b-256 a66bb88e4aa1f102e97375bc67f500192ddd6920b922dd314b889fe6fb5c53f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for faust_streaming-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: python-package.yml on faust-streaming/faust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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