{ "info": { "author": "Jan Hermann", "author_email": "dev@janhermann.cz", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering", "Topic :: Utilities" ], "description": "# Mona\n\n[![build](https://img.shields.io/travis/azag0/mona/master.svg)](https://travis-ci.org/azag0/mona)\n[![coverage](https://img.shields.io/codecov/c/github/azag0/mona.svg)](https://codecov.io/gh/azag0/mona)\n![python](https://img.shields.io/pypi/pyversions/mona.svg)\n[![pypi](https://img.shields.io/pypi/v/mona.svg)](https://pypi.org/project/mona/)\n[![commits since](https://img.shields.io/github/commits-since/azag0/mona/latest.svg)](https://github.com/azag0/mona/releases)\n[![last commit](https://img.shields.io/github/last-commit/azag0/mona.svg)](https://github.com/azag0/mona/commits/master)\n[![license](https://img.shields.io/github/license/azag0/mona.svg)](https://github.com/azag0/mona/blob/master/LICENSE)\n[![code style](https://img.shields.io/badge/code%20style-black-202020.svg)](https://github.com/ambv/black)\n\nMona is a calculation framework that provides [persistent](https://en.wikipedia.org/wiki/Persistence_(computer_science)) [memoization](https://en.wikipedia.org/wiki/Memoization) and turns the Python call stack into a task [dependency graph](https://en.wikipedia.org/wiki/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.\n\n## Installing\n\nInstall and update using [Pip](https://pip.pypa.io/en/stable/quickstart/).\n\n```\npip install -U mona\n```\n\n## A simple example\n\n```python\nfrom mona import Mona, Rule\n\napp = Mona()\n\n@Rule\nasync def total(xs):\n return sum(xs)\n\n@app.entry('fib', int)\n@Rule\nasync def fib(n):\n if n <= 2:\n return 1\n return total([fib(n - 1), fib(n - 2)])\n```\n\n```\n$ export MONA_APP=fib:app\n$ mona init\nInitializing an empty repository in /home/mona/fib/.mona.\n$ mona run fib 5\n7c3947: fib(5): will run\n0383f6: fib(3): will run\nb0287d: fib(4): will run\nf47d51: fib(1): will run\n9fd61c: fib(2): will run\n45c92d: total([fib(2), fib(1)]): will run\n2c136c: total([fib(3), fib(2)]): will run\n521a8b: total([fib(4), fib(3)]): will run\nFinished\n$ mona graph\n```\n\n\n\n```python\nfrom fib import app, fib\n\nwith app.create_session() as sess:\n assert sess.eval(fib(5)) == sum(sess.eval([fib(4), fib(3)]))\n```\n\n## Links\n\n- Documentation: https://azag0.github.io/mona\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/azag0/mona", "keywords": "", "license": "MPL-2.0", "maintainer": "Jan Hermann", "maintainer_email": "dev@janhermann.cz", "name": "mona", "package_url": "https://pypi.org/project/mona/", "platform": "", "project_url": "https://pypi.org/project/mona/", "project_urls": { "Documentation": "https://azag0.github.io/mona", "Homepage": "https://github.com/azag0/mona", "Repository": "https://github.com/azag0/mona" }, "release_url": "https://pypi.org/project/mona/0.2.6/", "requires_dist": [ "typing_extensions (>=3.6,<4.0)", "graphviz (>=0.10.0,<0.11.0)", "toml (>=0.9.6,<0.10.0)", "click (>=7.0,<8.0)", "numpy (>=1.15,<2.0); extra == \"sci\"", "textx (>=1.5,<1.6); extra == \"sci\"", "pytest (>=3.8,<4.0); extra == \"test\"", "coverage (>=4.5,<5.0); extra == \"cov\"", "sphinx (>=1.8,<2.0); extra == \"doc\"", "pytest-mock (>=1.10,<2.0); extra == \"test\"", "sphinxcontrib-asyncio (>=0.2.0,<0.3.0); extra == \"doc\"", "jinja2 (>=2.10,<3.0); extra == \"sci\"" ], "requires_python": ">=3.7,<4.0", "summary": "Calculation framework", "version": "0.2.6" }, "last_serial": 4708159, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "56fc763178322231667927f4e6335c3a", "sha256": "35ad228249b28d0bbcd89baf6f56f378ca8cd8c41e3596698e60b5125dbdb407" }, "downloads": -1, "filename": "mona-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "56fc763178322231667927f4e6335c3a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 163278, "upload_time": "2018-10-28T23:39:58", "url": "https://files.pythonhosted.org/packages/3a/12/a59e77e1999a922651105318e3dc32188b1912b49ea5ed209a6a458a21f8/mona-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba40a439e76a78f371d3188e20149440", "sha256": "ad170743b1ca95dba154ccd2c9f17c105bf15067b9c49a88c4b8241013220e39" }, "downloads": -1, "filename": "mona-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ba40a439e76a78f371d3188e20149440", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 45484, "upload_time": "2018-10-28T23:40:00", "url": "https://files.pythonhosted.org/packages/3f/c5/ea2cd7ed87b0fc43cd7e7dc0021dfcb7897d7cd98081da7f4d0d2aee2875/mona-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "94cc3b21d92df9b6ebc4467b3f89c1c0", "sha256": "8ae2d9955af5a755f8fdf7195d05ca928bd60603cadaf0c52f2614bbc7dca74e" }, "downloads": -1, "filename": "mona-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "94cc3b21d92df9b6ebc4467b3f89c1c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 163268, "upload_time": "2018-10-29T08:55:47", "url": "https://files.pythonhosted.org/packages/7f/ac/e2a424f18e7a2e26baf3b8c10630e5140d9d4a0c52099d251a0de40442b7/mona-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c14a9dfecc4a88858bce879d6daa89af", "sha256": "e7c2a8412db19199844dcbbc9aff69b32ac2f23ef32fa570dbb5513fb8a90a37" }, "downloads": -1, "filename": "mona-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c14a9dfecc4a88858bce879d6daa89af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 45464, "upload_time": "2018-10-29T08:55:49", "url": "https://files.pythonhosted.org/packages/cb/da/aca70efda72d470da366ac9ebdf8dfc52443ae6648f27c60c824ba7dda51/mona-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ad97c02d58cfdded59941e6d415a0d5a", "sha256": "011541e8fb0bb9afdcfbe3c4f95e9e6854d05b465aafd12b56091f6958a7d9eb" }, "downloads": -1, "filename": "mona-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ad97c02d58cfdded59941e6d415a0d5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 164125, "upload_time": "2018-11-04T15:47:03", "url": "https://files.pythonhosted.org/packages/64/52/bc31290e11093e14efd4e2b5ade0db20d4fe26088efed6e0823581284bf0/mona-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfc7073c4287063d3471b427cb23e7bf", "sha256": "29ff9a281a70f12dbcd0df88442169b6e06a9e8d8044644766d792013b0169b4" }, "downloads": -1, "filename": "mona-0.2.0.tar.gz", "has_sig": false, "md5_digest": "dfc7073c4287063d3471b427cb23e7bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 45869, "upload_time": "2018-11-04T15:47:05", "url": "https://files.pythonhosted.org/packages/e0/53/dc1571030f2e443fc3e3bec92101bc4fa74341b0e562bc3e797ca2a80cc3/mona-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d61bd30e008336db100d1821876c82c5", "sha256": "e63c0e999c3ff382ff2c42828b48315225327a98d2f2ee597abe66377de3b7d4" }, "downloads": -1, "filename": "mona-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d61bd30e008336db100d1821876c82c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 163915, "upload_time": "2018-11-05T11:56:23", "url": "https://files.pythonhosted.org/packages/9a/00/b9c94ead502074cfaba06cbfc446b77d63dbc8dd35dfbf6d13e8569e75f0/mona-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6296b44c0d080c15dc23e2adc8b5d7b", "sha256": "d7fed34b3cce84dbd932622cb949c60c4f2c87eca252c5c775ff9eb8518395e9" }, "downloads": -1, "filename": "mona-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a6296b44c0d080c15dc23e2adc8b5d7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 46079, "upload_time": "2018-11-05T11:56:25", "url": "https://files.pythonhosted.org/packages/ca/6a/22f45f4d31057dff9bc09aef836697d8ea6a8abad55ea4fd822219957907/mona-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "527f08745dc7adf783cc8bf68f1cbffd", "sha256": "b7b90c75e054cb1158a293c68c2049d2b28f3422a3d6598a1ee1ceab73f43de3" }, "downloads": -1, "filename": "mona-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "527f08745dc7adf783cc8bf68f1cbffd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 164018, "upload_time": "2018-11-05T12:30:35", "url": "https://files.pythonhosted.org/packages/4f/59/bb5becea26a3d1a1ddadabaf29946eee535e4e425501215b5639b9460641/mona-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "341822e7ed03bf21448552d8736ab146", "sha256": "a943bd0960bee0dfe2a8e28adcae6d98aa0d90048343e857b12b42c5449ce146" }, "downloads": -1, "filename": "mona-0.2.2.tar.gz", "has_sig": false, "md5_digest": "341822e7ed03bf21448552d8736ab146", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 46116, "upload_time": "2018-11-05T12:30:37", "url": "https://files.pythonhosted.org/packages/2e/25/2032a899fc83e38e2bea2f11ed1932b30a8ec4a2441cc9af56f62a908971/mona-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "416099454eaba507942d2d4e39eccdc8", "sha256": "bc9db67cce5c5c2a618a630e84bdee1fe64c483e843b6a071fd5dfa1ca1a9f3c" }, "downloads": -1, "filename": "mona-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "416099454eaba507942d2d4e39eccdc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 179379, "upload_time": "2018-11-11T23:07:24", "url": "https://files.pythonhosted.org/packages/2f/fb/0909572f478b8c6fb780c66646c76a121bb3527566dcb1802c4228c87ae2/mona-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "828f72b72f40d4e3b779e6fc2aa68124", "sha256": "51744a47ace49bdacb3c73a73c0c47b62ac62da9a9366022c5049c46945cb3c7" }, "downloads": -1, "filename": "mona-0.2.3.tar.gz", "has_sig": false, "md5_digest": "828f72b72f40d4e3b779e6fc2aa68124", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 50279, "upload_time": "2018-11-11T23:07:27", "url": "https://files.pythonhosted.org/packages/7b/c4/affcc9d88df37a442d5fca6c519ab5e8677fcf4312c02a397218a2e4520c/mona-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "fb7eab9746ab22c746419f3446836fd0", "sha256": "c0d5a714d75c5615d554ad160aa76745a67c42ec82fad03b097e58cf1be16908" }, "downloads": -1, "filename": "mona-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fb7eab9746ab22c746419f3446836fd0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 179289, "upload_time": "2018-11-11T23:36:35", "url": "https://files.pythonhosted.org/packages/4e/5a/98d628d646b0d095782c07d2c6ae214ac6e4fa1e196476f3b542551ecad9/mona-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47754eb7be081e5de74625ce5cce128e", "sha256": "3a824edd3f7c9cb8e069a109644d1a4675b02f75e4a794492de3d8bac6f116d9" }, "downloads": -1, "filename": "mona-0.2.4.tar.gz", "has_sig": false, "md5_digest": "47754eb7be081e5de74625ce5cce128e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 50186, "upload_time": "2018-11-11T23:36:37", "url": "https://files.pythonhosted.org/packages/13/a8/9d51eed506e6217669e8ab1928abd05325762c9c22e3ea25fd3bbcaf6a51/mona-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "9024634caf74d9be0ce10f96ea2cf74e", "sha256": "600455510993e3ba43d6760773c685d1e16e2c32003c73d9982e7b2eb808639a" }, "downloads": -1, "filename": "mona-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9024634caf74d9be0ce10f96ea2cf74e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 179482, "upload_time": "2018-11-29T12:07:01", "url": "https://files.pythonhosted.org/packages/0a/99/abe62cae9d208af65c5dc265577bcdfc41c0ceb3b02f4741cdc8d508a034/mona-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a36eb3684fb1cd4e90ea6594c5de038", "sha256": "e8bf94556a98ba2c96ae6067f8fa6dac015613771e9d51501661db9dd6ee4262" }, "downloads": -1, "filename": "mona-0.2.5.tar.gz", "has_sig": false, "md5_digest": "7a36eb3684fb1cd4e90ea6594c5de038", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 50312, "upload_time": "2018-11-29T12:07:03", "url": "https://files.pythonhosted.org/packages/93/10/b339f1ea9a9c1ac7a4ba5a5f33bd9b40d53e22268c46ef4c6a0324dadcec/mona-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "7b75aee674da7f631f6269dcb9752885", "sha256": "d9daa7e965f5189935fb17dff881fdcac5ed2dc749fd255f714c6eef5cce8a75" }, "downloads": -1, "filename": "mona-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7b75aee674da7f631f6269dcb9752885", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 181612, "upload_time": "2018-11-30T12:28:59", "url": "https://files.pythonhosted.org/packages/0a/02/b0e3f05890b569da1629581e967dc0fc47c97f2f3efd996e38f53227e94d/mona-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb82616fef1a958ab69ce7018f92a34", "sha256": "719f129431d4e244610882374f330476773da979cc29b18d8318ceb9a3ad19bc" }, "downloads": -1, "filename": "mona-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8bb82616fef1a958ab69ce7018f92a34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 51026, "upload_time": "2018-11-30T12:29:01", "url": "https://files.pythonhosted.org/packages/55/2e/19fe563dc5a210684bf2de23c294da775205ade3205f14501c7656ee307a/mona-0.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7b75aee674da7f631f6269dcb9752885", "sha256": "d9daa7e965f5189935fb17dff881fdcac5ed2dc749fd255f714c6eef5cce8a75" }, "downloads": -1, "filename": "mona-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7b75aee674da7f631f6269dcb9752885", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 181612, "upload_time": "2018-11-30T12:28:59", "url": "https://files.pythonhosted.org/packages/0a/02/b0e3f05890b569da1629581e967dc0fc47c97f2f3efd996e38f53227e94d/mona-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb82616fef1a958ab69ce7018f92a34", "sha256": "719f129431d4e244610882374f330476773da979cc29b18d8318ceb9a3ad19bc" }, "downloads": -1, "filename": "mona-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8bb82616fef1a958ab69ce7018f92a34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 51026, "upload_time": "2018-11-30T12:29:01", "url": "https://files.pythonhosted.org/packages/55/2e/19fe563dc5a210684bf2de23c294da775205ade3205f14501c7656ee307a/mona-0.2.6.tar.gz" } ] }