{ "info": { "author": "Acapella Soft", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n--------\n\n\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 Python-\u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f Key-Value \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 [AcapellaDB](http://acapella.ru/acapelladb_doc/data-model/).\n\n\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n---------------------\n\n\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e:\n\n```python\n>>> session = Session(host = 'localhost', port = 12000)\n```\n\n\u0411\u0430\u0437\u043e\u0432\u044b\u0435 GET/SET \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430 Entry:\n\n```python\n>>> # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Entry, \u043a\u043b\u044e\u0447\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0441\u0442\u0440\u043e\u043a\n>>> entry = session.entry([\"foo\", \"bar\"])\n\n>>> # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\n>>> await entry.set(\"value 1\")\n\n>>> # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438\n>>> await entry.cas(\"value 2\")\n\n>>> # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 Entry\n>>> entry = await session.get_entry([\"foo\", \"bar\"])\n>>> print(f'value = \"{entry.value}\", version = {entry.version}')\nvalue = \"value 2\", version = 2\n```\n\n\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u043b\u044e\u0447\u0430: `partition` \u0438 `clustering`. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443. \u0412\u0441\u0435 clustering-\u043a\u043b\u044e\u0447\u0438 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e partition-\u043a\u043b\u044e\u0447\u0430 \u043b\u0435\u0436\u0430\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u0447\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0438 batch-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e partition'\u0430:\n\n```python\n>>> # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430\n>>> await session.entry(partition = [\"users\"], clustering = [\"first\"]).set({\n>>> 'age': 25\n>>> })\n>>> await session.entry(partition = [\"users\"], clustering = [\"second\"]).set({\n>>> 'age': 32\n>>> })\n>>> await session.entry(partition = [\"users\"], clustering = [\"third\"]).set({\n>>> 'age': 21\n>>> })\n\n>>> # \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\n>>> data = await session.range(partition = [\"users\"])\n>>> for e in data:\n>>> print(f'{e.key[0]}: {e.value.age}')\nfirst: 25\nsecond: 32\nthird: 21\n\n>>> # \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 2-\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\n>>> data = await session.range(partition = [\"users\"], limit = 2)\n>>> for e in data:\n>>> print(f'{e.key[0]}: {e.value.age}')\nfirst: 25\nsecond: 32\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e:\n\n```python\n>>> # \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e 10 \u0448\u0442\u0443\u043a\n>>> for i in range(10):\n>>> # \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0431\u0430\u0442\u0447, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441\n>>> batch = BatchManual()\n>>> for i in range(10):\n>>> key = str(uuid1())\n>>> e = session.entry(partition = [\"queue-1\"], clustering = [key])\n>>> await e.set(value = i, batch = batch)\n>>> # \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0442\u0447\u0430\n>>> await batch.send()\n\n>>> # \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e 10 \u0448\u0442\u0443\u043a\n>>> first = []\n>>> for i in rannge(10):\n>>> data = await session.range(partition = [\"queue-1\"], first = first, limit = 10)\n>>> for e in data:\n>>> print(f'{e.key}: {e.value}')\n>>> first = data[len(data) - 1].key\n>>> \n['be2a5d92-8cc0-11e7-8bb2-40e230b5623b']: 0\n['be2a6058-8cc0-11e7-8bb2-40e230b5623b']: 1\n['be2a61f2-8cc0-11e7-8bb2-40e230b5623b']: 2\n...\n['be2ae000-8cc0-11e7-8bb2-40e230b5623b']: 99\n\n>>> # \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0432\u0441\u0435\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0437\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0440\u0435\u043c\u0435\u043d\u0438\n>>> data = await session.range(\n>>> partition = [\"queue-1\"],\n>>> first = ['be2a61f2-8cc0-11e7-8bb2-40e230b5623b'],\n>>> last = ['be2a7fac-8cc0-11e7-8bb2-40e230b5623b']\n>>> )\n```\n\n\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c\u0438 (DT, Distributed Tree) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u044b Tree \u0438 Cursor:\n\n```python\n>>> # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430\n>>> tree = session.tree([\"test\", \"tree\"])\n\n>>> # \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430\n>>> await tree.cursor([\"a\"]).set(\"1\")\n>>> await tree.cursor([\"b\"]).set(\"2\")\n>>> await tree.cursor([\"c\"]).set(\"3\")\n>>> await tree.cursor([\"d\"]).set(\"4\")\n>>> await tree.cursor([\"e\"]).set(\"5\")\n\n>>> # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435\n>>> next = await tree.cursor([\"b\"]).next() # next.key = [\"c\"]\n\n>>> # \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435\n>>> prev = await tree.cursor([\"b\"]).next() # next.key = [\"a\"]\n\n>>> # \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\n>>> data = await tree.range(first = [\"a\"], last = [\"d\"], limit = 2)\n>>> print([e.key for e in data])\n[['b'], ['c']]\n```\n\n\u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445: \n\n1) \u043a\u0430\u043a context manager\n\n```python\n>>> async with session.transaction() as tx:\n>>> # \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\n>>> entry = await tx.get_entry([\"foo\", \"bar\"])\n>>> await entry.cas(\"value 3\")\n```\n\n2) \u0432 \"\u0440\u0443\u0447\u043d\u043e\u043c\" \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044f\u0432\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c commit/rollback \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439\n\n```python\n>>> # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\n>>> tx = await session.transaction_manual()\n>>> try:\n>>> # \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\n>>> entry = await tx.get_entry([\"foo\", \"bar\"])\n>>> await entry.cas(\"value 3\")\n>>> # commit, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\n>>> await tx.commit()\n>>> except Exception:\n>>> # rollback, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0430\n>>> await tx.rollback()\n```\n\n\u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 [\u0442\u0435\u0441\u0442\u0430\u0445](tests).\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/AcapellaSoft/AcapellaDBClient-py", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "acapelladb", "package_url": "https://pypi.org/project/acapelladb/", "platform": "", "project_url": "https://pypi.org/project/acapelladb/", "project_urls": { "Homepage": "https://github.com/AcapellaSoft/AcapellaDBClient-py" }, "release_url": "https://pypi.org/project/acapelladb/0.3.7/", "requires_dist": [ "aiohttp (==3.4.4)", "requests (==2.20.0)" ], "requires_python": "", "summary": "Python client for AcapellaDB database", "version": "0.3.7" }, "last_serial": 4806318, "releases": { "0.3.3": [ { "comment_text": "", "digests": { "md5": "fa1c15377010d2030b87e195bbb3460b", "sha256": "4f86ddd8477d7097312475d668f991e3a94d4c175a96ac12b812ed0401f70c14" }, "downloads": -1, "filename": "acapelladb-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fa1c15377010d2030b87e195bbb3460b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20020, "upload_time": "2018-11-13T11:20:18", "url": "https://files.pythonhosted.org/packages/e4/fb/3cb7d10ed32dc3092c1f1deb33c49080e35b20e0d8438403302661e65991/acapelladb-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7348cd67a25fdbb7c8d637db059cd389", "sha256": "73cfdef0c01e324d72854544d1688761a73630fbe8bf437d2da84b70e84530bf" }, "downloads": -1, "filename": "acapelladb-0.3.3.tar.gz", "has_sig": false, "md5_digest": "7348cd67a25fdbb7c8d637db059cd389", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14312, "upload_time": "2018-11-13T11:20:20", "url": "https://files.pythonhosted.org/packages/26/96/e898849c9599197e825d1432a815efc15f45469594bac4671fe73cb61475/acapelladb-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "92d0a9997876abc68567e4c92c64f681", "sha256": "9b4c1d8771842ec3a70a9493a6f72e6552055a078ac5f56194b307e91ef59af5" }, "downloads": -1, "filename": "acapelladb-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "92d0a9997876abc68567e4c92c64f681", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20032, "upload_time": "2018-11-13T11:25:51", "url": "https://files.pythonhosted.org/packages/f8/3d/5333c169962719280bed468c09fa85efe2a906fd400eaa10810a4153eaf5/acapelladb-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce41a8f04f7ae92c58df1dfe45f58603", "sha256": "70e3de6edbd08669162f0b5d37ef43143cf8ae3605e948d64716d64d6ce692dc" }, "downloads": -1, "filename": "acapelladb-0.3.4.tar.gz", "has_sig": false, "md5_digest": "ce41a8f04f7ae92c58df1dfe45f58603", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14333, "upload_time": "2018-11-13T11:25:53", "url": "https://files.pythonhosted.org/packages/19/e6/5f494f01703417f98bf5d94ff76a8f4199360b5b41902429366c05248b44/acapelladb-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "daba343750fbbac711b084b271e818b3", "sha256": "f9a27e69e413a2f873b434e334703115f2b6c6bf5aee10fb04b5ac16f485db30" }, "downloads": -1, "filename": "acapelladb-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "daba343750fbbac711b084b271e818b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19906, "upload_time": "2018-12-21T13:14:03", "url": "https://files.pythonhosted.org/packages/35/b6/41528139df71c7d268e1a2f8027a70349d52f0658d7f1b670bcf39656315/acapelladb-0.3.5-py3-none-any.whl" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "57e296ac09b8144b54323649d7122104", "sha256": "b42d625865974c0503e5644654bfcaa732543ebbdf59ef285f340c50de410673" }, "downloads": -1, "filename": "acapelladb-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "57e296ac09b8144b54323649d7122104", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20094, "upload_time": "2019-02-07T16:12:39", "url": "https://files.pythonhosted.org/packages/9c/05/6231c453b81051987140296a1cb7e89e3ab037702e44a8491246e1190ce4/acapelladb-0.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b93e4614e1f2985892dbd78453755e5c", "sha256": "13648490bf15cf08ff83534898a4eb3fb03bf4ba8a33577d8243831c796e2d05" }, "downloads": -1, "filename": "acapelladb-0.3.6.tar.gz", "has_sig": false, "md5_digest": "b93e4614e1f2985892dbd78453755e5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14353, "upload_time": "2019-02-07T16:12:40", "url": "https://files.pythonhosted.org/packages/b6/6e/6857a397be0f18abe5270fc9afff1326b7c612d52bb8f71d67fcf5d3cecc/acapelladb-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "1e50eddbc3289b0e9b6fa79f072d4258", "sha256": "a8890cdc6290294162838bca1457dabdbab1bfc2c972487442d032ea9bfb3466" }, "downloads": -1, "filename": "acapelladb-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "1e50eddbc3289b0e9b6fa79f072d4258", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19837, "upload_time": "2019-02-11T14:31:31", "url": "https://files.pythonhosted.org/packages/24/79/71da121d5e821baec4ed7e540fe9a5a8b53e475ad77880159933bd07febc/acapelladb-0.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b53eea7459828f917d256545c730b9ea", "sha256": "d175600066a0dc9b36dcad689bc24e66ac5a924de61c025c1d77f708cbc014da" }, "downloads": -1, "filename": "acapelladb-0.3.7.tar.gz", "has_sig": false, "md5_digest": "b53eea7459828f917d256545c730b9ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14264, "upload_time": "2019-02-11T14:31:34", "url": "https://files.pythonhosted.org/packages/a3/92/8ee2b0b27b650bece5d2521e3c007cfadd6f95d12d75f413948c294f1607/acapelladb-0.3.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1e50eddbc3289b0e9b6fa79f072d4258", "sha256": "a8890cdc6290294162838bca1457dabdbab1bfc2c972487442d032ea9bfb3466" }, "downloads": -1, "filename": "acapelladb-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "1e50eddbc3289b0e9b6fa79f072d4258", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19837, "upload_time": "2019-02-11T14:31:31", "url": "https://files.pythonhosted.org/packages/24/79/71da121d5e821baec4ed7e540fe9a5a8b53e475ad77880159933bd07febc/acapelladb-0.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b53eea7459828f917d256545c730b9ea", "sha256": "d175600066a0dc9b36dcad689bc24e66ac5a924de61c025c1d77f708cbc014da" }, "downloads": -1, "filename": "acapelladb-0.3.7.tar.gz", "has_sig": false, "md5_digest": "b53eea7459828f917d256545c730b9ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14264, "upload_time": "2019-02-11T14:31:34", "url": "https://files.pythonhosted.org/packages/a3/92/8ee2b0b27b650bece5d2521e3c007cfadd6f95d12d75f413948c294f1607/acapelladb-0.3.7.tar.gz" } ] }