All Projects → timkpaine → Tributary

timkpaine / Tributary

Licence: apache-2.0
Streaming reactive and dataflow graphs in Python

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Tributary

Azure Event Hubs Spark
Enabling Continuous Data Processing with Apache Spark and Azure Event Hubs
Stars: ✭ 140 (-39.39%)
Mutual labels:  stream, kafka, streaming
Rxgo
Reactive Extensions for the Go language.
Stars: ✭ 3,907 (+1591.34%)
Mutual labels:  stream, streaming, asynchronous
Fs2 Kafka
Kafka client for functional streams for scala (fs2)
Stars: ✭ 75 (-67.53%)
Mutual labels:  asynchronous, kafka, streaming
Bigdata practice
大数据分析可视化实践
Stars: ✭ 166 (-28.14%)
Mutual labels:  stream, kafka
Redpanda
Redpanda is the real-time engine for modern apps. Kafka API Compatible; 10x faster 🚀 See more at vectorized.io/redpanda
Stars: ✭ 3,114 (+1248.05%)
Mutual labels:  kafka, streaming
Simple Websocket
Simple, EventEmitter API for WebSockets
Stars: ✭ 159 (-31.17%)
Mutual labels:  stream, streaming
Goka
Goka is a compact yet powerful distributed stream processing library for Apache Kafka written in Go.
Stars: ✭ 1,862 (+706.06%)
Mutual labels:  stream, kafka
Hstream
The streaming database built for IoT data storage and real-time processing in the 5G Era
Stars: ✭ 166 (-28.14%)
Mutual labels:  stream, streaming
Kafka Streams In Action
Source code for the Kafka Streams in Action Book
Stars: ✭ 167 (-27.71%)
Mutual labels:  kafka, streaming
Render Media
Intelligently render media files in the browser
Stars: ✭ 181 (-21.65%)
Mutual labels:  stream, streaming
Vlc Bittorrent
A bittorrent plugin for VLC.
Stars: ✭ 198 (-14.29%)
Mutual labels:  stream, streaming
Streamline
StreamLine - Streaming Analytics
Stars: ✭ 151 (-34.63%)
Mutual labels:  kafka, streaming
Jaxon
Streaming JSON parser for Elixir
Stars: ✭ 145 (-37.23%)
Mutual labels:  stream, streaming
Webssh
🌱 Web based ssh client
Stars: ✭ 2,520 (+990.91%)
Mutual labels:  asynchronous, websockets
Amazonriver
amazonriver 是一个将postgresql的实时数据同步到es或kafka的服务
Stars: ✭ 198 (-14.29%)
Mutual labels:  stream, kafka
Voik
♒︎ [WIP] An experimental ~distributed~ commit-log
Stars: ✭ 200 (-13.42%)
Mutual labels:  kafka, streaming
Glob Stream
A Readable Stream interface over node-glob.
Stars: ✭ 172 (-25.54%)
Mutual labels:  stream, streaming
Digital Restaurant
DDD. Event sourcing. CQRS. REST. Modular. Microservices. Kotlin. Spring. Axon platform. Apache Kafka. RabbitMQ
Stars: ✭ 222 (-3.9%)
Mutual labels:  kafka, websockets
Twitchrecover
Twitch VOD tool which recovers all VODs including those that are sub only or deleted.
Stars: ✭ 123 (-46.75%)
Mutual labels:  stream, streaming
Smoothstream
Webcam, PiCamera streaming over the network with Python made easy.
Stars: ✭ 133 (-42.42%)
Mutual labels:  stream, streaming

Python Data Streams

Build Status Coverage PyPI PyPI Docs Binder

Tributary is a library for constructing dataflow graphs in python. Unlike many other DAG libraries in python (airflow, luigi, prefect, dagster, dask, kedro, etc), tributary is not designed with data/etl pipelines or scheduling in mind. Instead, tributary is more similar to libraries like mdf, pyungo, streamz, or pyfunctional, in that it is designed to be used as the implementation for a data model. One such example is the greeks library, which leverages tributary to build data models for options pricing.

Installation

Install with pip:

pip install tributary

or with conda:

conda install -c conda-forge tributary

or from source:

python setup.py install

Note: If installing from source or with pip, you'll also need Graphviz itself if you want to visualize the graph using the .graphviz() method.

Stream Types

Tributary offers several kinds of streams:

Streaming

These are synchronous, reactive data streams, built using asynchronous python generators. They are designed to mimic complex event processors in terms of event ordering.

Functional

These are functional streams, built by currying python functions (callbacks).

Lazy

These are lazily-evaluated python streams, where outputs are propogated only as inputs change. They are implemented as directed acyclic graphs.

Examples

  • Streaming: In this example, we construct a variety of forward propogating reactive graphs.
  • Lazy: In this example, we construct a variety of lazily-evaluated directed acyclic computation graphs.
  • Automatic Differentiation: In this example, we use tributary to perform automatic differentiation on both lazy and streaming graphs.

Graph Visualization

You can visualize the graph with Graphviz. All streaming and lazy nodes support a graphviz method.

Streaming and lazy nodes also support ipydagred3 for live update monitoring.

Streaming

Here green indicates executing, yellow indicates stalled for backpressure, and red indicates that StreamEnd has been propogated (e.g. stream has ended).

Lazy

Here green indicates executing, and red indicates that the node is dirty. Note the the determination if a node is dirty is also done lazily (we can check with isDirty whcih will update the node's graph state.

Catalog

See the CATALOG for a full list of functions, transforms, sources, and sinks.

Support / Contributors

Thanks to the following organizations for providing code or financial support.

Nemoulous

License

This software is licensed under the Apache 2.0 license. See the LICENSE file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].