{ "info": { "author": "Crossbar.io Technologies GmbH", "author_email": "autobahnws@googlegroups.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Framework :: Twisted", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries" ], "description": "etcd for Twisted\n================\n\n| |Version| |Build Status| |Docs|\n\n**txaioetcd** is an *object-relational remote persistant map layer* backed by etcd.\n\nIt also provides a low-level asynchronous API for general Twisted etcd applications, bypassing\nthe object-relational layer of the library.\n\n\nInstallation\n------------\n\nThe implementation is pure Python code compatible with both **Python 2 and 3**\nand runs perfect on **PyPy**.\nOn the server-side, **etcd version 3.1 or higher** is required. To install txaioetcd\n\n.. code-block:: sh\n\n pip install txaioetcd\n\n.. note::\n\n The library currently requires **Twisted**, though the API was designed to allow adding asyncio support later (PRs are welcome!) with no breakage.\n But other than the underlying network library, there are only small pure Python dependencies.\n etcd 2 will not work. etcd 3.0 also isn't enough - at least watching keys doesn't work over the gRPC HTTP gateway yet.\n\n\nGetting Started\n---------------\n\nGet the complete example source code for the getting started below from\n`here `_.\n\nTo start with **txaioetcd** using the high-level, remote persistent map API,\ndefine at least one class for data to be persisted,\neg a `User class `_:\n\n.. code-block:: python\n\n class User(object):\n\n def marshal(self):\n \"\"\"\n Marshal the object into a generic host language object.\n \"\"\"\n\n @staticmethod\n def unmarshal(obj):\n \"\"\"\n Parse a generic host language object into a native object of this class.\n \"\"\"\n\nThen define a table for a slot to be used with key-value stores:\n\n.. code-block:: python\n\n from txaioetcd import pmap\n\n # users table schema (a table with UUID keys and CBOR values holding User objects)\n tab_users = pmap.MapUuidCbor(1, marshal=lambda user: user.marshal(), unmarshal=User.unmarshal)\n\nAbove will define a table slot (with index 1) that has UUIDs for keys, and CBOR serialized\nobjects of User class for values.\n\n.. note::\n\n The User class does not appear literally, but only the \"marshal\" and \"unmarshal\"\n parameters to the persistant map type specifies the object interface of the user class\n to the persistant map library. The application developers needs to provide implementations of\n the respective application class marshal/unmarshal interface.\n\nThe available types for keys and values of persistant maps include:\n\n* String (UTF8), eg ``MapUuidString``, ``MapStringString``, ``MapStringUuid``, ..\n* Binary, eg ``MapUuidBinary``, ``MapStringBinary``, ..\n* OID (uint64), eg ``MapUuidOid``, ``MapOidCbor``, ..\n* UUID (uint128), eg ``MapUuidCbor``, ``MapUuidUuid``, ..\n* JSON, eg ``MapUuidJson``, ``MapOidJson``, ``MapStringJson``, ..\n* CBOR, eg ``MapOidCbor``, ``MapUuidCbor``, ``MapStringCbor``, ..\n* Pickle (Python), eg ``MapStringPickle``, ..\n* Flatbuffers, eg ``MapUuidFlatbuffers``, ..\n\nFor example, the following is another valid slot definition:\n\n.. code-block:: python\n\n # users table schema (a table with OID keys and Python Pickle values holding User objects)\n tab_users = pmap.MapOidPickle(2, marshal=lambda user: user.marshal(), unmarshal=User.parse)\n\nAbove will define a table slot (with index 2) that has OIDs for keys, and Python Pickle serialized\nobjects of User class for values.\n\nConnecting\n..........\n\nFirst open a connection to etcd as a backing store:\n\n.. code-block:: python\n\n from txaioetcd import Client, Database\n\n etcd = Client(reactor, url='http://localhost:2379')\n db = Database(etcd)\n\nTo check the database connection:\n\n.. code-block:: python\n\n revision = await db.status()\n print('connected to etcd: revision', revision)\n\n\nStoring and loading objects\n...........................\n\nNow create a native Python object from the class above and store it in the table, that is remotely in etcd:\n\n.. code-block:: python\n\n user = User()\n user.name = 'foobar'\n user.oid = uuid.uuid4()\n\n # create an async writable transaction to modify etcd data\n async with db.begin(write=True) as txn:\n tab_users[txn, user.oid] = user\n\n # data is committed when transaction leaves scope .. here\n print('user stored: {}'.format(user))\n\nLoad a native Python object from the table, that is remotely from etcd:\n\n.. code-block:: python\n\n # create an async read-only transaction when only accessing data in etcd\n async with db.begin() as txn:\n user = await tab_users[txn, user.oid]\n print('user loaded: {}'.format(user))\n\n\nPutting it together\n...................\n\nTo put all the pieces together and run the code, you might use the following boilerplate\n\n.. code-block:: python\n\n import txaio\n txaio.use_twisted()\n\n from twisted.internet.task import react\n from twisted.internet.defer import ensureDeferred\n\n from txaioetcd import Client, Database\n\n async def main(reactor):\n etcd = Client(reactor, url='http://localhost:2379')\n db = Database()\n revision = await db.status()\n print('connected to etcd: revision', revision)\n\n # INSERT YOUR CODE HERE\n\n def _main():\n return react(\n lambda reactor: ensureDeferred(\n main(reactor)\n )\n )\n\n if __name__ == '__main__':\n txaio.start_logging(level='info')\n _main()\n\nInsert your code to operate on etcd in above placeholder.\n\n\n.. |Version| image:: https://img.shields.io/pypi/v/txaioetcd.svg\n :target: https://pypi.python.org/pypi/txaioetcd\n\n.. |Build Status| image:: https://travis-ci.org/crossbario/txaio-etcd.svg?branch=master\n :target: https://travis-ci.org/crossbario/txaio-etcd\n\n.. |Docs| image:: https://readthedocs.org/projects/txaio-etcd/badge/?version=latest\n :target: https://txaio-etcd.readthedocs.io/en/latest/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/crossbario/txaio-etcd", "keywords": "twisted etcd etcd3", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "txaioetcd", "package_url": "https://pypi.org/project/txaioetcd/", "platform": "Any", "project_url": "https://pypi.org/project/txaioetcd/", "project_urls": { "Homepage": "https://github.com/crossbario/txaio-etcd" }, "release_url": "https://pypi.org/project/txaioetcd/18.10.2/", "requires_dist": [ "six (>=1.10.0)", "txaio (>=2.6.1)", "twisted (>=16.6.0)", "treq (>=16.12.0)", "zlmdb (>=18.10.1)", "aiohttp (>=2.2.5); python_version >= '3.4'", "pip (>=9.0.1); extra == 'dev'", "bumpversion (>=0.5.3); extra == 'dev'", "wheel (>=0.30.0); extra == 'dev'", "watchdog (>=0.8.3); extra == 'dev'", "flake8 (>=3.5.0); extra == 'dev'", "tox (>=2.9.1); extra == 'dev'", "codecov (>=2.0.15); extra == 'dev'", "sphinx (>=1.7.1); extra == 'dev'", "twine (>=1.10.0); extra == 'dev'", "pytest (>=3.4.2); extra == 'dev'", "pytest-runner (>=2.11.1); extra == 'dev'", "humanize (>=0.5.1); extra == 'dev'", "backports.tempfile (>=1.0); extra == 'dev'", "yapf (>=0.22.0); extra == 'dev'", "pylint (>=1.9.2); extra == 'dev'", "mypy (>=0.610); (python_version >= \"3.4\" and platform_python_implementation != \"PyPy\") and extra == 'dev'" ], "requires_python": "", "summary": "Asynchronous client library for etcd3", "version": "18.10.2" }, "last_serial": 5217354, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "14ccbaed57d3203ebcadd132181699c9", "sha256": "01346f2844418008a50f803cd5178db062fac69d2f88fa3fb83464b19865999e" }, "downloads": -1, "filename": "txaioetcd-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "14ccbaed57d3203ebcadd132181699c9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30061, "upload_time": "2017-02-12T21:06:20", "url": "https://files.pythonhosted.org/packages/91/49/45c5b80c486c04879bf1171a3b1aa904eb26197159a40bcc44f889bcb19b/txaioetcd-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "601af2e71b07f09cecd4246530573808", "sha256": "bffdb75bfc0e3d7a562cd85980baa527ee09bcdda7711851952829ff56bcb95d" }, "downloads": -1, "filename": "txaioetcd-0.1.0.tar.gz", "has_sig": false, "md5_digest": "601af2e71b07f09cecd4246530573808", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26964, "upload_time": "2017-02-12T21:06:22", "url": "https://files.pythonhosted.org/packages/f2/e0/b90df183532945ee315d05b3f2bcf9279776adcae9eecd52427cf6cbdaa8/txaioetcd-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b36012dcf6afa55879c8f03ddf390859", "sha256": "3c9fe96ea4f41cb91b5c1ed80e6850630f60914bc66f6b99cd99f4b23258ac44" }, "downloads": -1, "filename": "txaioetcd-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b36012dcf6afa55879c8f03ddf390859", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31114, "upload_time": "2017-03-10T14:18:56", "url": "https://files.pythonhosted.org/packages/03/71/25ce7b053bbdea00444dc6307b0fccddd559bd38bf1f50a58d79dea07730/txaioetcd-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94c3a26682947b8f66974a3df8347010", "sha256": "7db55f2850e03f11f332acf216b1a5de2ef442555d8abafc4e5e6c2a61a00815" }, "downloads": -1, "filename": "txaioetcd-0.2.0.tar.gz", "has_sig": false, "md5_digest": "94c3a26682947b8f66974a3df8347010", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28017, "upload_time": "2017-03-10T14:18:58", "url": "https://files.pythonhosted.org/packages/c8/77/2981cf2a9a7f8be7223216ec892cffaf9dd0ef6f037d1ff809f041d64237/txaioetcd-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "630f5793598223e3f1ccb46e8c1aa9fd", "sha256": "0cfb20ae4a805cf254f95d9561db01cddfd62c1c788d6b59eff1f52394c76a8c" }, "downloads": -1, "filename": "txaioetcd-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "630f5793598223e3f1ccb46e8c1aa9fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31195, "upload_time": "2017-03-17T07:35:51", "url": "https://files.pythonhosted.org/packages/40/fc/74b073b5bf5a9697f7ec43139fcf66f08eec60f5109124a632e6aca36d73/txaioetcd-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15c071b83845df022ee3c7bbafca61c7", "sha256": "9d7ba3f25e9222fcc1094cfc2af0a84124ce694b8ca35eec6ca7fe6c84905231" }, "downloads": -1, "filename": "txaioetcd-0.2.1.tar.gz", "has_sig": false, "md5_digest": "15c071b83845df022ee3c7bbafca61c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28132, "upload_time": "2017-03-17T07:35:53", "url": "https://files.pythonhosted.org/packages/cf/ef/5ad34b40cac9da5e8bae60324d3e76a62ae6d48e29b24d4e385687eea7ce/txaioetcd-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "73ab69c84bb58364676fce4b44bdd2f7", "sha256": "1531f78fbf83a3ec6a79a1b2f700ef204e51288710f2f68538ae27cb34abff09" }, "downloads": -1, "filename": "txaioetcd-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73ab69c84bb58364676fce4b44bdd2f7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31204, "upload_time": "2017-03-17T17:33:55", "url": "https://files.pythonhosted.org/packages/e2/2f/435912b68ba74865e8642041163a2816c09edaec2c82540b6a960e8d5771/txaioetcd-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e68b81671858ded0a7ec3c65218c062f", "sha256": "4866f4ebe8e26101b8eae40b0be6c6fe03b6e49028cf5afad1dcc521c13aa183" }, "downloads": -1, "filename": "txaioetcd-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e68b81671858ded0a7ec3c65218c062f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28223, "upload_time": "2017-03-17T17:33:58", "url": "https://files.pythonhosted.org/packages/cf/0b/40a8e1c407b9ce70b2c9d12d347c48e67d0ba4f34e72936b55ba551f8052/txaioetcd-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "1ec2f129a3555565f7cca2d046c3e722", "sha256": "eec37fc080e93fd7322c80acbbd2dac7d0f30433f93702b7208b466e84b31c14" }, "downloads": -1, "filename": "txaioetcd-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ec2f129a3555565f7cca2d046c3e722", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31963, "upload_time": "2017-03-29T07:59:29", "url": "https://files.pythonhosted.org/packages/d7/6f/76bc450f169af04a972eb50ad201c964b4c8260d530fa95a4d264c82bf40/txaioetcd-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "702a89b4c1f27aa0d973f9e5651592b9", "sha256": "d8d1ddbe75eb2bf66c2c8da4ed7077e961a549fc633d7fa423c70eb9d1b38af6" }, "downloads": -1, "filename": "txaioetcd-0.2.3.tar.gz", "has_sig": false, "md5_digest": "702a89b4c1f27aa0d973f9e5651592b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28288, "upload_time": "2017-03-29T07:59:31", "url": "https://files.pythonhosted.org/packages/73/df/8c59dd1302f1b561ed77efd66f8833035ecd2da6a60982bc519d51ce6fb2/txaioetcd-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "619170c272b95a89b652c3a52cb8a49b", "sha256": "27a8d871e0031984e96b4c01c267427a755f63862cc3804dae83158880d6fe33" }, "downloads": -1, "filename": "txaioetcd-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "619170c272b95a89b652c3a52cb8a49b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31962, "upload_time": "2017-06-16T12:50:08", "url": "https://files.pythonhosted.org/packages/14/86/e99b5e618bd89d54a7a017be6fd4e07a4ae70ff09a45ee16969abc40c152/txaioetcd-0.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "675cd2c2a5af5cc7644b3850aeb7e5d3", "sha256": "dc935351a253ee22fb8beb86ea7fc4d762fcac9e85b06ca4401a7cde6935711f" }, "downloads": -1, "filename": "txaioetcd-0.2.4.tar.gz", "has_sig": false, "md5_digest": "675cd2c2a5af5cc7644b3850aeb7e5d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28303, "upload_time": "2017-06-16T12:50:10", "url": "https://files.pythonhosted.org/packages/1f/87/dafd17b7cef831c28ab45650ada9bdfc3bf8a76b1800cb28b159e78eea87/txaioetcd-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b9f9a6fb6d5cad5ca49cb9c651a66866", "sha256": "a0b68cd44024c8ef8e191aaa2c0484edb8ffc916f06452f76f4adcfa1de880c1" }, "downloads": -1, "filename": "txaioetcd-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9f9a6fb6d5cad5ca49cb9c651a66866", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39234, "upload_time": "2017-08-14T09:11:07", "url": "https://files.pythonhosted.org/packages/b7/1c/7157c88f7c51b424d129242e5625fda7e12b218a1a0d3883964418aee3da/txaioetcd-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6769b08225f7ab503debe647bfefb138", "sha256": "fcf65a0a10430670cae0062c0bfbdf93c5d6fe24e16ede3a4e70597dfd867c72" }, "downloads": -1, "filename": "txaioetcd-0.3.0.tar.gz", "has_sig": false, "md5_digest": "6769b08225f7ab503debe647bfefb138", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33296, "upload_time": "2017-08-14T09:11:09", "url": "https://files.pythonhosted.org/packages/12/6c/e7003946fdb5fc3f3edea1da02482e3ffcfb1dd40a322ca19c2021d8c02b/txaioetcd-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "05758203cb53e16cefd48b2316adacf6", "sha256": "9573165c1df5d8cfd37a1015633464421df858b5921b1576c6dcde08c04b32f7" }, "downloads": -1, "filename": "txaioetcd-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "05758203cb53e16cefd48b2316adacf6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42396, "upload_time": "2017-11-03T14:46:22", "url": "https://files.pythonhosted.org/packages/8c/64/269fa0f80cff2a4e8f56b849c13315474abd5f95546cc12ebeb43cc85803/txaioetcd-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3eadd922491ebf39cbae4bd35f935594", "sha256": "a0ee5822cabdbfb84edc3408506e3895706c7d02781bd90ba3fb9959b4d1d7c8" }, "downloads": -1, "filename": "txaioetcd-0.4.0.tar.gz", "has_sig": false, "md5_digest": "3eadd922491ebf39cbae4bd35f935594", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34448, "upload_time": "2017-11-03T14:46:24", "url": "https://files.pythonhosted.org/packages/49/c4/edffc86a89ee5735d3601d195ca0ce53076f17c19a828760fdf0c43e3e5a/txaioetcd-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "79f7bf318c7e74c615793b6f6af0d585", "sha256": "824eb0d127f05b0775601b756aff703cf9ab7ed96410bd532d064434eb8afe15" }, "downloads": -1, "filename": "txaioetcd-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "79f7bf318c7e74c615793b6f6af0d585", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36276, "upload_time": "2018-06-06T15:04:29", "url": "https://files.pythonhosted.org/packages/48/1b/091fffbd7aad063110466ea9e8950c1d43d58064a10a08472cfe7ad021c2/txaioetcd-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cea291462403402461dfe8c79b4bb64d", "sha256": "eba1d4c28dea98c0e0185189eef46bfd9a8aebd27834934e5ff6a749e1ebcc4f" }, "downloads": -1, "filename": "txaioetcd-0.4.1.tar.gz", "has_sig": false, "md5_digest": "cea291462403402461dfe8c79b4bb64d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34518, "upload_time": "2018-06-06T15:04:30", "url": "https://files.pythonhosted.org/packages/57/1b/0629d73b91b389112e3f7c41c8e25ad4333c31c00e87240792bf65188f89/txaioetcd-0.4.1.tar.gz" } ], "18.10.1": [ { "comment_text": "", "digests": { "md5": "e2485fbf45c33c35f10255b41c37680c", "sha256": "ab07d87c9a69871375c4f8730618e57e8ae7e3f52116eae13030def9d450c8b9" }, "downloads": -1, "filename": "txaioetcd-18.10.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2485fbf45c33c35f10255b41c37680c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37581, "upload_time": "2018-10-01T16:11:34", "url": "https://files.pythonhosted.org/packages/4c/09/17f89299232f0fe934e85ce513ca358adf19efc0a1b8e0cf83cae498c4a5/txaioetcd-18.10.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08a7e5f84b73dfd533a6fc4edff45bf0", "sha256": "14efb1e4885264f553089e1825a1d803d972ae08f0b36a3972c7f5337586db36" }, "downloads": -1, "filename": "txaioetcd-18.10.1.tar.gz", "has_sig": false, "md5_digest": "08a7e5f84b73dfd533a6fc4edff45bf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35406, "upload_time": "2018-10-01T16:11:36", "url": "https://files.pythonhosted.org/packages/38/fd/6f53118264d00236a2149d59671726bdc046409b90450f3d335ecc488115/txaioetcd-18.10.1.tar.gz" } ], "18.10.2": [ { "comment_text": "", "digests": { "md5": "a107e24ab86dde29e0b21ff4ebf12a76", "sha256": "ce87048205183590fc8af7681bcd312b89290f5120066feb1ec9bb8027b631d0" }, "downloads": -1, "filename": "txaioetcd-18.10.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a107e24ab86dde29e0b21ff4ebf12a76", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 47972, "upload_time": "2018-10-11T18:04:02", "url": "https://files.pythonhosted.org/packages/b3/bf/842345fc2ff02e83028214511ff9deb38b6e731c12f7325777525eb795b5/txaioetcd-18.10.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac7d78f6c4fc2c8ce7a45c17c092534b", "sha256": "1d16ba6e7ce55913baab5f763e1148ca83e7eb55aafacff8ef1ec6a2e9b83555" }, "downloads": -1, "filename": "txaioetcd-18.10.2.tar.gz", "has_sig": false, "md5_digest": "ac7d78f6c4fc2c8ce7a45c17c092534b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39275, "upload_time": "2018-10-11T18:04:04", "url": "https://files.pythonhosted.org/packages/93/a6/319da1a5fddb29aad7e43b75ffe3ae5bb5c40136a5cfbab694e3f5831756/txaioetcd-18.10.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a107e24ab86dde29e0b21ff4ebf12a76", "sha256": "ce87048205183590fc8af7681bcd312b89290f5120066feb1ec9bb8027b631d0" }, "downloads": -1, "filename": "txaioetcd-18.10.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a107e24ab86dde29e0b21ff4ebf12a76", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 47972, "upload_time": "2018-10-11T18:04:02", "url": "https://files.pythonhosted.org/packages/b3/bf/842345fc2ff02e83028214511ff9deb38b6e731c12f7325777525eb795b5/txaioetcd-18.10.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac7d78f6c4fc2c8ce7a45c17c092534b", "sha256": "1d16ba6e7ce55913baab5f763e1148ca83e7eb55aafacff8ef1ec6a2e9b83555" }, "downloads": -1, "filename": "txaioetcd-18.10.2.tar.gz", "has_sig": false, "md5_digest": "ac7d78f6c4fc2c8ce7a45c17c092534b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39275, "upload_time": "2018-10-11T18:04:04", "url": "https://files.pythonhosted.org/packages/93/a6/319da1a5fddb29aad7e43b75ffe3ae5bb5c40136a5cfbab694e3f5831756/txaioetcd-18.10.2.tar.gz" } ] }