{ "info": { "author": "Nikolay Novik", "author_email": "nickolainovik@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": "aiogibson\n=========\n\n.. image:: https://travis-ci.org/jettify/aiogibson.svg?branch=master\n :target: https://travis-ci.org/jettify/aiogibson\n :alt: |Build status|\n.. image:: https://coveralls.io/repos/jettify/aiogibson/badge.png?branch=master\n :target: https://coveralls.io/r/jettify/aiogibson?branch=master\n :alt: |Coverage|\n.. image:: https://pypip.in/v/aiogibson/badge.svg\n :target: https://pypi.python.org/pypi/aiogibson/\n :alt: |Latest PyPI version|\n.. image:: https://pypip.in/d/aiogibson/badge.svg\n :target: https://pypi.python.org/pypi/aiogibson/\n :alt: |Number of PyPI downloads|\n.. image:: https://pypip.in/license/aiogibson/badge.svg\n :target: https://pypi.python.org/pypi/aiogibson/\n :alt: |License|\n\n\n**aiogibson** is a library for accessing a gibson_ cache database\nfrom the asyncio_ (PEP-3156/tulip) framework.\n\nGibson is a high efficiency, tree based memory cache server.\nIt uses a special trie_ structure allowing the\nuser to perform operations on multiple key sets using a prefix\nexpression achieving the same performance grades in the worst case,\neven better on an average case then regular cache implementations\nbased on hash tables.\n\n\nCode heavily reused from awesome aioredis_ library. ``GibsonPool``,\n``GibsonConnection``, almost direct copy of ``RedisPool`` and\n``RedisConnection``, so I highly recommend to checkout aioredis_.\n\n\nDocumentation\n-------------\nhttp://aiogibson.readthedocs.org/\n\n\nInstallation\n------------\n\nMake sure that you have gibson_ server compiled and running. The easiest way\nto install *aiogibson* is by using the package on PyPi::\n\n pip install aiogibson\n\n\nExample\n-------\n\n.. code:: python\n\n import asyncio\n from aiogibson import create_gibson\n\n loop = asyncio.get_event_loop()\n\n\n @asyncio.coroutine\n def go():\n gibson = yield from create_gibson('/tmp/gibson.sock', loop=loop)\n # set value\n yield from gibson.set(b'foo', b'bar', 7)\n yield from gibson.set(b'numfoo', 100, 7)\n\n # get value\n result = yield from gibson.get(b'foo')\n print(result)\n\n # set ttl to the value\n yield from gibson.ttl(b'foo', 10)\n\n # increment given key\n yield from gibson.inc(b'numfoo')\n\n # decrement given key\n yield from gibson.dec(b'numfoo')\n\n # lock key from modification\n yield from gibson.lock(b'numfoo')\n\n # unlock given key\n yield from gibson.unlock(b'numfoo')\n\n # fetch keys with given prefix\n yield from gibson.keys(b'foo')\n\n # delete value\n yield from gibson.delete(b'foo')\n\n\n loop.run_until_complete(go())\n\nUnderlying data structure trie_ allows us to perform operations on multiple\nkey sets using a prefix expression:\n\n\nMulti Commands\n--------------\n\n.. code:: python\n\n import asyncio\n from aiogibson import create_gibson\n\n loop = asyncio.get_event_loop()\n\n\n @asyncio.coroutine\n def go():\n gibson = yield from create_gibson('/tmp/gibson.sock', loop=loop)\n\n # set the value for keys verifying the given prefix\n yield from gibson.mset(b'fo', b'bar', 7)\n yield from gibson.mset(b'numfo', 100, 7)\n\n # get the values for keys with given prefix\n result = yield from gibson.mget(b'fo')\n\n # set the TTL for keys verifying the given prefix\n yield from gibson.mttl(b'fo', 10)\n\n # increment by one keys verifying the given prefix.\n yield from gibson.minc(b'numfo')\n\n # decrement by one keys verifying the given prefix\n yield from gibson.mdec(b'numfoo')\n\n # lock keys with prefix from modification\n yield from gibson.mlock(b'fo')\n\n # unlock keys with given prefix\n yield from gibson.munlock(b'fo')\n\n # delete keys verifying the given prefix.\n yield from gibson.mdelete(b'fo')\n\n # return list of keys with given prefix ``fo``\n yield from gibson.keys(b'fo')\n\n # count items for a given prefi\n info = yield from gibson.stats()\n\n\n loop.run_until_complete(go())\n\n**aiogibson** has connection pooling support using context-manager:\n\n\nConnection Pool Example\n-----------------------\n\n.. code:: python\n\n import asyncio\n from aiogibson import create_pool\n\n loop = asyncio.get_event_loop()\n\n @asyncio.coroutine\n def go():\n pool = yield from create_pool('/tmp/gibson.sock', minsize=5, maxsize=10,\n loop=loop)\n # using context manager\n with (yield from pool) as gibson:\n yield from gibson.set('foo', 'bar')\n value = yield from gibson.get('foo')\n print(value)\n\n # NOTE: experimental feature\n # or without context manager\n yield from pool.set('foo', 'bar')\n resp = yield from pool.get('foo')\n yield from pool.delete('foo')\n\n pool.clear()\n\n loop.run_until_complete(go())\n\n\nAlso you can have simple low-level interface to *gibson* server:\n\n\nLow Level Commands\n------------------\n\n.. code:: python\n\n import asyncio\n from aiogibson import create_gibson\n\n loop = asyncio.get_event_loop()\n\n\n @asyncio.coroutine\n def go():\n gibson = yield from create_connection('/tmp/gibson.sock', loop=loop)\n\n # set value\n yield from gibson.execute(b'set', b'foo', b'bar', 7)\n\n # get value\n result = yield from gibson.execute(b'get', b'foo')\n print(result)\n # delete value\n yield from gibson.execute(b'del', b'foo')\n\n\n loop.run_until_complete(go())\n\n\nRequirements\n------------\n\n* Python_ 3.3+\n* asyncio_ or Python_ 3.4+\n\n\nLicense\n-------\n\nThe *aiogibson* is offered under MIT license.\n\n.. _Python: https://www.python.org\n.. _asyncio: http://docs.python.org/3.4/library/asyncio.html\n.. _gibson: http://gibson-db.in/\n.. _aioredis: https://github.com/aio-libs/aioredis\n.. _trie: http://en.wikipedia.org/wiki/Trie\n\nChanges\n-------\n\n0.1.3 (2015-02-10)\n^^^^^^^^^^^^^^^^^^\n* Documentation published on http://aiogibson.readthedocs.org/:\n\n* Added wait closed finalizer;\n\n* Improved test coverage to 99%;\n\n* Fixed bug with canceled future;\n\n* Added limit argument to mget command;\n\n0.1.2 (2014-10-15)\n^^^^^^^^^^^^^^^^^^\n* Changed Reader interface to be similar to hiredis;\n\n* Most methods from high level interface now return Future;\n\n* Connection pool, works as drop in replacement for high level connection;\n\n* Added more docstrings;\n\n\n0.1.1 (2014-09-06)\n^^^^^^^^^^^^^^^^^^\n* Improved protocol parser;\n\n* Added type checking in high-level commands;\n\n* Added check for None arguments in connection execute command;\n\n\n0.1.0 (2014-08-17)\n^^^^^^^^^^^^^^^^^^\n* Initial release;", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jettify/aiogibson", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "aiogibson", "package_url": "https://pypi.org/project/aiogibson/", "platform": "POSIX", "project_url": "https://pypi.org/project/aiogibson/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/jettify/aiogibson" }, "release_url": "https://pypi.org/project/aiogibson/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "asyncio (PEP 3156) Gibson cache support", "version": "0.1.3" }, "last_serial": 1418402, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "058fbdef6ea72315f9b5b6ed994de591", "sha256": "5ca7d1f1fa7cd4d9c4d7fac21530567341341f4ae380505dfbe7059c118d0864" }, "downloads": -1, "filename": "aiogibson-0.1.0.tar.gz", "has_sig": false, "md5_digest": "058fbdef6ea72315f9b5b6ed994de591", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10227, "upload_time": "2014-08-17T21:08:03", "url": "https://files.pythonhosted.org/packages/8f/5e/ec3b8c9d617842f041b5a02c0c75e1df39e8fd5f05937f50bccb7ebaf9c6/aiogibson-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "60d74a4986f8ab28c0bda2c9a8dc93e1", "sha256": "978b1f40156d2b13951b413cb80828084ddadf1c084861981df3db548b913f44" }, "downloads": -1, "filename": "aiogibson-0.1.1.tar.gz", "has_sig": false, "md5_digest": "60d74a4986f8ab28c0bda2c9a8dc93e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12542, "upload_time": "2014-09-06T20:31:46", "url": "https://files.pythonhosted.org/packages/a9/85/98e33e7c10cb21dd348c01c80b138e9a48fc4aa40a91a7c2a2ff3dabc150/aiogibson-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "eb906f7f08395d706fb80bf91d362e0d", "sha256": "1e22fdd0a2a930bdd593b81fd2ce5bb74bf7ffde1d2ffb405d3012a6f805136a" }, "downloads": -1, "filename": "aiogibson-0.1.2.tar.gz", "has_sig": false, "md5_digest": "eb906f7f08395d706fb80bf91d362e0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13437, "upload_time": "2014-10-15T18:41:40", "url": "https://files.pythonhosted.org/packages/f2/69/82aaa1bd7cce20f1ed4db413d5aabfdbb6a4c7a785f9707ae79db8e10d6d/aiogibson-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9eefd7219013b29a7fc0e0bd9feea031", "sha256": "f70c83272ee2193ea7815a875a2391aac50f152ee5ed572a7edcaa66560534a6" }, "downloads": -1, "filename": "aiogibson-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9eefd7219013b29a7fc0e0bd9feea031", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14205, "upload_time": "2015-02-10T21:27:00", "url": "https://files.pythonhosted.org/packages/c3/b3/e6eb82732d0051d4b104bcb9987323db399677bd52ddb85663da41593081/aiogibson-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9eefd7219013b29a7fc0e0bd9feea031", "sha256": "f70c83272ee2193ea7815a875a2391aac50f152ee5ed572a7edcaa66560534a6" }, "downloads": -1, "filename": "aiogibson-0.1.3.tar.gz", "has_sig": false, "md5_digest": "9eefd7219013b29a7fc0e0bd9feea031", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14205, "upload_time": "2015-02-10T21:27:00", "url": "https://files.pythonhosted.org/packages/c3/b3/e6eb82732d0051d4b104bcb9987323db399677bd52ddb85663da41593081/aiogibson-0.1.3.tar.gz" } ] }