# reactivex/rxpy

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/reactivex-rxpy).**

5,014 stars · 367 forks · Python · MIT

## Links

- GitHub: https://github.com/ReactiveX/RxPY
- Homepage: https://rxpy.rtfd.io
- awesome-repositories: https://awesome-repositories.com/repository/reactivex-rxpy.md

## Description

RxPY is a functional reactive programming library and a ReactiveX observable library for Python. It serves as an asynchronous stream processor and event-driven coordination framework used to build data pipelines that react to changes in state or streams of events over time.

The library provides a toolkit for composing asynchronous and event-based programs using observable sequences and operators. It distinguishes itself through the use of configurable schedulers to manage concurrency, timing, and subscription lifecycles.

The project covers a wide range of stream processing capabilities, including data aggregation, filtering, and combination. It provides mechanisms for event broadcasting, sequence buffering, and error handling, as well as tools for coordinating observable streams with asynchronous event loops.

Testing and quality assurance are supported through virtual time simulation, marble diagram modeling, and emission verification.

## Tags

### Programming Languages & Runtimes

- [Asynchronous Stream Processing Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-stream-processing-frameworks.md) — Serves as a comprehensive framework for composing asynchronous data pipelines using non-blocking operators.
- [Reactive Programming](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/reactive-programming.md) — Implements a programming paradigm focused on data streams and the automatic propagation of change.
- [ReactiveX Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/reactivex-implementations.md) — Implements the ReactiveX API in Python for composing asynchronous and event-based programs.

### Data & Databases

