Calculation framework
Project description
Mona
Mona is a calculation framework that provides persistent memoization and turns the Python call stack into a task dependency graph. The graph contains three types of edges: a task input depending on outputs of other tasks, a task creating new tasks, and a task output referencing outputs of other tasks.
Installing
Install and update using Pip.
pip install -U mona
A simple example
from mona import Mona, Rule
app = Mona()
@Rule
async def total(xs):
return sum(xs)
@app.entry('fib', int)
@Rule
async def fib(n):
if n <= 2:
return 1
return total([fib(n - 1), fib(n - 2)])
$ export MONA_APP=fib:app
$ mona init
Initializing an empty repository in /home/mona/fib/.mona.
$ mona run fib 5
7c3947: fib(5): will run
0383f6: fib(3): will run
b0287d: fib(4): will run
f47d51: fib(1): will run
9fd61c: fib(2): will run
45c92d: total([fib(2), fib(1)]): will run
2c136c: total([fib(3), fib(2)]): will run
521a8b: total([fib(4), fib(3)]): will run
Finished
$ mona graph
from fib import app, fib
with app.create_session() as sess:
assert sess.eval(fib(5)) == sum(sess.eval([fib(4), fib(3)]))
Links
- Documentation: https://azag0.github.io/mona
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mona-0.2.6.tar.gz
(51.0 kB
view details)
Built Distribution
mona-0.2.6-py3-none-any.whl
(181.6 kB
view details)
File details
Details for the file mona-0.2.6.tar.gz
.
File metadata
- Download URL: mona-0.2.6.tar.gz
- Upload date:
- Size: 51.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.7 CPython/3.7.0 Darwin/18.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 719f129431d4e244610882374f330476773da979cc29b18d8318ceb9a3ad19bc |
|
MD5 | 8bb82616fef1a958ab69ce7018f92a34 |
|
BLAKE2b-256 | 552e19fe563dc5a210684bf2de23c294da775205ade3205f14501c7656ee307a |
File details
Details for the file mona-0.2.6-py3-none-any.whl
.
File metadata
- Download URL: mona-0.2.6-py3-none-any.whl
- Upload date:
- Size: 181.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.7 CPython/3.7.0 Darwin/18.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9daa7e965f5189935fb17dff881fdcac5ed2dc749fd255f714c6eef5cce8a75 |
|
MD5 | 7b75aee674da7f631f6269dcb9752885 |
|
BLAKE2b-256 | 0a02b0e3f05890b569da1629581e967dc0fc47c97f2f3efd996e38f53227e94d |