Skip to main content

Replayable App Framework

Project description

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.

Project details


Download files

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

Source Distribution

rappf-0.2.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

rappf-0.2-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file rappf-0.2.tar.gz.

File metadata

  • Download URL: rappf-0.2.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for rappf-0.2.tar.gz
Algorithm Hash digest
SHA256 0527a8b2429859f54759c99fc11123c176e4ffc9a2570783f49c273b34bfa1e2
MD5 b13792d56be0721875feb922107e946a
BLAKE2b-256 73194b0228827d71090d1e0e110390f663b99178f9aa2db23e2dbea276827596

See more details on using hashes here.

File details

Details for the file rappf-0.2-py3-none-any.whl.

File metadata

  • Download URL: rappf-0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for rappf-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f661fce903ffa812ef6cadcc0dd5fe7242aeda67d8adfaa1d6785b45688bab4a
MD5 5b50d00193908953a2acfbccd193b5e5
BLAKE2b-256 82b4b0d05d2934ca32c261e57ee89025e0ecb24fcddfbfd6ae99cbc012927979

See more details on using hashes here.

Supported by

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