- [Stream Processors](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/stream-pipeline-orchestration/stream-processors.md) — Provides a toolkit for the reactive transformation and combination of multiple asynchronous data streams.
- [Data Stream Subscriptions](https://awesome-repositories.com/f/data-databases/data-stream-subscriptions.md) — Provides interfaces for subscribers to attach handlers and react to real-time data stream emissions. ([source](https://rxpy.readthedocs.io/en/latest/reference_observable.html))
- [Real-Time Data Processors](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-processing/distributed-processing-frameworks/real-time-data-processors.md) — Processes live data streams in real-time by chaining operators to aggregate, buffer, or merge values.
- [Event Stream Filtering](https://awesome-repositories.com/f/data-databases/event-based-stream-processing/event-stream-filtering.md) — Filters items from event streams based on predicates, indices, or timing criteria. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))
- [Event Stream Broadcasters](https://awesome-repositories.com/f/data-databases/record-updating/live-update-subscriptions/event-stream-broadcasters.md) — Implements mechanisms for broadcasting real-time events and state changes to all current subscribers simultaneously. ([source](https://rxpy.readthedocs.io/en/latest/reference_subject.html))
- [Stream Mathematical Aggregations](https://awesome-repositories.com/f/data-databases/stream-mathematical-aggregations.md) — Computes statistical aggregates such as sums, averages, and counts across asynchronous data sequences. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))

### Software Engineering & Architecture

- [Reactive Event Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-event-dispatchers/reactive-event-dispatchers.md) — Uses subjects to act as both observer and observable, allowing manual control over when values reach subscribers. ([source](https://rxpy.readthedocs.io/en/latest/reference.html))
- [Concurrent Workload Coordination](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-workload-coordination.md) — Coordinates the execution of asynchronous tasks across different threads using configurable schedulers.
- [Event-Driven Architectures](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures.md) — Provides a framework for building reactive systems based on asynchronous event triggers and notifications.
- [Event-Driven Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-frameworks.md) — Supplies structural primitives for building asynchronous, event-based applications via schedulers and observers.
- [Execution Schedulers](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/concurrency-controlled-schedulers/execution-schedulers.md) — Provides schedulers that abstract timing and concurrency, decoupling event delivery from the main thread.
- [Stream Generators](https://awesome-repositories.com/f/software-engineering-architecture/flow-modularization/modular-flow-composition/observable-streams/stream-generators.md) — Generates observable streams from various sources including manual triggers, time intervals, and existing data structures. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))
- [Functional Reactive Programming Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/functional-reactive-programming-frameworks.md) — Combines functional programming patterns with reactive data streams for state management and data pipelines.
- [Observer Patterns](https://awesome-repositories.com/f/software-engineering-architecture/observer-patterns.md) — Implements the observer pattern to notify subscribers of new data, errors, or completion events.
- [Stream Operator Chains](https://awesome-repositories.com/f/software-engineering-architecture/stream-piping/function-composition-operators/stream-operator-chains.md) — Enables declarative pipeline composition where the output of one stream operator becomes the input of the next.
- [Subject-Based Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-event-dispatchers/event-to-observable-conversion/subject-based-dispatchers.md) — Provides Subjects that combine observer and observable roles to allow manual injection of values into data streams.
- [Concurrency Schedulers](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-schedulers.md) — Uses schedulers to manage the execution context and threading of asynchronous stream emissions. ([source](https://rxpy.readthedocs.io/en/latest/))
- [Reactive Error Recovery Strategies](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/stream-error-signaling/reactive-error-recovery-strategies.md) — Manages exceptions in a sequence by switching to a fallback stream or retrying the subscription. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))
- [Observable Source Definitions](https://awesome-repositories.com/f/software-engineering-architecture/event-sourcing/custom-event-sources/observable-source-definitions.md) — Allows creating new observable sequences by specifying custom subscription functions to manage data emission. ([source](https://rxpy.readthedocs.io/en/latest/reference_observable_factory.html))
- [Subscription Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/observable-state-management/subscription-lifecycle-management.md) — Provides connectable observables that decouple the start of data emission from the moment observers subscribe.
- [Reactive Value Combinations](https://awesome-repositories.com/f/software-engineering-architecture/reactive-value-declarations/reactive-value-combinations.md) — Combines multiple reactive sources into a single tuple containing the most recent element from each. ([source](https://rxpy.readthedocs.io/en/latest/reference_observable_factory.html))
- [Sequence Buffering](https://awesome-repositories.com/f/software-engineering-architecture/sequence-buffering.md) — Groups stream elements into collections based on size, time duration, or boundary signals for batch processing. ([source](https://rxpy.readthedocs.io/en/latest/reference_operators.html))
- [Sequential Stream Concatenation](https://awesome-repositories.com/f/software-engineering-architecture/sequential-stream-concatenation.md) — Joins multiple asynchronous streams such that each completes before the next begins in a strict sequential order. ([source](https://rxpy.readthedocs.io/en/latest/reference_observable_factory.html))
- [Connectable Observables](https://awesome-repositories.com/f/software-engineering-architecture/stream-emission-timing-control/subscription-triggered-emissions/connectable-observables.md) — Implements connectable observables that allow manual trigger of emissions and historical value replay for subscribers. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))
- [Subscription Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/subscription-lifecycle-management.md) — Monitors the creation and disposal of subscriptions to ensure proper resource cleanup and memory management. ([source](https://rxpy.readthedocs.io/en/latest/testing.html))
- [Time-Based Event Scheduling](https://awesome-repositories.com/f/software-engineering-architecture/time-based-event-scheduling.md) — Controls the timing and frequency of item emissions by integrating schedulers into the observable creation process. ([source](https://rxpy.readthedocs.io/en/latest/migration.html))
- [Value-Based Event Routing](https://awesome-repositories.com/f/software-engineering-architecture/value-based-event-routing.md) — Enables selecting specific event sources from a collection based on emitted values using mapping functions. ([source](https://rxpy.readthedocs.io/en/latest/reference_observable_factory.html))

### Web Development

- [Stream Combinators](https://awesome-repositories.com/f/web-development/asynchronous-api-clients/stream-composition/stream-combinators.md) — Provides functional combinators like merge and zip to synchronize and unify multiple event streams. ([source](https://rxpy.readthedocs.io/en/latest/migration.html))
- [Functional Stream Transformations](https://awesome-repositories.com/f/web-development/request-body-handling/functional-stream-transformations.md) — Implements functional operators to filter, throttle, and merge asynchronous data streams using pure functions.

### Development Tools & Productivity

- [Task Racing](https://awesome-repositories.com/f/development-tools-productivity/asynchronous-task-processing/task-racing.md) — Monitors multiple asynchronous sequences and propagates only the value from the one that reacts first. ([source](https://rxpy.readthedocs.io/en/latest/reference_operators.html))
- [State Tracking Utilities](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/state-tracking-utilities.md) — Maintains and emits the most recent value to new subscribers to represent a changing state over time. ([source](https://rxpy.readthedocs.io/en/latest/reference_subject.html))
- [Event Loop Integrations](https://awesome-repositories.com/f/development-tools-productivity/event-loop-integrations.md) — Offers adapters and configurations to interoperate observable streams with asynchronous event-driven runtimes. ([source](https://rxpy.readthedocs.io/en/latest/get_started.html))

### DevOps & Infrastructure

- [Stream Timing Coordination](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/task-job-management/task-schedulers/delayed-task-scheduling/timed-event-scheduling/stream-timing-coordination.md) — Provides tools to control event timing by shifting time, attaching timestamps, and assigning execution schedulers. ([source](https://rxpy.readthedocs.io/en/latest/operators.html))

### Networking & Communication

- [Replay Buffers](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/event-history-persistence/replay-buffers.md) — The library stores a specific number of previous values to give new subscribers immediate access to historical data. ([source](https://rxpy.readthedocs.io/en/latest/reference_subject.html))

### Testing & Quality Assurance

- [Stream Error Testing](https://awesome-repositories.com/f/testing-quality-assurance/concurrency-race-condition-testing/stream-error-testing.md) — Provides the ability to trigger specific failure scenarios in a stream to verify correct exception emission. ([source](https://rxpy.readthedocs.io/en/latest/testing.html))
- [Marble Diagram Modeling](https://awesome-repositories.com/f/testing-quality-assurance/marble-diagram-modeling.md) — Uses string-based notation to define and visualize observable sequences and expected outcomes for timing verification. ([source](https://rxpy.readthedocs.io/en/latest/testing.html))
- [Emission Verifications](https://awesome-repositories.com/f/testing-quality-assurance/test-suite-execution/code-correctness-verifications/emission-verifications.md) — Allows capturing notifications from observables to assert correct value emissions at expected virtual timestamps. ([source](https://rxpy.readthedocs.io/en/latest/testing.html))
- [Virtual Time Testing](https://awesome-repositories.com/f/testing-quality-assurance/virtual-time-testing.md) — Decouples event emission from the system clock using virtual time to verify timing without real-world delays. ([source](https://rxpy.readthedocs.io/en/latest/testing.html))

### Part of an Awesome List

- [Transducers and Streams](https://awesome-repositories.com/f/awesome-lists/devtools/transducers-and-streams.md) — Provides reactive extensions for handling asynchronous data streams.
