Skip to main content

Replayable App Framework

Goals

The primary goal of this package is to facilitate building data processing apps with emphasis on

  • Flexibility - the app can be reconfigured for debugging, development or different purpose
  • Intelligibility - it is easy to understand what the app will do
  • Replayability - the app behavior can be reproduced using data captured in previous runs

Usage

Look in examples/simple.py for a toy simple app that demonstrates how the package can be used.

Problems

Many opportunities for improvement can be foreseen but have not been implemented because

  • a lack of time,
  • insufficient value, or
  • excessive cost.

This section documents what they are and some ideas around how to implement them.

Shared, mutable state

If a node mutates its inputs it may affect other nodes that also received the same input. Sometimes this behavior is intentional (optimization, laziness) and sometimes it is accidental (bug). It is hard in python to enforce immutability, so it may be hard for the framework to help prevent accidental mutation. In the case of intentional mutation the framework could help by establishing patterns and providing utilities. Ideas include:

  • Declaring mutability as part of type, serving readers before any writer and refusing multiple writers.
  • Providing read-write lock primitives for which the write lock cannot be released.

Latency

Latency is a problem for a graph in which the nodes interact directly, not via the engine. If the latency for one node exceeds the update interval then the graph cannot keep up. When the engine mediates it can start the next update before the previous has completed while preserving causality. It could even buffer the data if the latency is much higher than the interval. However, concurrency increases the risk of bugs if functions have shared, mutable state.

Metadata

Release files for rappf 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rappf 0.2
File Size Uploaded
rappf-0.2.tar.gz 14.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rappf 0.2
File Interpreter ABI Platform
rappf-0.2-py3-none-any.whl Python 3 none any Details

Total release size: 21.0 kB

Release files / rappf-0.2.tar.gz

Download URL rappf-0.2.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0527a8b2429859f54759c99fc11123c176e4ffc9a2570783f49c273b34bfa1e2
BLAKE2b-256 checksum
How to use checksums
73194b0228827d71090d1e0e110390f663b99178f9aa2db23e2dbea276827596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

Release files / rappf-0.2-py3-none-any.whl

Download URL rappf-0.2-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f661fce903ffa812ef6cadcc0dd5fe7242aeda67d8adfaa1d6785b45688bab4a
BLAKE2b-256 checksum
How to use checksums
82b4b0d05d2934ca32c261e57ee89025e0ecb24fcddfbfd6ae99cbc012927979
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

0.1

1 release file

0.0.0

1 release file

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