{ "info": { "author": "Paolo Ravanelli", "author_email": "paolo.ravanelli@cherry-data.com", "bugtrack_url": null, "classifiers": [], "description": "# CHERRYTABLE CONNECTOR\n\nThe Cherrytable Connector allows the interaction with [Cherrytable]() through HTTP requests. Its functions permit to insert, read, update and delete rows through sequential, pipelined or queued requests.\nThe component is provided as a public python module which can be found at [PyPI]() and can be installed in any machine with a version of **Python > 3**.\n\n## Installation\nThe module can be installed with the following command\n```\npip install cherrytable-connector\n```\n\n## Configuration\nThe connector object can be created as follows:\n\n```python\nfrom cherrytable_connector import cherrytable_connector as cc\nconnector = cc.CherrytableConnector(host, port, username, password, table_name, table_column_names, log_dir, debug, max_pipeline_requests)\n```\n\nwhere:\n- _host_ and _port_ refer to the Cherrytable installation\n- _username_ and _password_ are the credentials \n- _table\\_name_ is the name of the table, e.g. \u201cusertable\u201d\n- _table\\_column\\_names_ is the list of the column names, e.g. [\"key\\_column\",\"field0\",\"field1\"] \n- _log\\_dir_ is the path of the folder containing the logs, e.g. \u201c../log\u201d\n- _debug_ is True to set the log in debug mode\n- _max\\_pipeline\\_requests_ (optional parameter) is the maximum size of the pipeline\n\n## Methods\n### Sequential\nRequests can be sequentially sent, i.e. waiting for the response of the first request before sending the second, using the `send` function: \n```python\nsend(req_type, key, data, options)\n```\n\nwhere:\n- _req\\_type_ is the type of the request\n- _key_ is the value of the primary key of the row\n- _data_ is the entire row, where values are divided by \u201c;\u201d\n- _options_ is a list of column names, employed in the read function\n\nParameters vary according to the request type and examples of usage are the following:\n\n#### INSERT\n```python\nres = connector.send(req_type=cc.RequestType.INSERT, data=\"1;33;172\")\n```\n\nIf the key (first value) already exists, the request won\u2019t be successful. \n\n#### UPDATE\n```python\nres = connector.send(req_type=cc.RequestType.UPDATE, data=\"1;30;170\")\n```\n\nTo be successful the key should already exist.\n\n#### READ\n```python\nres = connector.send(req_type=cc.RequestType.READ, key=\u201d1\u201d, options=[\u201ckey_column\u201d, \u201cfield0\u201d])\n```\n\nTo be successful the key should already exist. With `options` it is possible to specify the columns to be retrieved, otherwise if `options` is None all the columns are retrieved. \n\n#### DELETE\n```python\nres = connector.send(req_type=cc.RequestType.DELETE, key=\u201d1\u201d)\n```\n\nTo be successful the key should already exist.\n\n\nThe outcome `res` is a dictionary containing the fields `status` and `body`, corresponding to the status code of the response and its body.\n\n### Pipelining\n\nPipelining allows to send multiple requests without waiting for individual responses. Requests are defined in a list and their responses are returned together. The maximum size of the pipeline can be specified in the constructor of CherrytableConnector. Requests are sent through the `sendPipeline` function:\n\n```python\nsendPipeline(requests)\n```\n\nwhich takes as input a list of requests, defined as tuples _(req\\_type,key,data,options)_\n\n```python\nrequests = [(cc.RequestType.INSERT, None, \"1;33;172\", None),\\\n (cc.RequestType.INSERT, None, \"2;33;172\", None),\\\n (cc.RequestType.INSERT, None, \"3;33;172\", None),\\\n (cc.RequestType.DELETE, \"1\", None, None),\\\n (cc.RequestType.DELETE, \"2\", None, None),\\\n (cc.RequestType.UPDATE, None, \"3;20;100\", None),\\\n (cc.RequestType.READ, \"3\", None, [\u201ckey_column\u201d,\u201dfield0\u201d]),\\\n (cc.RequestType.DELETE, \"3\", None, None)] \nresponses = connector.sendPipeline(requests)\n```\n\n`responses` is the list of all the response dictionaries, with `status` and `body` fields.\n\n### Queued\n\nWith this feature it is possible to send requests without waiting for their responses. After having sent some requests it is possible to perform other operations before retrieving their responses.\nRequests are automatically added to an internal queue and handled as pipelines. \nThe main difference with respect to the prior method is that it is not necessary to prepare all the requests before sending them, instead requests are individually sent using:\n\n```python\nsendWithQueue(req_type, key, data, options)\n```\n\nFor example:\n\n```python \nrequests = []\nrequests.append(connector.sendWithQueue(req_type=cc.RequestType.INSERT, key=None, data=\"1;33;172\", options=None))\nrequests.append(connector.sendWithQueue(req_type=cc.RequestType.INSERT, key=None, data=\"2;33;172\", options=None))\nrequests.append(connector.sendWithQueue(req_type=cc.RequestType.INSERT, key=None, data=\"3;33;172\", options=None))\nrequests.append(connector.sendWithQueue(req_type=cc.RequestType.DELETE, key=\"1\", data=None, options=None))\n\n#Other operations\u2026\n\nresponses=[]\nlast_completed = 0\nwhile last_completed != (len(requests)-1):\nif requests[last_completed+1].getResult()[0] == cc.RequestStatus.COMPLETED or requests[last_completed+1].getResult()[0] == cc.RequestStatus.ERROR:\n \tlast_completed +=1 \n\t\tresponses.append(requests[last_completed+1].res) \n```\n\n## Working with objects\n\nInstead of using plain text to represent rows, it is possible to map rows to objects. \nFor example, a Cherrytable row composed of the fields `key_column, field0, field1` can be mapped to a runtime object having the following fields:\n      c_id → key_column\n      age → field0\n      height → field1\n\nIn this way, object fields are updated according to the operations performed on the table.\n```python\nfrom cherrytable_connector import cherrytable_connector_obj as cc\nconnector = cc.CherrytableConnector(host, port, username, password, table_name, table_column_names, obj_mapping, log_dir, debug)\n```\n\nwhere `obj_mapping` is a list of fields of the object mapped positionally to `table_column_names`, in this example [\"c_id\",\"age\",\"height\"]\n\nThe object class must inherit from `cc.CherryObject` and can be defined for example as follows:\n\n```python\nclass Customer(cc.CherryObject):\n def __init__(self, c_id, et\u00e0, altezza):\n cc.CherryObject.__init__(self)\n self.c_id = c_id\n self.age = age\n self.height = height\n\ncustomer = Customer(c_id=\"1\", age=\"33\", height=\"172\")\n```\n\n### Sequential\nSequential requests are executed by sending the object as parameter:\n```python\nsend(req_type, obj, options=None)\n```\nwhere \n- _req\\_type_ is the type of the request\n- _obj_ is the object corresponding to the table\n- _options_ is a list of column names, employed in the read function\n\nParameters vary according to the request type and examples of usage are the following:\n\n#### INSERT\n```python\nres = connector.send(req_type=cc.RequestType.INSERT, obj=customer)\n```\n\nIf the key of the object (parameter corresponding to the primary key of the table) already exists, the request won\u2019t be successful. \n\n#### UPDATE\n```python\nres = connector.send(req_type=cc.RequestType.UPDATE, obj=customer)\n```\n\nTo be successful the key of the object should already exist.\n\n#### READ\n```python\nres = connector.send(req_type=cc.RequestType.READ, obj=customer, options=[\u201ckey_column\u201d, \u201cfield0\u201d])\n```\n\nTo be successful the key of the object should already exist. With `options` it is possible to specify the columns to be retrieved, otherwise if `options` is None all the columns are retrieved. \nWhen a read operation is performed, the object parameters are updated with the values contained in the corresponding table.\n\n#### DELETE\n```python\nres = connector.send(req_type=cc.RequestType.DELETE, obj=customer)\n```\n\nTo be successful the key of the object should already exist.\n\n\n### Pipelining\n\nThe list of requests contained in a pipeline are defined as tuples _(req_type,object,options)_\n\n```python\nrequests = [(cc.RequestType.INSERT,customer,None),\\\n (cc.RequestType.INSERT,customer,None),\\\n (cc.RequestType.INSERT,customer,None),\\\n (cc.RequestType.DELETE,customer,None),\\\n (cc.RequestType.DELETE,customer,None),\\\n (cc.RequestType.UPDATE,customer_modified,None),\\\n (cc.RequestType.READ,customer,None),\\\n (cc.RequestType.DELETE,customer,None)] \n\nresponses = connector.sendPipeline(requests)\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": "", "keywords": "", "license": "GNU General Public License", "maintainer": "", "maintainer_email": "", "name": "cherrytable-connector", "package_url": "https://pypi.org/project/cherrytable-connector/", "platform": "", "project_url": "https://pypi.org/project/cherrytable-connector/", "project_urls": null, "release_url": "https://pypi.org/project/cherrytable-connector/0.4/", "requires_dist": [ "dugong", "urllib3" ], "requires_python": ">3", "summary": "A plugin to interact with Cherrytable", "version": "0.4", "yanked": false, "yanked_reason": null }, "last_serial": 6094055, "releases": { "0.2.5": [ { "comment_text": "", "digests": { "md5": "7ec02640ec9921acb7bdb7b7b2974d59", "sha256": "86b2bed7516fe39074a6105277e4025b1f4d9111ebcd5e9e59825227f3afbf9a" }, "downloads": -1, "filename": "cherrytable_connector-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7ec02640ec9921acb7bdb7b7b2974d59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 18376, "upload_time": "2019-10-31T09:06:41", "upload_time_iso_8601": "2019-10-31T09:06:41.319098Z", "url": "https://files.pythonhosted.org/packages/c6/46/363cadaf7dc355f534ccb0b9568496408cfcbaf142c07217681c98319b66/cherrytable_connector-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "592c388d3bd8e681ca7a6aff55a441c1", "sha256": "b0cf553faa7ee5435032bd47b54d689891b2cb17e6815270f4cc94439ccbea23" }, "downloads": -1, "filename": "cherrytable_connector-0.2.5.tar.gz", "has_sig": false, "md5_digest": "592c388d3bd8e681ca7a6aff55a441c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 24071, "upload_time": "2019-10-31T09:06:42", "upload_time_iso_8601": "2019-10-31T09:06:42.885319Z", "url": "https://files.pythonhosted.org/packages/4f/11/21b15779d07f6635bfd5bf140d64b0eaa2cf3b5c4da52d4ddb96fd37aabb/cherrytable_connector-0.2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c25b4cb0042a70ff2e6972e15026a340", "sha256": "b95726caeb851f35683560281c3649d47668af6cbc6932153ca909b036ae18e3" }, "downloads": -1, "filename": "cherrytable_connector-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "c25b4cb0042a70ff2e6972e15026a340", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 18922, "upload_time": "2019-11-06T09:56:29", "upload_time_iso_8601": "2019-11-06T09:56:29.614974Z", "url": "https://files.pythonhosted.org/packages/53/d6/273833554d628e1dd644585851ff2a3f2cbb5baf1ea7e071f284842c1cb0/cherrytable_connector-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c90c283509dfd212d40a48985b81fdbc", "sha256": "cabb83b966aca9dd35f184dd0929ff09d9c57f81327129896a8797c7fc45ad26" }, "downloads": -1, "filename": "cherrytable_connector-0.2.6.tar.gz", "has_sig": false, "md5_digest": "c90c283509dfd212d40a48985b81fdbc", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 27827, "upload_time": "2019-11-06T09:56:31", "upload_time_iso_8601": "2019-11-06T09:56:31.341996Z", "url": "https://files.pythonhosted.org/packages/37/d3/0b07a48bb18e3d72fdb53c20f2a377d22e1a89360a9b2c4a96cd77b5e0df/cherrytable_connector-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "21b3e79484a2fc3424fa30464931e9b4", "sha256": "08373b9abd9de2c23bce17d048142b02f7e7031e694a6a871f6af2f9ab95bf4b" }, "downloads": -1, "filename": "cherrytable_connector-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "21b3e79484a2fc3424fa30464931e9b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 18920, "upload_time": "2019-11-06T17:06:05", "upload_time_iso_8601": "2019-11-06T17:06:05.712211Z", "url": "https://files.pythonhosted.org/packages/4e/1d/e23c5b2081779ee1ffa217714678e1b0189f358cb93d2fcbacc06a9738e3/cherrytable_connector-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4dc3b64509f69fbc9c72bb1cbfd95bcf", "sha256": "8cd4aaec190d022b5df60d7d7d301ede7c6736dcffc6957c237b3cc3fd3a3981" }, "downloads": -1, "filename": "cherrytable_connector-0.2.7.tar.gz", "has_sig": false, "md5_digest": "4dc3b64509f69fbc9c72bb1cbfd95bcf", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 28031, "upload_time": "2019-11-06T17:06:07", "upload_time_iso_8601": "2019-11-06T17:06:07.096844Z", "url": "https://files.pythonhosted.org/packages/d6/17/ecf254d7fd3d727b89d35bf5ecfe6bc03993c59cfbac9ab3ffdda3b2f267/cherrytable_connector-0.2.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3": [ { "comment_text": "", "digests": { "md5": "056f729829d7cbd71024926f1c467e5f", "sha256": "5934481703f7ff260a42d230a3b024d0e2b589fe9c8b50a2062eeb8638b10462" }, "downloads": -1, "filename": "cherrytable_connector-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "056f729829d7cbd71024926f1c467e5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20762, "upload_time": "2019-11-07T09:07:39", "upload_time_iso_8601": "2019-11-07T09:07:39.838457Z", "url": "https://files.pythonhosted.org/packages/32/8e/7f092b4834f93e623fc5d7d0bbc45130d596603237945efc6bc86da79495/cherrytable_connector-0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ec642abd463bc46d63e08bc2198ee727", "sha256": "742c18eba1961e78b633f41127770ec2ed5e2b67f6cb2ccb33e98975d9572b5b" }, "downloads": -1, "filename": "cherrytable_connector-0.3.tar.gz", "has_sig": false, "md5_digest": "ec642abd463bc46d63e08bc2198ee727", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32106, "upload_time": "2019-11-07T09:07:41", "upload_time_iso_8601": "2019-11-07T09:07:41.520603Z", "url": "https://files.pythonhosted.org/packages/b1/18/192e2969cd978abcb6463c22c7d20ed1703d9bb4be0a9264a3100cb8bcce/cherrytable_connector-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "454126aab5e691caaebd1c6edd88000d", "sha256": "c137b165afe410fea4b0455866481bd56286ccee8219bd1371e9cdf33ce5203e" }, "downloads": -1, "filename": "cherrytable_connector-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "454126aab5e691caaebd1c6edd88000d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20787, "upload_time": "2019-11-07T09:13:55", "upload_time_iso_8601": "2019-11-07T09:13:55.000545Z", "url": "https://files.pythonhosted.org/packages/40/5f/88ffb0dcd86372dfeec1e6189ef01168c66e162fb65e66bd5c497e051867/cherrytable_connector-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe4616665ff59cbb306d7950e8449695", "sha256": "311109192168ab2e3aea245093ac1e8b06c426f2b9ab845f78412abe92d1e38f" }, "downloads": -1, "filename": "cherrytable_connector-0.3.1.tar.gz", "has_sig": false, "md5_digest": "fe4616665ff59cbb306d7950e8449695", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32246, "upload_time": "2019-11-07T09:13:56", "upload_time_iso_8601": "2019-11-07T09:13:56.567853Z", "url": "https://files.pythonhosted.org/packages/05/a3/3c78fdbf68c87a645d41f839b9c20b7291d4951a78d11dd3b6da8bd6d709/cherrytable_connector-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b0dd200d7a3bfeee0ef175a3092caaad", "sha256": "a2131a319d67c813a14709dd91513933f0e3a0606e7b6e3edafeead0be87766e" }, "downloads": -1, "filename": "cherrytable_connector-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b0dd200d7a3bfeee0ef175a3092caaad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20818, "upload_time": "2019-11-07T15:01:37", "upload_time_iso_8601": "2019-11-07T15:01:37.342783Z", "url": "https://files.pythonhosted.org/packages/6d/bd/0d0bde8e5dd0b3c5c9d8e3748da1c4822e71fc7fd194dff988d59047c094/cherrytable_connector-0.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "94aced5feb6e000a8b96b1cc8aa8258e", "sha256": "d18e709496daac150266189df2a1fbf10d7669b563cbf9396be66d8158103513" }, "downloads": -1, "filename": "cherrytable_connector-0.3.2.tar.gz", "has_sig": false, "md5_digest": "94aced5feb6e000a8b96b1cc8aa8258e", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32260, "upload_time": "2019-11-07T15:01:39", "upload_time_iso_8601": "2019-11-07T15:01:39.956355Z", "url": "https://files.pythonhosted.org/packages/6d/0c/15281d1601499b5cd0d542f953029ba2b658c1ce637482ad05604b01d52f/cherrytable_connector-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "916acb240cd457e3031bb7832a32e785", "sha256": "d9f2837b8007deea4ea1f668c25df05aa2bac33cf420d0448be7d87ed6e00ed3" }, "downloads": -1, "filename": "cherrytable_connector-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "916acb240cd457e3031bb7832a32e785", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20815, "upload_time": "2019-11-07T15:06:27", "upload_time_iso_8601": "2019-11-07T15:06:27.124435Z", "url": "https://files.pythonhosted.org/packages/1e/2d/9b4b7640d7f84a46caa8ebda50b7686358d0847e7f23b64c464c0bfc5443/cherrytable_connector-0.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "969d6448d8d083338e138c23736cbabe", "sha256": "fee68e7c92de5167fe87dd6665f8e07888a1fdbba09dc26a7744d30c7df74fac" }, "downloads": -1, "filename": "cherrytable_connector-0.3.3.tar.gz", "has_sig": false, "md5_digest": "969d6448d8d083338e138c23736cbabe", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32261, "upload_time": "2019-11-07T15:06:30", "upload_time_iso_8601": "2019-11-07T15:06:30.736124Z", "url": "https://files.pythonhosted.org/packages/18/75/5e2eed209afc0958be1217cd54ab942b10410c871f2fcf0b5b878faffd79/cherrytable_connector-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "690ef639d02926b230c0150d5011aebb", "sha256": "632fd439bdc5528200e95de64b787595da946e320668fbfca6fa0929bd9c234d" }, "downloads": -1, "filename": "cherrytable_connector-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "690ef639d02926b230c0150d5011aebb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20812, "upload_time": "2019-11-07T15:12:46", "upload_time_iso_8601": "2019-11-07T15:12:46.318783Z", "url": "https://files.pythonhosted.org/packages/24/68/4edae76cecd2998251f248a1ade5068a30022b9081b47b81a7373d92fa6f/cherrytable_connector-0.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f54df4de30852bf7ba4c0137818c6a5b", "sha256": "ebf11e2ed81e21c460a82cb9c5b84520fb81b2f5429c53ee58a2945368f95a1d" }, "downloads": -1, "filename": "cherrytable_connector-0.3.4.tar.gz", "has_sig": false, "md5_digest": "f54df4de30852bf7ba4c0137818c6a5b", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32255, "upload_time": "2019-11-07T15:12:48", "upload_time_iso_8601": "2019-11-07T15:12:48.020853Z", "url": "https://files.pythonhosted.org/packages/9a/ab/f7b524bc9dd5f9ec056c4190d02d5cece88a21f4a92e436819cf4bbd1245/cherrytable_connector-0.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "6b1904a5a09a6b3ef39c7cd637a76f92", "sha256": "236b4f87503693549e162a5df09dac3358d5e3d2fb7dc0d53ec2fc7aaf1ff72c" }, "downloads": -1, "filename": "cherrytable_connector-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "6b1904a5a09a6b3ef39c7cd637a76f92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20816, "upload_time": "2019-11-07T15:14:09", "upload_time_iso_8601": "2019-11-07T15:14:09.281432Z", "url": "https://files.pythonhosted.org/packages/6f/23/d322c88d4ef28c501464047cb0be6695260e3a921222a7cde944cafbdaa6/cherrytable_connector-0.3.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b27f2f9817a9a967308c549cd43adf88", "sha256": "9ec1b203f7d64b4c1ab34d0340c385ce39f3e9bdb3a7fc679cfe5115814af632" }, "downloads": -1, "filename": "cherrytable_connector-0.3.5.tar.gz", "has_sig": false, "md5_digest": "b27f2f9817a9a967308c549cd43adf88", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32259, "upload_time": "2019-11-07T15:14:12", "upload_time_iso_8601": "2019-11-07T15:14:12.361411Z", "url": "https://files.pythonhosted.org/packages/5d/19/22610f8e2544e5432beed053f97b00a5a15d90d39d697455c3b274c3d84e/cherrytable_connector-0.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a0a80314427cff1920edd9bebba55be4", "sha256": "6d160d9d3b847d496a08391149de3b9e7e75ba6616ea19b744d073c76c8214bf" }, "downloads": -1, "filename": "cherrytable_connector-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a0a80314427cff1920edd9bebba55be4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20796, "upload_time": "2019-11-07T15:18:37", "upload_time_iso_8601": "2019-11-07T15:18:37.039588Z", "url": "https://files.pythonhosted.org/packages/7f/da/3310ad099479575d8ab1d5ca5c5eb95e9dbca222636fad74af1bf73d47a2/cherrytable_connector-0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2735f9293ff5b13ab825ec2e95b2595a", "sha256": "59a54ff594e5013c84f9e6690e1f90e579b220b992682d4888d0ba483f0630f6" }, "downloads": -1, "filename": "cherrytable_connector-0.4.tar.gz", "has_sig": false, "md5_digest": "2735f9293ff5b13ab825ec2e95b2595a", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32134, "upload_time": "2019-11-07T15:18:38", "upload_time_iso_8601": "2019-11-07T15:18:38.870158Z", "url": "https://files.pythonhosted.org/packages/22/c0/904d67f19800f997763dbeba36c3e05bd7aa66b24de5b37c2188fcb3899f/cherrytable_connector-0.4.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a0a80314427cff1920edd9bebba55be4", "sha256": "6d160d9d3b847d496a08391149de3b9e7e75ba6616ea19b744d073c76c8214bf" }, "downloads": -1, "filename": "cherrytable_connector-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a0a80314427cff1920edd9bebba55be4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3", "size": 20796, "upload_time": "2019-11-07T15:18:37", "upload_time_iso_8601": "2019-11-07T15:18:37.039588Z", "url": "https://files.pythonhosted.org/packages/7f/da/3310ad099479575d8ab1d5ca5c5eb95e9dbca222636fad74af1bf73d47a2/cherrytable_connector-0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2735f9293ff5b13ab825ec2e95b2595a", "sha256": "59a54ff594e5013c84f9e6690e1f90e579b220b992682d4888d0ba483f0630f6" }, "downloads": -1, "filename": "cherrytable_connector-0.4.tar.gz", "has_sig": false, "md5_digest": "2735f9293ff5b13ab825ec2e95b2595a", "packagetype": "sdist", "python_version": "source", "requires_python": ">3", "size": 32134, "upload_time": "2019-11-07T15:18:38", "upload_time_iso_8601": "2019-11-07T15:18:38.870158Z", "url": "https://files.pythonhosted.org/packages/22/c0/904d67f19800f997763dbeba36c3e05bd7aa66b24de5b37c2188fcb3899f/cherrytable_connector-0.4.tar.gz", "yanked": false, "yanked_reason": null } ] }