{ "info": { "author": "Mozilla Services", "author_email": "storage@mozilla.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP" ], "description": "Kinto python client\r\n###################\r\n\r\n.. image:: https://img.shields.io/travis/Kinto/kinto.py.svg\r\n :target: https://travis-ci.org/Kinto/kinto.py\r\n\r\n.. image:: https://img.shields.io/pypi/v/kinto-client.svg\r\n :target: https://pypi.python.org/pypi/kinto-client\r\n\r\n.. image:: https://coveralls.io/repos/Kinto/kinto.py/badge.svg?branch=master\r\n :target: https://coveralls.io/r/Kinto/kinto.py\r\n\r\n.. note::\r\n\r\n **kinto-client have been renamed kinto-http.**\r\n\r\n We encourage you to switch to the new `kinto-http `_ project to keep getting updates.\r\n\r\n\r\nKinto is a service that allows to store and synchronize arbitrary data,\r\nattached to a user account. Its primary interface is HTTP.\r\n\r\n*kinto-client* is a Python library that eases the interactions with\r\na *Kinto* server instance. `A project with related goals is\r\nalso available for JavaScript `_.\r\n\r\n\r\nInstallation\r\n============\r\n\r\nUse pip::\r\n\r\n $ pip install kinto-client\r\n\r\n\r\nUsage\r\n=====\r\n\r\n.. note::\r\n\r\n Operations are always performed directly on the server, and no\r\n synchronisation features are implemented yet.\r\n\r\n- The first version of this API doesn't cache any access nor provide any\r\n refresh mechanism. If you want to be sure you have the latest data available,\r\n issue another call.\r\n\r\nHere is an overview of what the API provides:\r\n\r\n.. code-block:: python\r\n\r\n from kinto_client import Client\r\n\r\n client = Client(server_url=\"http://localhost:8888/v1\",\r\n auth=('alexis', 'p4ssw0rd'))\r\n\r\n records = client.get_records(bucket='default', collection='todos')\r\n for i, record in enumerate(records['data']):\r\n record['title'] = 'Todo #%d' %i\r\n\r\n for record in records:\r\n client.update_record(record)\r\n\r\nCreating a client\r\n-----------------\r\n\r\nThe passed `auth` parameter is a `requests `_\r\nauthentication policy, allowing authenticating using whatever scheme fits you\r\nbest.\r\n\r\nBy default, Kinto supports\r\n`Firefox Accounts `_ and\r\nBasic authentication policies.\r\n\r\n.. code-block:: python\r\n\r\n from kinto_client import Client\r\n credentials = ('alexis', 'p4ssw0rd')\r\n\r\n client = Client(server_url='http://localhost:8888/v1',\r\n auth=credentials)\r\n\r\nIt is also possible to pass the bucket and the collection to the client\r\nat creation time, so that this value will be used by default.\r\n\r\n.. code-block:: python\r\n\r\n client = Client(bucket=\"payments\", collection=\"receipts\", auth=auth)\r\n\r\n\r\nGetting server information\r\n--------------------------\r\n\r\nYou can use the ``server_info`` method to get the server information::\r\n\r\n.. code-block:: python\r\n\r\n from kinto_client import Client\r\n\r\n client = Client(server_url='http://localhost:8888/v1')\r\n info = client.server_info()\r\n assert 'schema' in info['capabilities'], \"Server doesn't support schema validation.\"\r\n\r\n\r\nHandling buckets\r\n----------------\r\n\r\nAll operations are rooted in a bucket. It makes little sense for\r\none application to handle multiple buckets at once (but it is possible).\r\nIf no specific bucket name is provided, the \"default\" bucket is used.\r\n\r\n.. code-block:: python\r\n\r\n from kinto_client import Client\r\n credentials = ('alexis', 'p4ssw0rd')\r\n\r\n client = Client(server_url='http://localhost:8888/v1',\r\n auth=credentials)\r\n client.create_bucket('payments')\r\n client.get_bucket('payments')\r\n\r\n # It is also possible to manipulate bucket permissions (see later)\r\n client.update_bucket('payments', permissions={})\r\n\r\n # Or delete a bucket and everything under.\r\n client.delete_bucket('payment')\r\n\r\n # Or even every writable buckets.\r\n client.delete_buckets()\r\n\r\n\r\nCollections\r\n-----------\r\n\r\nA collection is where records are stored.\r\n\r\n.. code-block:: python\r\n\r\n client.create_collection('receipts', bucket='payments')\r\n\r\n # Or get an existing one.\r\n client.get_collection('receipts', bucket='payments')\r\n\r\n # To delete an existing collection.\r\n client.delete_collection('receipts', bucket='payments')\r\n\r\n # Or every collections in a bucket.\r\n client.delete_collections(bucket='payments')\r\n\r\nRecords\r\n-------\r\n\r\nRecords can be retrieved from and saved to collections.\r\n\r\nA record is a dict with the \"permissions\" and \"data\" keys.\r\n\r\n.. code-block:: python\r\n\r\n # You can pass a python dictionary to create the record\r\n # bucket='default' can be omitted since it's the default value\r\n\r\n client.create_record(data={'id': 1234, status: 'done', title: 'Todo #1'},\r\n collection='todos', bucket='default')\r\n\r\n # Retrieve all records.\r\n record = client.get_records(collection='todos', bucket='default')\r\n\r\n # Retrieve a specific record and update it.\r\n record = client.get_record('89881454-e4e9-4ef0-99a9-404d95900352',\r\n collection='todos', bucket='default')\r\n client.update_record(record, collection='todos', bucket='default')\r\n\r\n # Update multiple records at once.\r\n client.update_records(records, collection='todos')\r\n\r\n # It is also possible to delete a record.\r\n client.delete_record(id='89881454-e4e9-4ef0-99a9-404d95900352',\r\n collection='todos')\r\n\r\n # Or every records of a collection.\r\n client.delete_records(collection='todos')\r\n\r\nPermissions\r\n-----------\r\n\r\n By default, authors will get read and write access to the manipulated objects.\r\n It is possible to change this behavior by passing a dict to the `permissions`\r\n parameter.\r\n\r\n .. code-block:: python\r\n\r\n client.create_record(\r\n data={'foo': 'bar'},\r\n permissions={'read': ['group:groupid']},\r\n collection='todos')\r\n\r\n.. note::\r\n\r\n Every creation or modification operation on a distant object can be given\r\n a `permissions` parameter.\r\n\r\nBuckets, collections and records have permissions which can be edited.\r\nFor instance to give access to \"leplatrem\" to a specific record, you would do:\r\n\r\n.. code-block:: python\r\n\r\n record = client.get_record(1234, collection='todos', bucket='alexis')\r\n record['permissions']['write'].append('leplatrem')\r\n client.update_record(record)\r\n\r\n # During creation, it is possible to pass the permissions dict.\r\n client.create_record(data={'foo': 'bar'}, permissions={})\r\n\r\nGet or create\r\n-------------\r\n\r\nIn some cases, you might want to create a bucket, collection or record only if\r\nit doesn't exist already. To do so, you can pass the ``if_not_exists=True``\r\nto the ``create_*`` methods::\r\n\r\n client.create_bucket('bucket', if_not_exists=True)\r\n\r\nOverwriting existing objects\r\n----------------------------\r\n\r\nMost of the methods take a ``safe`` argument, which defaults to ``True``. If set\r\nto ``True`` and a ``if_match`` field is present in the passed ``data``, then a\r\ncheck will be added to the requests to ensure the record wasn't modified on\r\nthe server side in the meantime.\r\n\r\nBatching operations\r\n-------------------\r\n\r\nRather than issuing a request for each and every operation, it is possible to\r\nbatch the requests. The client will then issue as little requests as possible.\r\n\r\nCurrently, batching operations only supports write operations, so it is not\r\npossible to do the retrieval of information inside a batch.\r\n\r\nIt is possible to do batch requests using a Python context manager (``with``):\r\n\r\n.. code-block:: python\r\n\r\n with client.batch() as batch:\r\n for idx in range(0,100):\r\n batch.update_record(data={'id': idx})\r\n\r\nA batch object shares the same methods as another client.\r\n\r\nRetry on error\r\n--------------\r\n\r\nWhen the server is throttled (under heavy load or maintenance) it can\r\nreturn error responses.\r\n\r\nThe client can hence retry to send the same request until it succeeds.\r\nTo enable this, specify the number of retries on the client:\r\n\r\n.. code-block:: python\r\n\r\n client = Client(server_url='http://localhost:8888/v1',\r\n auth=credentials,\r\n retry=10)\r\n\r\nThe Kinto protocol lets the server `define the duration in seconds between retries\r\n`_.\r\nIt is possible (but not recommended) to force this value in the clients:\r\n\r\n.. code-block:: python\r\n\r\n client = Client(server_url='http://localhost:8888/v1',\r\n auth=credentials,\r\n retry=10,\r\n retry_after=5)\r\n\r\n\r\nGenerating endpoint paths\r\n-------------------------\r\n\r\nYou may want to generate some endpoint paths, you can use the\r\nget_endpoint utility to do so:\r\n\r\n.. code-block:: python\r\n\r\n client = Client(server_url='http://localhost:8888/v1',\r\n auth=('token', 'your-token'),\r\n bucket=\"payments\",\r\n collection=\"receipts\")\r\n print(client.get_endpoint(\"record\",\r\n id=\"c6894b2c-1856-11e6-9415-3c970ede22b0\"))\r\n\r\n # '/buckets/payments/collections/receipts/records/c6894b2c-1856-11e6-9415-3c970ede22b0'\r\n\r\n\r\nCommand-line scripts\r\n--------------------\r\n\r\nIn order to have common arguments and options for scripts, some utilities are provided\r\nto ease configuration and initialization of client from command-line arguments.\r\n\r\n.. code-block:: python\r\n\r\n import argparse\r\n import logging\r\n\r\n from kinto_client import cli_utils\r\n\r\n logger = logging.getLogger(__name__)\r\n\r\n if __name__ == \"__main__\":\r\n parser = argparse.ArgumentParser(description=\"Download records\")\r\n cli_utils.set_parser_server_options(parser)\r\n\r\n args = parser.parse_args()\r\n\r\n cli_utils.setup_logger(logger, args)\r\n\r\n logger.debug(\"Instantiate Kinto client.\")\r\n client = cli_utils.create_client_from_args(args)\r\n\r\n logger.info(\"Fetch records.\")\r\n records = client.get_records()\r\n logger.warn(\"%s records.\" % len(records))\r\n\r\nThe script now accepts basic options:\r\n\r\n::\r\n\r\n $ python example.py --help\r\n\r\n usage: example.py [-h] [-s SERVER] [-a AUTH] [-b BUCKET] [-c COLLECTION] [-v]\r\n [-q] [-D]\r\n\r\n Download records\r\n\r\n optional arguments:\r\n -h, --help show this help message and exit\r\n -s SERVER, --server SERVER\r\n The location of the remote server (with prefix)\r\n -a AUTH, --auth AUTH BasicAuth token:my-secret\r\n -b BUCKET, --bucket BUCKET\r\n Bucket name.\r\n -c COLLECTION, --collection COLLECTION\r\n Collection name.\r\n -v, --verbose Show all messages.\r\n -q, --quiet Show only critical errors.\r\n -D, --debug Show all messages, including debug messages.\r\n\r\n\r\nRun tests\r\n=========\r\n\r\nIn one terminal, run a Kinto server:\r\n\r\n::\r\n\r\n $ make runkinto\r\n\r\nIn another, run the tests against it:\r\n\r\n::\r\n\r\n $ make tests", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Kinto/kinto.py/", "keywords": "web services", "license": "Apache License (2.0)", "maintainer": "", "maintainer_email": "", "name": "kinto-client", "package_url": "https://pypi.org/project/kinto-client/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/kinto-client/", "project_urls": { "Homepage": "https://github.com/Kinto/kinto.py/" }, "release_url": "https://pypi.org/project/kinto-client/5.0.0/", "requires_dist": [ "PyOpenSSL", "ndg-httpsclient", "pyasn1", "requests (>=2.8.1)", "six", "unidecode" ], "requires_python": "", "summary": "Kinto client", "version": "5.0.0" }, "last_serial": 4266261, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "4f072d14b4e54aa0e180508bd1031e64", "sha256": "8470f00bbfa60b0c10a0fa82e310cc219874fe7dfc5256bb409a60b39b6be1f3" }, "downloads": -1, "filename": "kinto_client-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "4f072d14b4e54aa0e180508bd1031e64", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15899, "upload_time": "2015-09-03T11:36:43", "url": "https://files.pythonhosted.org/packages/1e/df/3aca3990fda88be2a2eb2c8d63d0ef749be1be3af0e28e34bb300db3347f/kinto_client-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc6444239a65f1b7f7c1649e1cb22682", "sha256": "29519c56c0db03246691628b9f120d7e654183931582bfc5e2941d6ae53a2382" }, "downloads": -1, "filename": "kinto-client-0.1.1.tar.gz", "has_sig": false, "md5_digest": "dc6444239a65f1b7f7c1649e1cb22682", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11766, "upload_time": "2015-09-03T11:36:39", "url": "https://files.pythonhosted.org/packages/fa/5e/cdc3d011da3473ce91c37ab800b4333b3e150dcd5decefae9ece14aec58e/kinto-client-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6716e0e592ab3a5d1d47ec4446772134", "sha256": "10feaa0034ce0469a8b93032037de62fe402ed2bf75ec35c0f130aa67754c6a9" }, "downloads": -1, "filename": "kinto_client-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6716e0e592ab3a5d1d47ec4446772134", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17687, "upload_time": "2015-10-28T11:11:18", "url": "https://files.pythonhosted.org/packages/e1/7e/3026b26807ba46ca0d98a6393b39491344b6818035d55566f532c73ea272/kinto_client-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9df618d3edca0c18e48f320ab33f3af2", "sha256": "8c86c13785fe2616e9a7130bb513b3961785b545bc6f95c868505fe5c076f108" }, "downloads": -1, "filename": "kinto-client-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9df618d3edca0c18e48f320ab33f3af2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13014, "upload_time": "2015-10-28T11:11:25", "url": "https://files.pythonhosted.org/packages/11/65/cb3d152057746bd9945b0c83189ee86b74bc2f5e8353098a2fec5359b06c/kinto-client-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9de9f612311ef46ad719a92a2d98425d", "sha256": "071d6b33a2383dbb1104aa6c50de7de5fa4264b59e8be36a20f4d5a6789ced1f" }, "downloads": -1, "filename": "kinto_client-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9de9f612311ef46ad719a92a2d98425d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17269, "upload_time": "2015-11-09T14:07:45", "url": "https://files.pythonhosted.org/packages/3e/5a/c33213b1b00da8f9178b5675ccebbbcfe8ddd2ca2641217bd8070d8294cb/kinto_client-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dead3de9dc364adf9f7beb4eb77acdca", "sha256": "ee0587abf1a2aa31aaa5912c91699b8262b4f391069b3709de5279ec8fa640d5" }, "downloads": -1, "filename": "kinto-client-1.0.0.tar.gz", "has_sig": false, "md5_digest": "dead3de9dc364adf9f7beb4eb77acdca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12156, "upload_time": "2015-11-09T14:07:50", "url": "https://files.pythonhosted.org/packages/b0/e1/9712076a9fab323326ed3819f3ee074fca57bb028a0a5962bf55ccf274da/kinto-client-1.0.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "15d56a357f6758902add66b0fed9c642", "sha256": "819aaf1b170d1966f50a89006fa0b19237381d615b0af5a08100dbf9aa33924e" }, "downloads": -1, "filename": "kinto_client-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15d56a357f6758902add66b0fed9c642", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19800, "upload_time": "2015-11-19T15:19:31", "url": "https://files.pythonhosted.org/packages/97/fb/eb4e79ac69f5bdcccc8168eef8981a1295862211fba19bb19a71ba73546a/kinto_client-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4597ce523b4be357e69cd6ea2da5077e", "sha256": "7d5a527b1137922ee9b251c905cfafdb6d9a2347f4c482cca9ef9b8a18b8ad79" }, "downloads": -1, "filename": "kinto-client-2.0.0.tar.gz", "has_sig": false, "md5_digest": "4597ce523b4be357e69cd6ea2da5077e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14459, "upload_time": "2015-11-19T15:20:01", "url": "https://files.pythonhosted.org/packages/7c/fb/12d671654dc2171729db47149c2b8919631f64a11da24c526166d837be70/kinto-client-2.0.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "e2af24ffc74ff1f00efd6cf4edcff343", "sha256": "e504df55a15ec4cc9b7340db7abb7734c9f4ff9fa229a1025125132b9bde7c8f" }, "downloads": -1, "filename": "kinto_client-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2af24ffc74ff1f00efd6cf4edcff343", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27928, "upload_time": "2016-02-10T18:56:57", "url": "https://files.pythonhosted.org/packages/b7/a2/d8e9926f80c38d9bd4c927e5dbc3e1cc0e1504d726af6d2520bd6e74786b/kinto_client-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7992cb7e44f633bd120a57999254c233", "sha256": "02b02f935352a96d351275ef1aef23ff5af6423f083508ea49c6edb1ac93e9ad" }, "downloads": -1, "filename": "kinto-client-3.0.0.tar.gz", "has_sig": false, "md5_digest": "7992cb7e44f633bd120a57999254c233", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21047, "upload_time": "2016-02-10T18:57:05", "url": "https://files.pythonhosted.org/packages/60/dd/3818d8befef5dcedf24c0d32ffcac82e8ec42d87a8b6c01672617de1c47e/kinto-client-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "df2feeb3e8bdebf7284254371612f183", "sha256": "263c71fd17565896f846d29dd9548462b9d29bc8414a8fa81cdaafcfbe96c046" }, "downloads": -1, "filename": "kinto-client-3.1.0.zip", "has_sig": false, "md5_digest": "df2feeb3e8bdebf7284254371612f183", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37790, "upload_time": "2016-02-16T16:53:34", "url": "https://files.pythonhosted.org/packages/4a/26/644511710dacea8e36faa8eec6b42c921aaeec6da14444c93d95c4a702fd/kinto-client-3.1.0.zip" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "83d05c0be2cd4575f7e2db77196f2781", "sha256": "50baa1c29da0fc6955a0948eaec2e3f4723fd31a0c611a91914603de7ac1ae8f" }, "downloads": -1, "filename": "kinto_client-4.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "83d05c0be2cd4575f7e2db77196f2781", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31259, "upload_time": "2016-03-08T13:41:06", "url": "https://files.pythonhosted.org/packages/c3/ff/1920353f1b3976ab3603439599e93db1b7e72f199b2f29112275ee064743/kinto_client-4.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d702b6786dbcfea4e3c2847c2f67f86b", "sha256": "608dde54d03d6e63bcaaf87fa76d81c6e25888dd6ebc265c1b1053b3949dd241" }, "downloads": -1, "filename": "kinto-client-4.0.0.tar.gz", "has_sig": false, "md5_digest": "d702b6786dbcfea4e3c2847c2f67f86b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26508, "upload_time": "2016-03-08T13:41:19", "url": "https://files.pythonhosted.org/packages/6b/64/9a0ee2afc939f10e618110017390a485d79065b225a2ab6602bff2785a0d/kinto-client-4.0.0.tar.gz" } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "9585ef91d0bb6943cab54a1adc37fa5d", "sha256": "90aa1cabba753a9f16df5cc891732b613562ac353887cb6ec43bb5faee0c6e96" }, "downloads": -1, "filename": "kinto_client-4.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9585ef91d0bb6943cab54a1adc37fa5d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31518, "upload_time": "2016-04-27T08:26:35", "url": "https://files.pythonhosted.org/packages/56/51/3167cab0fed77ac4b018e15b9a986a56f0f264dcaccfb72231498a872411/kinto_client-4.1.0-py2.py3-none-any.whl" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "616706062addbae52a23b7937bd36644", "sha256": "83bfbe68f4acb3809f501c22c7811c1825aafabab215569183f219fc4155b35d" }, "downloads": -1, "filename": "kinto_client-5.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "616706062addbae52a23b7937bd36644", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32578, "upload_time": "2016-05-13T08:29:28", "url": "https://files.pythonhosted.org/packages/a0/12/b347afc88767075e22efdc510c7874bfdc95ea4eaa17505e7a1737d3eaea/kinto_client-5.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d863abaee348c6c933966a0a111e0746", "sha256": "579380ee5f3c313ff34bcd686a6eb579727dff37f435cc28c0ada2edaa92391c" }, "downloads": -1, "filename": "kinto-client-5.0.0.tar.gz", "has_sig": false, "md5_digest": "d863abaee348c6c933966a0a111e0746", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29135, "upload_time": "2016-05-13T08:29:37", "url": "https://files.pythonhosted.org/packages/d0/e4/73f4b8edfc28cd00955009b0fd27328d2f077fcc6bdd37f00546c1d0a4ff/kinto-client-5.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "616706062addbae52a23b7937bd36644", "sha256": "83bfbe68f4acb3809f501c22c7811c1825aafabab215569183f219fc4155b35d" }, "downloads": -1, "filename": "kinto_client-5.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "616706062addbae52a23b7937bd36644", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32578, "upload_time": "2016-05-13T08:29:28", "url": "https://files.pythonhosted.org/packages/a0/12/b347afc88767075e22efdc510c7874bfdc95ea4eaa17505e7a1737d3eaea/kinto_client-5.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d863abaee348c6c933966a0a111e0746", "sha256": "579380ee5f3c313ff34bcd686a6eb579727dff37f435cc28c0ada2edaa92391c" }, "downloads": -1, "filename": "kinto-client-5.0.0.tar.gz", "has_sig": false, "md5_digest": "d863abaee348c6c933966a0a111e0746", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29135, "upload_time": "2016-05-13T08:29:37", "url": "https://files.pythonhosted.org/packages/d0/e4/73f4b8edfc28cd00955009b0fd27328d2f077fcc6bdd37f00546c1d0a4ff/kinto-client-5.0.0.tar.gz" } ] }