{ "info": { "author": "Tim Zaman", "author_email": "timbobel@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: Freeware", "License :: Other/Proprietary License", "Operating System :: MacOS", "Operating System :: Unix", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# DotaService\n\n\"dotaservice\n\n---\n\nNOTE: The project that uses the dotaservice in a k8s environment is the [DotaClient](https://github.com/TimZaman/dotaclient) repo.\n\nDotaService is a service to play Dota 2 through gRPC. There are first class python bindings\nand examples, so you can play dota as you would use the OpenAI gym API.\n\nIt's fully functional and super lightweight. Starting Dota `obs = env.reset()` takes 5 seconds,\nand each `obs = env.step(action)` in the environment takes between 10 and 30 ms.\n\nYou can even set the config of `render=True` and you can watch the game play live. Each game will\nhave a uuid and folder associated where there's a Dota demo (replay) and console logs.\n\n\"demo\"\n\n## Run DotaService Locally\n\nRun the DotaService so you can connect your client to it later. Only one client per server\nis supported, and only one DotaService per VM (eg local or one per docker container).\n\n```sh\npython3 -m dotaservice\n>>> Serving on 127.0.0.1:13337\n```\n\n## Run DotaService Distributed\n\nSee [docker/README.md](docker/README.md).\n\nTo run two dockerservice instances, one on port `13337` and one on `13338`, f.e. run:\n\n```sh\ndocker run -dp 13337:13337 ds\ndocker run -dp 13338:13337 ds\n```\n\nYou can run as many as you want, until you run out of ports or ip addresses. If you are wearing\nyour fancy pants, use Kubernetes to deploy gazillions.\n\n## Client Code\n\n```py\nfrom grpclib.client import Channel\nfrom protobuf.DotaService_grpc import DotaServiceStub\nfrom protobuf.DotaService_pb2 import Action\nfrom protobuf.DotaService_pb2 import Config\n\n# Connect to the DotaService.\nenv = DotaServiceStub(Channel('127.0.0.1', 13337))\n\n# Get the initial observation.\nobservation = await env.reset(Config())\nfor i in range(8):\n # Sample an action from the action protobuf\n action = Action.MoveToLocation(x=.., y=.., z=..)\n # Take an action, returning the resulting observation.\n observation = await env.step(action)\n```\n\nThis is very useful to provide an environment for reinforcement learning, and service aspect of it makes it\nespecially useful for distributed training. I am planning to provide a client python\nmodule for this (`PyDota`) that mimics typical OpenAI gym APIs. Maybe I won't even make PyDota\nand the gRPC client is enough.\n\n
\n\"dotaservice\n
\n\n### Requirements\n\n* Python 3.7\n* Unix: MacOS, Ubuntu. A dockerfile is also provided see: [docker/README.md](docker/README.md).\n\n### Installation\n\nInstalling from pypi:\n```sh\npip3 install dotaservice\n```\n\nFor development; installing from source:\n```sh\npip3 install -e .\n```\n\n(Optional) Compile the protos for Python (run from repository root):\n```sh\npython3 -m grpc_tools.protoc -I. --python_out=. --python_grpc_out=. --grpc_python_out=. dotaservice/protos/*.proto\n```\n\n# Notes\n\nMy dev notes: [NOTES.md](NOTES.md).\n\n---\n\n# Acknowledgements\n\n* OpenAI Dota crew\n* [Karpathy](http://karpathy.github.io/2016/05/31/rl/)\n* Jan Ivanecky\n* [Nostrademous](https://github.com/Nostrademous)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/TimZaman/DotaService", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dotaservice", "package_url": "https://pypi.org/project/dotaservice/", "platform": "", "project_url": "https://pypi.org/project/dotaservice/", "project_urls": { "Homepage": "https://github.com/TimZaman/DotaService" }, "release_url": "https://pypi.org/project/dotaservice/0.3.9/", "requires_dist": [ "grpclib", "protobuf", "grpcio-tools ; extra == 'dev'" ], "requires_python": ">=3.7", "summary": "DotaService is a service to play Dota 2 through gRPC", "version": "0.3.9" }, "last_serial": 4943021, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "675edc975451b58ae1451e5d489b5696", "sha256": "3ba22f476af5c4f69a26bfc3d9cc3dc8b5900cb33808cc39b1e7e1df3eff636d" }, "downloads": -1, "filename": "dotaservice-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "675edc975451b58ae1451e5d489b5696", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 38162, "upload_time": "2018-12-04T08:46:48", "url": "https://files.pythonhosted.org/packages/b3/1c/ce55992085cbd0267d7cc26f1f6e9c13170d8d72c5177dde40d543de90bf/dotaservice-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c06bf0284c441ebb02a2c596214ba45", "sha256": "f9d4cb357878fe7999f7aa1dcfbc6a76184479441c615d1bb91d2d384f41b146" }, "downloads": -1, "filename": "dotaservice-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9c06bf0284c441ebb02a2c596214ba45", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 36066, "upload_time": "2018-12-04T08:46:50", "url": "https://files.pythonhosted.org/packages/71/5f/9f402f053aa8e8144ac6824ee90df3b7bff907a18fceaaf7eba9c57058ac/dotaservice-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "47e5e2dac6dd86a78117928ca328e6c8", "sha256": "2f8d302ffaef0fc8eec33197368c14b1c0051e0b0a4b26d9cd2354f95e6889b6" }, "downloads": -1, "filename": "dotaservice-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "47e5e2dac6dd86a78117928ca328e6c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 39026, "upload_time": "2018-12-05T07:53:13", "url": "https://files.pythonhosted.org/packages/3b/56/cb2b9989507be5dd17d030727c0a7ef62664e43b2ee120ec16124c054bef/dotaservice-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36662cdc943490b8105f0e7b01693f30", "sha256": "27f7f84af8403cc3551674fe4abb7af571f53624d8900b9764488c21323ee1e1" }, "downloads": -1, "filename": "dotaservice-0.0.2.tar.gz", "has_sig": false, "md5_digest": "36662cdc943490b8105f0e7b01693f30", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 37011, "upload_time": "2018-12-05T07:53:15", "url": "https://files.pythonhosted.org/packages/8f/54/0c8c24807c59526fd13a1d8ce53d8f470b2ff1a7dd1143e0e0ea55aa5fb9/dotaservice-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5fb250631f84247391336898400b1409", "sha256": "80d139f74e963edfdf2df46b70b94c4e192f12aebcf7c099679911d20bda6229" }, "downloads": -1, "filename": "dotaservice-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5fb250631f84247391336898400b1409", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 39507, "upload_time": "2018-12-09T11:14:19", "url": "https://files.pythonhosted.org/packages/f6/6e/c327703173e7cc3a640f91072d765cfe40fb4fddacfddb48e4bf2fde8436/dotaservice-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "261a173f696c4bca829d47574e275ee2", "sha256": "c368f6e1b37795516bfb359fc5bdfefa0c25308eef1b9e4d4770bfefb8808612" }, "downloads": -1, "filename": "dotaservice-0.0.3.tar.gz", "has_sig": false, "md5_digest": "261a173f696c4bca829d47574e275ee2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 37465, "upload_time": "2018-12-09T11:14:21", "url": "https://files.pythonhosted.org/packages/15/ca/6216781070c612bfef41a92ba0f4f73b8287fc4b304dae402ba2fba513d4/dotaservice-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "1e1e5f316d8131ae3b3b72de6f392bc7", "sha256": "fac3f7321dc067a23bc20dd5676245a3f01d527f9b0478e9baf46fac174be97a" }, "downloads": -1, "filename": "dotaservice-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1e1e5f316d8131ae3b3b72de6f392bc7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 64639, "upload_time": "2018-12-12T02:11:02", "url": "https://files.pythonhosted.org/packages/7d/ba/4a5aae6ecdf9915f6d1e31440e06d3d96e574fcfdbe586c86572bdf6d305/dotaservice-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e63d342524ce30ae4c67b3d1fc67f89", "sha256": "1fda2735e9004d706db1772fbd26743f646abdc44a96bd54cc22ee31dda5f974" }, "downloads": -1, "filename": "dotaservice-0.0.4.tar.gz", "has_sig": false, "md5_digest": "5e63d342524ce30ae4c67b3d1fc67f89", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 61625, "upload_time": "2018-12-12T02:11:04", "url": "https://files.pythonhosted.org/packages/3f/1a/139d35af7c8f506852e1469ee17c9a3fa82b2c83b5354ef5e2372c5db423/dotaservice-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2dfde7a69dc3a1c7083523fdf61ab171", "sha256": "fa199f1c2bc0a88bdacad0d2d6017702b40b3dfa4a8f432629d2f443ea7e622d" }, "downloads": -1, "filename": "dotaservice-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2dfde7a69dc3a1c7083523fdf61ab171", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 65838, "upload_time": "2018-12-14T01:04:42", "url": "https://files.pythonhosted.org/packages/6e/f3/0a9a063f4d2520c0559682781914c5b819572b8fcb795e1fd27f9920d523/dotaservice-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76c9215f9a6b45a333811c26b2454a19", "sha256": "80c5d18ef3a4988ca335473139109554eabe3ff1d89849df016ca5e212bb7129" }, "downloads": -1, "filename": "dotaservice-0.0.5.tar.gz", "has_sig": false, "md5_digest": "76c9215f9a6b45a333811c26b2454a19", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 62773, "upload_time": "2018-12-14T01:04:44", "url": "https://files.pythonhosted.org/packages/68/97/f9f37994b3c35c41a6593f803794cb211834d263e7ce9bb3bc5582fa6ec3/dotaservice-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b9a82ad6ae2508b678f708a7c12eecd4", "sha256": "52df8debb6332472a21c4f7d68cda0aeb3b31c6a74c4033e943392202223b66b" }, "downloads": -1, "filename": "dotaservice-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b9a82ad6ae2508b678f708a7c12eecd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 65798, "upload_time": "2018-12-14T04:06:50", "url": "https://files.pythonhosted.org/packages/c0/f4/74bd9238c08da168d1bf049f8a5e90fb0a67d0094edf0c1d88955cf22614/dotaservice-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e2d4ad78d0bac57c89dca915e22dea3", "sha256": "71becd136ced5aec92e22cb45d65b929d93edc02545cc48a78ef92821c274def" }, "downloads": -1, "filename": "dotaservice-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9e2d4ad78d0bac57c89dca915e22dea3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 62754, "upload_time": "2018-12-14T04:06:51", "url": "https://files.pythonhosted.org/packages/99/b2/173f9a7522e9f69cc31d23cf43e6ba5483de8f84466e7e6bd9a56f57a2f5/dotaservice-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "bd43b46dfae87e3e3d3d58d44796867a", "sha256": "670c5e6a421969d6d62a591cfad8b8d02d7d202005589206347167a8f2ca4bcc" }, "downloads": -1, "filename": "dotaservice-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bd43b46dfae87e3e3d3d58d44796867a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 66033, "upload_time": "2018-12-15T03:16:59", "url": "https://files.pythonhosted.org/packages/3b/3e/985b967a24c46df9550bb4fc937c7ce20a30f0fabfcc98294468b9454832/dotaservice-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "290e6706405aa440ad4267c8d1dbc6b6", "sha256": "611391d5d49d347d41bb1815fe65fda3ceea3e435234ffc06d5527fca581d2ad" }, "downloads": -1, "filename": "dotaservice-0.1.1.tar.gz", "has_sig": false, "md5_digest": "290e6706405aa440ad4267c8d1dbc6b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 62961, "upload_time": "2018-12-15T03:17:01", "url": "https://files.pythonhosted.org/packages/89/c6/19124f59efa8ce1db2f0a1ee55f318e4e283d8a2e489e100cd73514a906c/dotaservice-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "16f39b68e2f01051d60982557de716c6", "sha256": "f5f53fadbc9a3cf88a7f625bc69e7b3704ab51bb07a4802ce202ddfa53a233f0" }, "downloads": -1, "filename": "dotaservice-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "16f39b68e2f01051d60982557de716c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 66100, "upload_time": "2018-12-15T23:43:29", "url": "https://files.pythonhosted.org/packages/ef/02/ab9ed2dcd3ccb8236130504e4916349bf16311200fc218afb0a5d67816bb/dotaservice-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a497dd7e3661c7f2fbf45cd80ca219b5", "sha256": "89f4229b490e5279785959471a18a7b53849c3636c2d07834f1815947e4c3d2a" }, "downloads": -1, "filename": "dotaservice-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a497dd7e3661c7f2fbf45cd80ca219b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 63080, "upload_time": "2018-12-15T23:43:31", "url": "https://files.pythonhosted.org/packages/d6/e9/f73ae3ec287328c4b5a5b557026c02700d26d87bff7e1f7460cbad5d850b/dotaservice-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bfa2a5e0c4d895908fc66a72cf27ccba", "sha256": "b4710ef748da07146c433d10249d79ab54c72e68e3c7ea1f2627b5af15d13942" }, "downloads": -1, "filename": "dotaservice-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bfa2a5e0c4d895908fc66a72cf27ccba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67609, "upload_time": "2018-12-17T07:18:44", "url": "https://files.pythonhosted.org/packages/19/3b/2b9fe0bcf9a94a28f340e6fd14c61f5ebd43086da859b2265188c3d102ee/dotaservice-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c4718f2d9bebec18a079ae2c16a767e", "sha256": "591a7c7ad630993c11fabeca34f9015373b05baa667140e54edc51a761a32812" }, "downloads": -1, "filename": "dotaservice-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7c4718f2d9bebec18a079ae2c16a767e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 63685, "upload_time": "2018-12-17T07:18:45", "url": "https://files.pythonhosted.org/packages/da/12/6aecb1cc9d76960832189455f36d02db9c74f75ae26adbafb3e08bcb7143/dotaservice-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "8635d0143eb494177c2ad82e5207480e", "sha256": "d51ab465c656de2a8aaa333c1f29e6dc999291fab63686ce025044ac78a5d0e7" }, "downloads": -1, "filename": "dotaservice-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8635d0143eb494177c2ad82e5207480e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 66979, "upload_time": "2018-12-19T05:22:05", "url": "https://files.pythonhosted.org/packages/6d/2b/36c722826613c8caec61fa517f5cae1ce28a9fad92add4c5e36239f974fc/dotaservice-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2be4b9302a9a95e8570818f677043d3", "sha256": "77cc780d391e84e04f06b19dca5a28b000d434ba23999e9c32f832e9947670e6" }, "downloads": -1, "filename": "dotaservice-0.1.4.tar.gz", "has_sig": false, "md5_digest": "c2be4b9302a9a95e8570818f677043d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 63496, "upload_time": "2018-12-19T05:22:11", "url": "https://files.pythonhosted.org/packages/3f/d6/d62fd014ab76b1936013ffb359be156ea41e2f8fe0291ca19b2acd14d337/dotaservice-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "e386a38aaa198a49a1401d4a4be47f35", "sha256": "e647b7a0ae65b00af9ca20123227810d50c6d67672c7f9f503693fdfa8fc5e55" }, "downloads": -1, "filename": "dotaservice-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e386a38aaa198a49a1401d4a4be47f35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67147, "upload_time": "2018-12-22T18:03:40", "url": "https://files.pythonhosted.org/packages/46/f6/e9e454fc4e96b4a1512ebc51644f246ca237dc430e84152459f5098094f6/dotaservice-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1854ca499dfaa2879e98725476fcbef", "sha256": "d297fa68bc97b7da248e1a73d85e1f67eecf149dc61c3cd8eabbcccf0e9678bb" }, "downloads": -1, "filename": "dotaservice-0.1.5.tar.gz", "has_sig": false, "md5_digest": "b1854ca499dfaa2879e98725476fcbef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 63656, "upload_time": "2018-12-22T18:03:42", "url": "https://files.pythonhosted.org/packages/18/72/f3f32359070584373ff9e18c1347f0e3c98082e670b6bdd2f101d31cbb31/dotaservice-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2118dfadffa1083830a754620eaca7d3", "sha256": "490865809d097437a6b5c342a54b1fb7b590cabc16eda3cc761614c0246b2b4d" }, "downloads": -1, "filename": "dotaservice-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2118dfadffa1083830a754620eaca7d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 68010, "upload_time": "2018-12-27T13:33:10", "url": "https://files.pythonhosted.org/packages/a9/5a/4fb189804921e4d0290dc281063c0a297e62ef1c89801a895cfea2fd74b9/dotaservice-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6deab40b3377f59dc1074994f1054c1", "sha256": "921c9c7d2eea6120dafb34bcae79b6264b929b49f4157acaa770901d83397070" }, "downloads": -1, "filename": "dotaservice-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a6deab40b3377f59dc1074994f1054c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 64515, "upload_time": "2018-12-27T13:33:12", "url": "https://files.pythonhosted.org/packages/a2/d9/4d128e8f5c15369c05c49800cb13573adbcd4fa38ddc08bcd28d6314eeb0/dotaservice-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ec9d538877b1ac89398ce83b396c7a53", "sha256": "41aac588680503548ccd3c8a2b2433cc19c096e6d063df191db7d5f0f6ba053f" }, "downloads": -1, "filename": "dotaservice-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ec9d538877b1ac89398ce83b396c7a53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67800, "upload_time": "2018-12-30T18:08:22", "url": "https://files.pythonhosted.org/packages/84/5b/df6986945945602d49b801fd285288ad61378bb6b074e498552ff0ab9628/dotaservice-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5558e05b596195d63bf6c850f01ef7cb", "sha256": "acd0cc40e02759a40abc0ae5f9e4dbb72cd38cf1bfdab37194fb75dbe3b19fb1" }, "downloads": -1, "filename": "dotaservice-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5558e05b596195d63bf6c850f01ef7cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 64328, "upload_time": "2018-12-30T18:08:27", "url": "https://files.pythonhosted.org/packages/11/77/9a23b24e9c920447cc88364bcda376ba93e012e0e630e37d5469bfada7bf/dotaservice-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "74241a9cc0bf7514e126536fb0d7353f", "sha256": "a6801edc234ae4b56d436f016e4fe4f813c73f6ccc7af1de762a4f717c1d5840" }, "downloads": -1, "filename": "dotaservice-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "74241a9cc0bf7514e126536fb0d7353f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67860, "upload_time": "2018-12-30T22:00:55", "url": "https://files.pythonhosted.org/packages/7c/3f/55feb8b3009fc549e4c9080e29f032b66f8d6a7abf0fc2d8e2d6bc9d27fd/dotaservice-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f43b1ede7c9ad7b44076524c0647f784", "sha256": "e1736694ec0746555eb267d2a1b551cd5c7499189d7c89d437f7f6b5a61c2a2a" }, "downloads": -1, "filename": "dotaservice-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f43b1ede7c9ad7b44076524c0647f784", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 64382, "upload_time": "2018-12-30T22:00:57", "url": "https://files.pythonhosted.org/packages/28/c1/c388f58395bccd77ff31c68ed827cf952e3a915f0dde4ce7bbe58a4eb909/dotaservice-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "604826e408d8c0e2385fdfc14ba13042", "sha256": "5f7a92aed462a8a1344ad8bdda4bb62b3864d824937c0ada71ab42a9ef26ab96" }, "downloads": -1, "filename": "dotaservice-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "604826e408d8c0e2385fdfc14ba13042", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67041, "upload_time": "2019-01-06T21:16:00", "url": "https://files.pythonhosted.org/packages/35/bb/fa98dde161df5d7e34d39c4abcd6bab676cd6667660b49875e57416f7e9c/dotaservice-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e2d86b78ebca7941e9e2d7fbeb26bd6", "sha256": "d1a4e3e173776021e6c031a9764d67cfc2d59bcf1f000fb7aaf006ec2b3e15c2" }, "downloads": -1, "filename": "dotaservice-0.3.2.tar.gz", "has_sig": false, "md5_digest": "3e2d86b78ebca7941e9e2d7fbeb26bd6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 64091, "upload_time": "2019-01-06T21:16:02", "url": "https://files.pythonhosted.org/packages/62/2c/c96fcdcf8f2373f064bb8d4214b2b2fe950a5b4db0a0f2285087f2a148ac/dotaservice-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "53c9ed484a1f19ae4422d05fbbc07b93", "sha256": "5744fbbb73dab2f1ea3bb4c225bce0884594d73043d48065b70dfc642b23d568" }, "downloads": -1, "filename": "dotaservice-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "53c9ed484a1f19ae4422d05fbbc07b93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 67045, "upload_time": "2019-01-10T08:16:38", "url": "https://files.pythonhosted.org/packages/47/4a/fdb2262cbbe61a03f9db708fb3917d347c9647403ec0ce989852bd41a766/dotaservice-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "451914fba26f1fdd3b648af1f88e847c", "sha256": "f2ad94725d2481c9f4fb992eab8a123ab58519a75c0f98daf23c6262ff1c0ffb" }, "downloads": -1, "filename": "dotaservice-0.3.3.tar.gz", "has_sig": false, "md5_digest": "451914fba26f1fdd3b648af1f88e847c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 64109, "upload_time": "2019-01-10T08:16:40", "url": "https://files.pythonhosted.org/packages/4a/21/0d1a24d8a8938be3946a3d18cec8da3bc56f44cac8a62e527aa3701a9e5d/dotaservice-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "c972b4c10c22bc372c23d86ef5e01340", "sha256": "20a5edc921a6a494caa935edadfffd66965c1ce0c7987f9637e33c17680116f7" }, "downloads": -1, "filename": "dotaservice-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c972b4c10c22bc372c23d86ef5e01340", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 68420, "upload_time": "2019-01-17T08:39:54", "url": "https://files.pythonhosted.org/packages/28/12/02d6e06707ed94c2da5346ca1055f7c549dd6a1f368568ee95b5a9be996c/dotaservice-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f974967c5b7867b848bec1e572804ec9", "sha256": "1869e0c6dc9ed92158da9c512b34033ca0c3354c0f7c2ae61f516cc75e784751" }, "downloads": -1, "filename": "dotaservice-0.3.4.tar.gz", "has_sig": false, "md5_digest": "f974967c5b7867b848bec1e572804ec9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 65175, "upload_time": "2019-01-17T08:39:56", "url": "https://files.pythonhosted.org/packages/fb/b7/cf19b3d9cc2caf19e53d7e4ec07d36320be0ab1d2361379b336a034541eb/dotaservice-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "5f47ab80a7d1e73f699332a54f1a3b64", "sha256": "cf8eaa73f18bb3766ea1fb60924ef39c0aec9a08dc0f9c88bccc1162fe00b3b9" }, "downloads": -1, "filename": "dotaservice-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "5f47ab80a7d1e73f699332a54f1a3b64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 69736, "upload_time": "2019-01-19T09:20:53", "url": "https://files.pythonhosted.org/packages/1e/58/9265027e74611c1358cbaacd1b6b9621b032a12b3c357a734b18f21a775e/dotaservice-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7a6d677a91b96af51a7a7524677aef4", "sha256": "ddcd4614a914f97104cfd703bb22a0062b4feb448557899415e1891c99aa0eea" }, "downloads": -1, "filename": "dotaservice-0.3.5.tar.gz", "has_sig": false, "md5_digest": "e7a6d677a91b96af51a7a7524677aef4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 65263, "upload_time": "2019-01-19T09:20:55", "url": "https://files.pythonhosted.org/packages/59/82/b98dce18f5b0b2fc44de0f47eec09b41aa837766439e80924fa4ce4dfd95/dotaservice-0.3.5.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "2e3fb0ed3df9bde757d0776549229a6a", "sha256": "11380314d4841ea5c9331f365b4f719c9ee91d40d1a132403c92a75e54794034" }, "downloads": -1, "filename": "dotaservice-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2e3fb0ed3df9bde757d0776549229a6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 70659, "upload_time": "2019-02-06T07:52:18", "url": "https://files.pythonhosted.org/packages/6b/d9/3169347773b4032481eb55be7788c22e93b7d0a0be2d95974662ca44c519/dotaservice-0.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7c3e11a815ce13acbeca7b652456fb2", "sha256": "d3e6fc48d5a989009a7b91cfd3b00d2dd8d3f0d2c921d7a53040e3277c80a454" }, "downloads": -1, "filename": "dotaservice-0.3.7.tar.gz", "has_sig": false, "md5_digest": "c7c3e11a815ce13acbeca7b652456fb2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 66232, "upload_time": "2019-02-06T07:52:20", "url": "https://files.pythonhosted.org/packages/25/8f/531c35c5ff2e8b952830a98fbd0b1d1f1c738c2bd5f5a05400dc0b8739ca/dotaservice-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "00165d0f2e1796157d8e29226319b834", "sha256": "2637e008e408d48021ae04a698b8e3cd0d0b43d1ad1cc84597363b52883d856c" }, "downloads": -1, "filename": "dotaservice-0.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "00165d0f2e1796157d8e29226319b834", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 75458, "upload_time": "2019-02-17T06:10:26", "url": "https://files.pythonhosted.org/packages/e0/4f/4168cfdf4eeabc711b03895e8383e299c8b2427d07990174495a1cac7c27/dotaservice-0.3.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5824e101277dc4f2ec69535cde9e057b", "sha256": "87f4030d2b367e772e17a19689f757e6259cc39f4b51375a131ee2f0a28df154" }, "downloads": -1, "filename": "dotaservice-0.3.8.tar.gz", "has_sig": false, "md5_digest": "5824e101277dc4f2ec69535cde9e057b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 71497, "upload_time": "2019-02-17T06:10:28", "url": "https://files.pythonhosted.org/packages/8b/5e/d4f9352cf486050a19b49745391cec5d5e0eba9cb62d2752f7145c1501a3/dotaservice-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "8e74465732e8ea782e46db24ecd9aba6", "sha256": "2c44794ee11e00f5e4e48d4e9b7d5791eb7811fdbc68c5cb23e72ddea9cd5a5b" }, "downloads": -1, "filename": "dotaservice-0.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "8e74465732e8ea782e46db24ecd9aba6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 75451, "upload_time": "2019-03-15T07:41:35", "url": "https://files.pythonhosted.org/packages/79/19/23ddb41bf9457766d52729374993dc6cadf4bb055a3d4fce35bd9007ba56/dotaservice-0.3.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3cb03d24bf342ac318ad0eff0b6f265", "sha256": "aef9c17ca9d069dcdba9f33f83abb6fe76cbabc91604071e9c8a7b3f81243c32" }, "downloads": -1, "filename": "dotaservice-0.3.9.tar.gz", "has_sig": false, "md5_digest": "b3cb03d24bf342ac318ad0eff0b6f265", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 71493, "upload_time": "2019-03-15T07:41:37", "url": "https://files.pythonhosted.org/packages/8e/69/6de5b245aef4dcbdfd69541d07fec6283985ab3723c9c5a03bc13c2d7203/dotaservice-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8e74465732e8ea782e46db24ecd9aba6", "sha256": "2c44794ee11e00f5e4e48d4e9b7d5791eb7811fdbc68c5cb23e72ddea9cd5a5b" }, "downloads": -1, "filename": "dotaservice-0.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "8e74465732e8ea782e46db24ecd9aba6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 75451, "upload_time": "2019-03-15T07:41:35", "url": "https://files.pythonhosted.org/packages/79/19/23ddb41bf9457766d52729374993dc6cadf4bb055a3d4fce35bd9007ba56/dotaservice-0.3.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3cb03d24bf342ac318ad0eff0b6f265", "sha256": "aef9c17ca9d069dcdba9f33f83abb6fe76cbabc91604071e9c8a7b3f81243c32" }, "downloads": -1, "filename": "dotaservice-0.3.9.tar.gz", "has_sig": false, "md5_digest": "b3cb03d24bf342ac318ad0eff0b6f265", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 71493, "upload_time": "2019-03-15T07:41:37", "url": "https://files.pythonhosted.org/packages/8e/69/6de5b245aef4dcbdfd69541d07fec6283985ab3723c9c5a03bc13c2d7203/dotaservice-0.3.9.tar.gz" } ] }