{ "info": { "author": "Roger Iyengar", "author_email": "ri@rogeriyengar.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9" ], "description": "# Gabriel Python Module\n\n## Installation\n\nRequires Python 3.6 or later.\n\nRun `pip install gabriel-client`\n\n## Usage\n\nCreate an instance of `websocket_client.WebsocketClient`. Then call\nthe `launch()` method. The `WebsocketClient` constructor's arguments are `host`,\n`port`, `producer_wrappers` (a list of\n`websocket_client.ProducerWrapper` instances), and `consumer` (a\nfunction called whenever a new result is available).\n\n`opencv_adater.OpencvAdapter` provides `producer_wrappers` and a consumer.\n`push_source.Source` provides `producer_wrappers`.\nUse of either of these classes is optional. You can define your own producers\nand/or a consumer, and just use `WebsocketClient` with these. `OpencvAdapter` is\nintended for clients that send image frames from a webcam or a video file,\nwithout doing early discard. `OpencvAdapter.consumer` decodes images returned\nby the server and then calls the `consume_frame` callback that was passed to the\n`OpencvAdapter`'s constructor. This consumer will not work when a\n`ResultWrapper` contains more than one result, or a result that is not an\nimage. However, you can still use the producer from `OpencvAdapter` and write\nyour own custom consumer. The `OpencvAdapter` requires OpenCV to be\ninstalled and accessible to Python. The\n[opencv-python](https://pypi.org/project/opencv-python) package is a convenient\nway to install OpenCV for Python. If you do not use `OpencvAdapter`, you do not\nhave to have OpenCV installed.\n\nIf you choose to write your own `ProducerWrapper`, you must pass a\n[coroutine function](https://docs.python.org/3/glossary.html#term-coroutine-function)\nas the `producer` argument to the constructor of `ProducerWrapper`. The\n`producer` is run on an\n[asyncio event loop](https://docs.python.org/3/library/asyncio-eventloop.html#event-loop),\nso it is important that the `producer` does not include any blocking code. This\nwould cause the whole event loop to block.\n\nIf you need to run blocking code to get an input for Gabriel, you can use\n`push_source.Source`. You should also use `push_source.Source` whenever you want\nto run the code to produce a frame before a token is available.\n`push_source.Source` should always be used for sending frames that pass early\ndiscard filters. Create an instance of `push_source.Source` and include the\n`ProducerWrapper` returned from `push_source.Source.get_producer_wrapper()` in\nthe list of `producer_wrappers` you pass to the constructor of\n`WebsocketClient`. You can then pass the `push_source.Source`\ninstance to a separate process started using the `multiprocessing` module. When\nresults are ready, send them with `push_source.Source.send()`.\n`push_source.Source.send()` should only ever be called from one process. Create\nat least one `push_source.Source` per process that you want to send frames from.\nFrames sent with `push_source.Source.send()` are not guaranteed to be sent to\nthe server. As soon as a token becomes available, the most recent unsent frame\nwill be sent. If `push_source.Source.send()` is called multiple times before a\ntoken becomes available, only the most recent frame will actually be sent to the\nserver. If a token becomes available before the next frame is ready, Gabriel\nwill send the next frame after `push_source.Source.send()` is called.\n`push_source.Source` will not block the event loop.\n\nIf you want the client to ignore results, you can pass\n`push_source.consumer` as the `consumer` argument to `WebsocketClient`.\n\n`WebsocketClient` does not run producers until there is a token available to\nsend a result from them. This guarantees that producers are not run more\nfrequently than they need to be, and when results are sent to the server, they\nare as recent as possible. However, running the producer introduces a delay\nbetween when a token comes back and when the next frame is sent.\n`push_source.Source` allows frames to be generated asynchronously from tokens\nreturning. The two downsides to this approach are:\n1. Some frames might be generated and never sent.\n2. When a token does come back, the last frame sent to a `push_source.Source`\n instance might have been generated a while ago. In practice, hopefully tokens\n will be returned to the client at a reasonable rate.\n\nIf you want to measure average round trip time (RTT) and frames per second\n(FPS), use `measurement_client.MeasurementClient` in place of `WebsocketClient`.\naverage RTT and FPS information will be printed automatically, every\n`output_freq` frames.\n\n## Examples\n\n1. The round trip example\n [client](https://github.com/cmusatyalab/gabriel/blob/2840808c3d90e4980969b2744877e739723c84bb/examples/round_trip/client.py#L41)\n uses `OpencvAdapter`.\n2. The one way example\n [producer client](https://github.com/cmusatyalab/gabriel/blob/2840808c3d90e4980969b2744877e739723c84bb/examples/one_way/producer_client.py#L44)\n uses a custom producer.\n3. The one way example\n [push client](https://github.com/cmusatyalab/gabriel/blob/2840808c3d90e4980969b2744877e739723c84bb/examples/one_way/push_client.py#L34)\n uses `push_source.Source`.\n4. The OpenRTiST\n [playback stream client](https://github.com/cmusatyalab/openrtist/blob/019a58999fbdd7494b09b141e2c688e2fda32fb0/python-client/playback_stream.py#L35)\n uses `MeasurementClient`.\n\n## Publishing Changes to PyPi\n\nUpdate the version number in setup.py. Then follow [these instructions](https://packaging.python.org/tutorials/packaging-projects/#generating-distribution-archives).\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": "http://gabriel.cs.cmu.edu", "keywords": "", "license": "Apache", "maintainer": "", "maintainer_email": "", "name": "gabriel-client", "package_url": "https://pypi.org/project/gabriel-client/", "platform": "", "project_url": "https://pypi.org/project/gabriel-client/", "project_urls": { "Homepage": "http://gabriel.cs.cmu.edu" }, "release_url": "https://pypi.org/project/gabriel-client/2.1.0/", "requires_dist": [ "gabriel-protocol (==2.0.1)", "websockets (<5,==8.1opencv-python>=3)" ], "requires_python": ">=3.6", "summary": "Networking components for Gabriel Python clients", "version": "2.1.0", "yanked": false, "yanked_reason": null }, "last_serial": 10125206, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "85a3999aa7230af924ff308f43b6d1ad", "sha256": "90d90709fe8c27acd5b701fe3605b2898006d5455c71eddeb7fe41024ed1dd34" }, "downloads": -1, "filename": "gabriel_client-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "85a3999aa7230af924ff308f43b6d1ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7180, "upload_time": "2019-10-17T04:43:00", "upload_time_iso_8601": "2019-10-17T04:43:00.779266Z", "url": "https://files.pythonhosted.org/packages/bc/2a/5b9dcdc25a7e527c2cdaaa89eca9d6f1be4e84ebaa130c509b3186b6de34/gabriel_client-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2317524e75e0f00ef40bc140ba6eff92", "sha256": "d896c38b686c2bc7b3944e3c101a0ebeb7598dd87e2b17626876193ad493a201" }, "downloads": -1, "filename": "gabriel-client-0.0.1.tar.gz", "has_sig": false, "md5_digest": "2317524e75e0f00ef40bc140ba6eff92", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6598, "upload_time": "2019-10-17T04:43:03", "upload_time_iso_8601": "2019-10-17T04:43:03.020716Z", "url": "https://files.pythonhosted.org/packages/db/06/9f9f49a86e526893bce5e80d2f0bd5efeaf36da7147bb3fff99d2d905250/gabriel-client-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "500dc5759629b931cfbd515e5913f962", "sha256": "29fdf730ccaf476d32072c05bff91e55422f6a27cd4169715060bbb5d8a1d0a7" }, "downloads": -1, "filename": "gabriel_client-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "500dc5759629b931cfbd515e5913f962", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 7264, "upload_time": "2019-10-18T21:40:40", "upload_time_iso_8601": "2019-10-18T21:40:40.414672Z", "url": "https://files.pythonhosted.org/packages/77/d6/4fd9b7773f0565a0e50e881bdb2ce59aee56cf401b7070d17bda7d00aee9/gabriel_client-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "67b25f887b00868539f08347eee0414f", "sha256": "4929927a2b42f258d3dc31d1edeca5df476939174b586fcc1169082a9a7c1901" }, "downloads": -1, "filename": "gabriel-client-0.0.2.tar.gz", "has_sig": false, "md5_digest": "67b25f887b00868539f08347eee0414f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6694, "upload_time": "2019-10-18T21:40:42", "upload_time_iso_8601": "2019-10-18T21:40:42.121199Z", "url": "https://files.pythonhosted.org/packages/f1/90/a4de505fc4cedfdb2e6a507161a3d780555f460806914000b3616f2129e3/gabriel-client-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "3070d88efc764d35ad532da037795b60", "sha256": "6b3b223e4997d97b6e5e6d92727058126317a50fdf970b0230ff589d62604842" }, "downloads": -1, "filename": "gabriel_client-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3070d88efc764d35ad532da037795b60", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 7263, "upload_time": "2019-10-18T21:46:44", "upload_time_iso_8601": "2019-10-18T21:46:44.734552Z", "url": "https://files.pythonhosted.org/packages/f2/e4/981ab8663301cf03af765309143b1cafb42dd3762138f419c6ae92d35aca/gabriel_client-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "115642cc708e1040495df3d095bedcac", "sha256": "b1754e5cac1d9491b25327666aef2de5f43eb365960633c64cad9e63ff392ede" }, "downloads": -1, "filename": "gabriel-client-0.0.3.tar.gz", "has_sig": false, "md5_digest": "115642cc708e1040495df3d095bedcac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 6690, "upload_time": "2019-10-18T21:46:46", "upload_time_iso_8601": "2019-10-18T21:46:46.234781Z", "url": "https://files.pythonhosted.org/packages/f7/3a/18fee9275cdbcfb597d22f4e5f5f3d1b32e2a4ee1c71128466e2db9a69aa/gabriel-client-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "6b783efb88549ad24bd9bf43f75e5ebf", "sha256": "95744b309ce281e4d9e9286a0332263390d694a3282390e7383bc000743e8df8" }, "downloads": -1, "filename": "gabriel_client-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6b783efb88549ad24bd9bf43f75e5ebf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9018, "upload_time": "2019-10-20T17:11:23", "upload_time_iso_8601": "2019-10-20T17:11:23.044131Z", "url": "https://files.pythonhosted.org/packages/bf/af/f11e4d990f07debed8b886563953cd86e8912b188d07e3427ce1b66598a3/gabriel_client-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa10efd963176ca0ba3eddaac3225ad4", "sha256": "4700f882ed0c026798f842a9bb1ddfd1bc1f9f7faa2813b4ffb92561431d11eb" }, "downloads": -1, "filename": "gabriel-client-0.0.4.tar.gz", "has_sig": false, "md5_digest": "fa10efd963176ca0ba3eddaac3225ad4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7727, "upload_time": "2019-10-20T17:11:24", "upload_time_iso_8601": "2019-10-20T17:11:24.730776Z", "url": "https://files.pythonhosted.org/packages/a4/92/d705ec5ccd36d447aed887c3b37ff2e99dbb1ef85d7f4252f06722696fd1/gabriel-client-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "28e77db40d79da6c9f7ac1ad056d4239", "sha256": "a1ccf7157cb63f64f718809d54c723bae4ba22f417f6c92dd05c2ceb5b937578" }, "downloads": -1, "filename": "gabriel_client-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "28e77db40d79da6c9f7ac1ad056d4239", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9015, "upload_time": "2019-10-22T17:44:18", "upload_time_iso_8601": "2019-10-22T17:44:18.141164Z", "url": "https://files.pythonhosted.org/packages/0d/f3/0f5f728ff1f5ac0118c2b72d6f4f8c631de3bc00365ec00b530ff8316220/gabriel_client-0.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "829976e00c34cf193ae9d2dc2de07269", "sha256": "4ed2074e3e411b9e4ca408e64f972229696be57e4fea71b9cb417a3bf42b3602" }, "downloads": -1, "filename": "gabriel-client-0.0.5.tar.gz", "has_sig": false, "md5_digest": "829976e00c34cf193ae9d2dc2de07269", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 7737, "upload_time": "2019-10-22T17:44:19", "upload_time_iso_8601": "2019-10-22T17:44:19.512503Z", "url": "https://files.pythonhosted.org/packages/9f/47/0dfc4f50a47bfad5e66f45a27b96168b3925a36713a9b36e240313086ddd/gabriel-client-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "edf08093ef1bd94efd933d5e01dbf127", "sha256": "a177adf347ff1bcaed827aa55368695a47fb2e66573ed10831ba97f0cdd84fb8" }, "downloads": -1, "filename": "gabriel_client-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "edf08093ef1bd94efd933d5e01dbf127", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9300, "upload_time": "2020-06-07T06:51:20", "upload_time_iso_8601": "2020-06-07T06:51:20.459835Z", "url": "https://files.pythonhosted.org/packages/46/4f/6a789907ac5d65a220e1ea9719439060113a6a4410be05697cb0f1f39627/gabriel_client-0.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "066117da7572138eed627fa54a010657", "sha256": "7f805e1ca4162e85dc7a27283493d245235ae5af52c1cf1fb52610ca17be73d3" }, "downloads": -1, "filename": "gabriel-client-0.0.6.tar.gz", "has_sig": false, "md5_digest": "066117da7572138eed627fa54a010657", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8061, "upload_time": "2020-06-07T06:51:21", "upload_time_iso_8601": "2020-06-07T06:51:21.599839Z", "url": "https://files.pythonhosted.org/packages/db/37/80649b51ae990962e883c46740c5a569ab94c6e14212fb633c90b019ec33/gabriel-client-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c128ac8a7d27d0c7661bbec9f145f29a", "sha256": "fec1cef82b6f9579f6752611dc01f2a84f6db9359141bdd97ed6e7d66cd5253d" }, "downloads": -1, "filename": "gabriel_client-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "c128ac8a7d27d0c7661bbec9f145f29a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9299, "upload_time": "2020-06-07T06:59:41", "upload_time_iso_8601": "2020-06-07T06:59:41.181888Z", "url": "https://files.pythonhosted.org/packages/69/4b/79a51e26e941be06a647a786aba26fb025c98683cfa6fb72ddf27f39fe3c/gabriel_client-0.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "037f58fcfc928d1e351bc860cc7d4790", "sha256": "9cdf3b003945ec6c6814646ba81d6bc39614e32909e735fba4fe51fa47ea9db9" }, "downloads": -1, "filename": "gabriel-client-0.0.7.tar.gz", "has_sig": false, "md5_digest": "037f58fcfc928d1e351bc860cc7d4790", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8057, "upload_time": "2020-06-07T06:59:42", "upload_time_iso_8601": "2020-06-07T06:59:42.416842Z", "url": "https://files.pythonhosted.org/packages/f5/64/11cc2d60309df1044cb11b4e5c08359af2f178e1a60746280926d8edd991/gabriel-client-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "6d4b2d54cee78294b1ba48a57eb434a4", "sha256": "60453b3cecf4dbb84e87128016b9b6537e6e7cebcfc308cbefdb152bbd0972bd" }, "downloads": -1, "filename": "gabriel_client-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "6d4b2d54cee78294b1ba48a57eb434a4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10483, "upload_time": "2020-06-09T19:52:06", "upload_time_iso_8601": "2020-06-09T19:52:06.774181Z", "url": "https://files.pythonhosted.org/packages/3b/a5/68805807df70843a6cce7420d15b317e70df2facd8e5aeabdda28bf074a7/gabriel_client-0.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "169070488a3bdba740dfef87d8c526ab", "sha256": "1e3b6e60460bb849146b25daa114424528d8b4ef697983da095f9836ba071c95" }, "downloads": -1, "filename": "gabriel-client-0.0.8.tar.gz", "has_sig": false, "md5_digest": "169070488a3bdba740dfef87d8c526ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8785, "upload_time": "2020-06-09T19:52:07", "upload_time_iso_8601": "2020-06-09T19:52:07.702192Z", "url": "https://files.pythonhosted.org/packages/f9/70/c849e6be39083c8d93b503f5f8c275975b24f89a1c4a83ab092e1423da65/gabriel-client-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "7190fe374550ad729ecf5f1249beb1af", "sha256": "b20e6db21f16c1970eefdb8cdc2e7b3aded7aabfdd0da25f0c239abb440f7947" }, "downloads": -1, "filename": "gabriel_client-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "7190fe374550ad729ecf5f1249beb1af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10557, "upload_time": "2020-06-14T07:47:12", "upload_time_iso_8601": "2020-06-14T07:47:12.359822Z", "url": "https://files.pythonhosted.org/packages/1c/9c/f17f4db728828f827a7cdf8c005a765222822e8ca2d883f8a3d46c7ae5a1/gabriel_client-0.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "03c816cee2c66e69ad5c9f0df3c0170f", "sha256": "edb35fe8a208e99299db32a47e31e84b21f379b090516eddab2c22a2f26fe2fe" }, "downloads": -1, "filename": "gabriel-client-0.0.9.tar.gz", "has_sig": false, "md5_digest": "03c816cee2c66e69ad5c9f0df3c0170f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8858, "upload_time": "2020-06-14T07:47:13", "upload_time_iso_8601": "2020-06-14T07:47:13.453915Z", "url": "https://files.pythonhosted.org/packages/21/6a/578160f7de431ec8eb486d1787a57fb8e56cc3d0b833750add5e8c6cd4df/gabriel-client-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "8fc48e2d678391cdc2f8e4bfdb51af8c", "sha256": "d5e25f5b3b288abe0568092447823908626c6edde28ed78cfb16c300a3579b5c" }, "downloads": -1, "filename": "gabriel_client-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8fc48e2d678391cdc2f8e4bfdb51af8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12499, "upload_time": "2020-07-01T20:59:28", "upload_time_iso_8601": "2020-07-01T20:59:28.898039Z", "url": "https://files.pythonhosted.org/packages/12/85/62776ed28cf4ab58020b3113dcf374d50d105cfe98e99ddf587d57134412/gabriel_client-2.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3237e1618c8dda81f46f038144cde83f", "sha256": "792e58416bf050a46a3cc37211be39b720133965c50aa358b3c8e46d204b3685" }, "downloads": -1, "filename": "gabriel-client-2.0.1.tar.gz", "has_sig": false, "md5_digest": "3237e1618c8dda81f46f038144cde83f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11013, "upload_time": "2020-07-01T20:59:29", "upload_time_iso_8601": "2020-07-01T20:59:29.883122Z", "url": "https://files.pythonhosted.org/packages/19/65/aaab0f68cadba0d40a5824d4cb109b56d0f96e1d80f3842755ff8c97b10f/gabriel-client-2.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "16b430cc3c4150fbbf42412c8c0e0f7a", "sha256": "1ea9a75ff1221c29d02b19cce98da671efbae0639f151b05eb4ce51514a45ecf" }, "downloads": -1, "filename": "gabriel_client-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "16b430cc3c4150fbbf42412c8c0e0f7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12215, "upload_time": "2020-07-12T17:09:38", "upload_time_iso_8601": "2020-07-12T17:09:38.718038Z", "url": "https://files.pythonhosted.org/packages/e6/96/8e1e89bf6de4716e7774e3e0cb85779b6478068efe3521d0bd840164e05e/gabriel_client-2.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5ae1134048ffac04b752442ae8af1929", "sha256": "ef9169daae467a169d6579b116f3996ca320f643ad8392bdf2189461f078ff8f" }, "downloads": -1, "filename": "gabriel-client-2.0.2.tar.gz", "has_sig": false, "md5_digest": "5ae1134048ffac04b752442ae8af1929", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10778, "upload_time": "2020-07-12T17:09:39", "upload_time_iso_8601": "2020-07-12T17:09:39.538182Z", "url": "https://files.pythonhosted.org/packages/9b/70/361e129300b42fec37aa9afde9bc72caa6fead4252e03fcc40af1a90a3cc/gabriel-client-2.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "0d4b325baa3f9b525141cbafc8c1093f", "sha256": "b2ace2de34b5ca5c9f45b132a1aa0765600ac610a9a3c6a94dfdd3572f28549e" }, "downloads": -1, "filename": "gabriel_client-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0d4b325baa3f9b525141cbafc8c1093f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 12601, "upload_time": "2021-04-21T04:31:20", "upload_time_iso_8601": "2021-04-21T04:31:20.686805Z", "url": "https://files.pythonhosted.org/packages/e1/1f/3f9c454829df34826cec27dfecf92b53b3cbe1fa880d34b46a4805db571b/gabriel_client-2.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a359bc6199920ef2cadd70d69a1634de", "sha256": "c30363fc2903237b1a18715dbd668a63871a7be664f1e0ad1ad5ece34a447a87" }, "downloads": -1, "filename": "gabriel-client-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a359bc6199920ef2cadd70d69a1634de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13509, "upload_time": "2021-04-21T04:31:21", "upload_time_iso_8601": "2021-04-21T04:31:21.653786Z", "url": "https://files.pythonhosted.org/packages/09/44/28c6b417fa754d29f0662f80461518aa02d8b527f044eef3367a4f8374f2/gabriel-client-2.1.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d4b325baa3f9b525141cbafc8c1093f", "sha256": "b2ace2de34b5ca5c9f45b132a1aa0765600ac610a9a3c6a94dfdd3572f28549e" }, "downloads": -1, "filename": "gabriel_client-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0d4b325baa3f9b525141cbafc8c1093f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 12601, "upload_time": "2021-04-21T04:31:20", "upload_time_iso_8601": "2021-04-21T04:31:20.686805Z", "url": "https://files.pythonhosted.org/packages/e1/1f/3f9c454829df34826cec27dfecf92b53b3cbe1fa880d34b46a4805db571b/gabriel_client-2.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a359bc6199920ef2cadd70d69a1634de", "sha256": "c30363fc2903237b1a18715dbd668a63871a7be664f1e0ad1ad5ece34a447a87" }, "downloads": -1, "filename": "gabriel-client-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a359bc6199920ef2cadd70d69a1634de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13509, "upload_time": "2021-04-21T04:31:21", "upload_time_iso_8601": "2021-04-21T04:31:21.653786Z", "url": "https://files.pythonhosted.org/packages/09/44/28c6b417fa754d29f0662f80461518aa02d8b527f044eef3367a4f8374f2/gabriel-client-2.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }