Skip to main content

A big flappy cache that never forgets.

Project description

Mamo

Your friendly neighborhood persistent memoization library.

Getting started

pip install mamo

Design

Code changes drive data changes. Especially, with big data, it is highly likely that different calls return different data.

Mamo fingerprints data by hashing it when unavoidable and by fingerprinting the computational graph (as far as known to Mamo) otherwise.

As future extension, Mamo will support different fingerprints for the same value, but in common use-cases detecting code changes is more impactful.

It assumes functions are pure, which allows for ignoring stochasticity. Otherwise anything using a random number generator would constantly be marked as stale.

More details

Mamo has concepts: value identity and fingerprints. Fingerprints are used to determine whether a stored computed value is stale: If an argument value to the function that computes a value is different (different fingerprints) from the one that was used originally, we mark the value as stale.

Value identity is about when two values have the same identity. (If every value was unique, there would never be stale values.) This is only an important concept for computed values: the result of a function with the same arguments (argument identity) has the same value identity as the stored result for a previous call.

Assumptions

The biggest assumption for the current design is:

Values are unlikely to ever be the same.

This means that we can use hashing for checking equality checks, and that different computational graphs imply unequal values.

Thus, Mamo does not implement perfect memoization at the moment but only a heuristic that does not try to actually match arguments fully.

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

mamo-0.1.1.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mamo-0.1.1-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

Details for the file mamo-0.1.1.tar.gz.

File metadata

  • Download URL: mamo-0.1.1.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for mamo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d22950bd356ed32d0138a7b9a2f79d21b3513bc57895c819b19eac5298c85ce8
MD5 5b369e573ceeec92bb5398c340791112
BLAKE2b-256 56fd9a11c6f965d66760a9f2ddb178f2397b0c83333b56bf5575daf6a181d743

See more details on using hashes here.

File details

Details for the file mamo-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mamo-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 32.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for mamo-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 62ae2f7a6728a672d98d02f95540fad4e3be8a69f80afc3d9750d8b10bfd218d
MD5 9be0b480acfcd8b449ed449c5f65f920
BLAKE2b-256 ab0fc21d6b742ae0d78030ffe14f92442b4a1c60c25cbc7a94d531944a31c053

See more details on using hashes here.

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