{ "info": { "author": "Michal Charemza", "author_email": "michal@charemza.name", "bugtrack_url": null, "classifiers": [ "Framework :: AsyncIO", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# aiomemoize [![CircleCI](https://circleci.com/gh/michalc/aiomemoize.svg?style=svg)](https://circleci.com/gh/michalc/aiomemoize) [![Test Coverage](https://api.codeclimate.com/v1/badges/82f9a346683c411b08a6/test_coverage)](https://codeclimate.com/github/michalc/aiomemoize/test_coverage)\n\nMemoize asyncio Python calls. Invalidation is manual/explicit for each set of arguments, although exceptions raised are _not_ cached. This can be used for coroutines, and functions that return a promise.\n\n\n## Installation\n\n```base\npip install aiomemoize\n```\n\n\n## Usage\n\nFor a coroutine whose arguments are hashable, you can create a _memoized_ version by passing it to `memoize`. This returns a tuple of the memoized function, and a function to invalidate the cache on a per-item basis.\n\nFor example, the below\n\n```python\nimport asyncio\nfrom aiomemoize import memoize\n\nasync def main():\n memoized, invalidate = memoize(coro)\n results = await asyncio.gather(*[\n memoized('a'),\n memoized('a'),\n memoized('b'),\n ])\n print(results)\n\n invalidate('a')\n results = await asyncio.gather(*[\n memoized('a'),\n memoized('a'),\n memoized('b'),\n ])\n print(results)\n\n await memoized('a')\n\nasync def coro(value):\n print('Inside coro', value)\n await asyncio.sleep(1)\n return value\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\nloop.close()\n```\n\nwill output\n\n```\nInside coro a\nInside coro b\n['a', 'a', 'b']\nInside coro a\n['a', 'a', 'b']\n```\n\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/michalc/aiomemoize", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "aiomemoize", "package_url": "https://pypi.org/project/aiomemoize/", "platform": "", "project_url": "https://pypi.org/project/aiomemoize/", "project_urls": { "Homepage": "https://github.com/michalc/aiomemoize" }, "release_url": "https://pypi.org/project/aiomemoize/0.0.3/", "requires_dist": null, "requires_python": "~=3.5", "summary": "Memoize asyncio Python function calls", "version": "0.0.3" }, "last_serial": 5105620, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ff017404d16bf5095faccc53cba3bfd0", "sha256": "6eda03cfc411f771db0aedd66ef7cd87f8ec1f782ddb9b54d6fb09b77ebefc4e" }, "downloads": -1, "filename": "aiomemoize-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ff017404d16bf5095faccc53cba3bfd0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 3058, "upload_time": "2019-03-31T11:32:02", "url": "https://files.pythonhosted.org/packages/a6/9e/d1e79e700147a6039aadeab088090f4030cd46678e89ea042c305517f6fa/aiomemoize-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1e3741ffa917f94b8327bcaed3e4d56", "sha256": "f5f5d36fd7998869eb6cd92e3dc96afdaa7be0fc99b1f6276b7240ed7bf4a784" }, "downloads": -1, "filename": "aiomemoize-0.0.1.tar.gz", "has_sig": false, "md5_digest": "d1e3741ffa917f94b8327bcaed3e4d56", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 2006, "upload_time": "2019-03-31T11:32:04", "url": "https://files.pythonhosted.org/packages/1d/89/8a3775e7ad5e267b30b7d870e204e5fdf504467331a7c1ed837b811c266a/aiomemoize-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "34cd144363dbd51b34a0cf4fe88b0663", "sha256": "bf04dfc53b5dc6f4c70c75430af1c8e6bb9bc2a2cb9d8ff94b68304ecca76120" }, "downloads": -1, "filename": "aiomemoize-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "34cd144363dbd51b34a0cf4fe88b0663", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 3048, "upload_time": "2019-03-31T11:35:06", "url": "https://files.pythonhosted.org/packages/7f/41/79b25a4d80887bb2025f167f04fdb7e1a35059ee7bca57af607b7fc6aaf0/aiomemoize-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "407bab200aeecde3e76903a01e23630a", "sha256": "a12d61055b6b9b386fa1cb203d109d0002bfc502c230b0c3bce87b63ebad31cc" }, "downloads": -1, "filename": "aiomemoize-0.0.2.tar.gz", "has_sig": false, "md5_digest": "407bab200aeecde3e76903a01e23630a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 2001, "upload_time": "2019-03-31T11:35:07", "url": "https://files.pythonhosted.org/packages/7c/fc/3baa7b023638e7c3e4b60e7dc1dfb6a6b58a5289c43b47ca08aa9404562e/aiomemoize-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "75b5cc8a0f65a779809f74790bbd64cc", "sha256": "f43482f396765038af49b33d4a4915b24e403049fc777883ad25cb3e5ac38b5c" }, "downloads": -1, "filename": "aiomemoize-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "75b5cc8a0f65a779809f74790bbd64cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 3044, "upload_time": "2019-04-05T20:52:11", "url": "https://files.pythonhosted.org/packages/a9/f2/4de59365566e454aa880db8d2a6369349f8fa726d1d2c472a1309eb6ba70/aiomemoize-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c724b9fabfe01e7c5e66dd5e4ae3dc6", "sha256": "d938faaeb7569bdb23d22636d5a3b9c0f23e70eee31c0636f94ba892a5adab7f" }, "downloads": -1, "filename": "aiomemoize-0.0.3.tar.gz", "has_sig": false, "md5_digest": "0c724b9fabfe01e7c5e66dd5e4ae3dc6", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 1998, "upload_time": "2019-04-05T20:52:13", "url": "https://files.pythonhosted.org/packages/ba/c0/63535cf9caa105841274e5aa93f1ad630786343e63adcde05d47a258c502/aiomemoize-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "75b5cc8a0f65a779809f74790bbd64cc", "sha256": "f43482f396765038af49b33d4a4915b24e403049fc777883ad25cb3e5ac38b5c" }, "downloads": -1, "filename": "aiomemoize-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "75b5cc8a0f65a779809f74790bbd64cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 3044, "upload_time": "2019-04-05T20:52:11", "url": "https://files.pythonhosted.org/packages/a9/f2/4de59365566e454aa880db8d2a6369349f8fa726d1d2c472a1309eb6ba70/aiomemoize-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c724b9fabfe01e7c5e66dd5e4ae3dc6", "sha256": "d938faaeb7569bdb23d22636d5a3b9c0f23e70eee31c0636f94ba892a5adab7f" }, "downloads": -1, "filename": "aiomemoize-0.0.3.tar.gz", "has_sig": false, "md5_digest": "0c724b9fabfe01e7c5e66dd5e4ae3dc6", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 1998, "upload_time": "2019-04-05T20:52:13", "url": "https://files.pythonhosted.org/packages/ba/c0/63535cf9caa105841274e5aa93f1ad630786343e63adcde05d47a258c502/aiomemoize-0.0.3.tar.gz" } ] }