{ "info": { "author": "Yui Kitsu", "author_email": "kitsuyui+github@kitsuyui.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License" ], "description": "# cachepot\n\n[![image](https://img.shields.io/pypi/v/cachepot.svg)](https://pypi.org/project/cachepot/)\n[![image](https://img.shields.io/pypi/l/cachepot.svg)](https://pypi.org/project/cachepot/)\n[![CircleCI](https://circleci.com/gh/kitsuyui/cachepot.svg?style=svg)](https://circleci.com/gh/kitsuyui/cachepot)\n\nYet another Python cache library. This has Python 3 typing hints.\n\n## Installation\n\n```\n$ pip install cachepot\n```\n\n## Usage\n\n```python\n>>> from cachepot.store import CacheStore\n>>> from cachepot.backend.filesystem import FileSystemCacheBackend\n>>> from cachepot.serializer.pickle import PickleSerializer\n>>> store = CacheStore(\n... namespace='testing',\n... key_serializer=PickleSerializer(),\n... value_serializer=PickleSerializer(),\n... backend=FileSystemCacheBackend('/tmp'),\n... default_expire_seconds=3600,\n... )\n>>> store.put({'some': 'key'}, {'some': 'value'})\n>>> store.get({'some': 'key'})\n{'some': 'value'}\n>>> store.put({'some': 'short expiring key'}, {'some': 'value'}, expire_seconds=10)\n```\n\n### Proxy method\n\n```python\nresult = store.proxy(some_func)(some_args)\n```\n\nis the equivalent of\n\n```python\nresult = store.get(some_arg)\nif result is None:\n result = some_func(some_args)\n store.set(result)\n```\n\nIn short, this works as proxy. This helps to make codes straight forward.\nproxy method can be passed two arguments `cache_key` and `expire_seconds`.\n\n## Core idea\n\nSerializers convert python objects into bytes.\nBackends save/load bytes.\nSo serializers and backends are independent.\nCacheStore is the facade of them.\n\n- Python3 typing supports\n- namespaces\n- Proxy method\n\n## Features\n\n### Serializers\n\n- str ... [cachepot.serializer.str.StringSerializer](https://github.com/kitsuyui/cachepot/blob/master/cachepot/serializer/str.py)\n- [pickle](https://docs.python.org/3/library/pickle.html) ... [cachepot.serializer.pickle.PickleSerializer](https://github.com/kitsuyui/cachepot/blob/master/cachepot/serializer/pickle.py)\n- [JSON](https://tools.ietf.org/html/rfc8259) ... [cachepot.serializer.json.JSONSerializer](https://github.com/kitsuyui/cachepot/blob/master/cachepot/serializer/json.py)\n\nAnd more serializers you can define.\n\n### Backends\n\n- Save to files ... [cachepot.backend.filesystem.FileSystemCacheBackend](https://github.com/kitsuyui/cachepot/blob/master/cachepot/backend/filesystem.py)\n- Save to SQLite3 DB records ... [cachepot.backend.sqlite.SQLiteCacheBackend](https://github.com/kitsuyui/cachepot/blob/master/cachepot/backend/sqlite.py)\n- Save to Redis DB ... [cachepot.backend.redis.RedisCacheBackend](https://github.com/kitsuyui/cachepot/blob/master/cachepot/backend/redis.py)\n\nOf course you can define own backend.\n\n## Development\n\nYou can install requirements with pipenv\n\n```shell\n$ pipenv install --dev\n```\n\n### Test\n\n```shell\n$ flake8\n$ mypy .\n$ python3 -m unittest discover\n```\n\n# LICENSE\n\nThe 3-Clause BSD License. See also LICENSE file.\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/kitsuyui/cachepot", "keywords": "", "license": "BSD-3-Clause", "maintainer": "", "maintainer_email": "", "name": "cachepot", "package_url": "https://pypi.org/project/cachepot/", "platform": "", "project_url": "https://pypi.org/project/cachepot/", "project_urls": { "Homepage": "https://github.com/kitsuyui/cachepot" }, "release_url": "https://pypi.org/project/cachepot/0.1.4/", "requires_dist": [ "typing-extensions", "redis (>=3.0) ; extra == 'redis'" ], "requires_python": "", "summary": "Yet another Python cache library", "version": "0.1.4" }, "last_serial": 4918065, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "59eda236ae925bd267945c67e064ec34", "sha256": "ff289263f0e59253a6d7c1f641c2239ccb84cebf6b0609372f2ceae3cad8c7f3" }, "downloads": -1, "filename": "cachepot-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "59eda236ae925bd267945c67e064ec34", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7698, "upload_time": "2019-03-02T16:58:19", "url": "https://files.pythonhosted.org/packages/08/36/6ecb22cc690743b21e2ceec626e6d26d3e3d0f67e7a6febdfca8396dde42/cachepot-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4734a98c31532894112132d3723a7d50", "sha256": "88f12304cc744e86e9ad06ca41a71caa35ae873f96c7d2f878a873d55a8f435d" }, "downloads": -1, "filename": "cachepot-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4734a98c31532894112132d3723a7d50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4648, "upload_time": "2019-03-02T16:58:21", "url": "https://files.pythonhosted.org/packages/b5/f6/df082efc7042e74a42f96c4fb0e9a88ba3c12ca78690b6a434909394b9cb/cachepot-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a52a737380292cd69370de5bae108b29", "sha256": "aa9814fd29a2f5b597deebdd4193c4feb248ab2656daaba27f11f15f7082a756" }, "downloads": -1, "filename": "cachepot-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a52a737380292cd69370de5bae108b29", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6945, "upload_time": "2019-03-02T17:07:25", "url": "https://files.pythonhosted.org/packages/bc/76/4e3813029dcd7f20b67b651c2478cf5ee9718bc518c84cea7cb43ef4a961/cachepot-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d17564f37f69e81ac113c631eacc4be", "sha256": "8ff669a6ebb3a1556fcf1dcec13e3f8bb7574bcee29ce3e0e8c6bc8dafd05a74" }, "downloads": -1, "filename": "cachepot-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5d17564f37f69e81ac113c631eacc4be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3882, "upload_time": "2019-03-02T17:07:26", "url": "https://files.pythonhosted.org/packages/4d/91/7cf0c5fbdf86712b5fbef7dfdfc9d8be24b40ecfdf3607a9a81abec71de0/cachepot-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0829a548b6491e0ad61738b2043d3d10", "sha256": "fd7f0ef4743e3ad26d4199373a12c521cbf2208beb976733f709c54b765088ad" }, "downloads": -1, "filename": "cachepot-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0829a548b6491e0ad61738b2043d3d10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7860, "upload_time": "2019-03-04T13:39:37", "url": "https://files.pythonhosted.org/packages/de/71/b0c8fc03f98fa0314d94ac745bc4243ada19e52d9783fe167a9e16c712a2/cachepot-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c52f2a00a8c722b773e287e6702d75f9", "sha256": "0a6775dfd8079ced9f3d3a8082fdeeee67fb1a18930dd870e3f7e14f90881d23" }, "downloads": -1, "filename": "cachepot-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c52f2a00a8c722b773e287e6702d75f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4374, "upload_time": "2019-03-04T13:39:39", "url": "https://files.pythonhosted.org/packages/ec/2d/2ab18eee8ce471b48390ae1f0611786e909f587fa042d11c0db76dbd52a0/cachepot-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5d90f70aec4788d82cbcfe37d89b407c", "sha256": "a75abf26e8030eb8b08892a9093cb452a0f35ec3cd8e6909ccffcfdd6fdbcc7e" }, "downloads": -1, "filename": "cachepot-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5d90f70aec4788d82cbcfe37d89b407c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8416, "upload_time": "2019-03-09T05:12:29", "url": "https://files.pythonhosted.org/packages/60/dc/48ea45d836d90cd4b34e756927781e34a45f29aa17c7c9f09880dd1641c0/cachepot-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf619fd8fc91e4390a6d4ee302fbe90f", "sha256": "a8cd4b7836197d28f410437460aa74da81c45767e6016e822256a3a4e791f38c" }, "downloads": -1, "filename": "cachepot-0.1.3.tar.gz", "has_sig": false, "md5_digest": "bf619fd8fc91e4390a6d4ee302fbe90f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4610, "upload_time": "2019-03-09T05:12:31", "url": "https://files.pythonhosted.org/packages/73/fc/b7e9f34c70857a1518aea83047ac44092707e8d59261e3fa9d492516c102/cachepot-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f228bac0419d18affc155db430c8344b", "sha256": "4e70b27e05a006176fdbfbf0fddbc62240593835d683d474fa168bf217e770ec" }, "downloads": -1, "filename": "cachepot-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f228bac0419d18affc155db430c8344b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8576, "upload_time": "2019-03-09T05:36:03", "url": "https://files.pythonhosted.org/packages/24/30/c6837a48afada886f7108498ebe7b9614f2668aa8a44221c1a7011371518/cachepot-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fc9f0fc936ca63d6f92b1015b9da54d", "sha256": "46feb8e9d2ef01cac021234a00eeae252f837020852a2f47797aab25605744ae" }, "downloads": -1, "filename": "cachepot-0.1.4.tar.gz", "has_sig": false, "md5_digest": "6fc9f0fc936ca63d6f92b1015b9da54d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4833, "upload_time": "2019-03-09T05:36:05", "url": "https://files.pythonhosted.org/packages/0f/4a/611c3549c95232d523591b873d42a0932c16533bfb9a9e9c3a90cd267104/cachepot-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f228bac0419d18affc155db430c8344b", "sha256": "4e70b27e05a006176fdbfbf0fddbc62240593835d683d474fa168bf217e770ec" }, "downloads": -1, "filename": "cachepot-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f228bac0419d18affc155db430c8344b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8576, "upload_time": "2019-03-09T05:36:03", "url": "https://files.pythonhosted.org/packages/24/30/c6837a48afada886f7108498ebe7b9614f2668aa8a44221c1a7011371518/cachepot-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fc9f0fc936ca63d6f92b1015b9da54d", "sha256": "46feb8e9d2ef01cac021234a00eeae252f837020852a2f47797aab25605744ae" }, "downloads": -1, "filename": "cachepot-0.1.4.tar.gz", "has_sig": false, "md5_digest": "6fc9f0fc936ca63d6f92b1015b9da54d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4833, "upload_time": "2019-03-09T05:36:05", "url": "https://files.pythonhosted.org/packages/0f/4a/611c3549c95232d523591b873d42a0932c16533bfb9a9e9c3a90cd267104/cachepot-0.1.4.tar.gz" } ] }