{ "info": { "author": "YANG Xuezhi", "author_email": "cstrikest@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: MacOS X", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: Chinese (Simplified)", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Artificial Intelligence" ], "description": "# Deep Reinforcement Learning \u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60\u8d2a\u5403\u86c7\u6e38\u620f DRL_Snakey\n\n\u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60\u8d2a\u5403\u86c7AI\u4e0e\u6e38\u620f\u73af\u5883\u3002\n\n[![Build Status](https://travis-ci.org/cstrikest/DRL_Snakey.svg?branch=master)](https://travis-ci.org/cstrikest/DRL_Snakey)\n![GitHub](https://img.shields.io/github/license/cstrikest/DRL_Snakey.svg)\n\n![PyPI - Downloads](https://img.shields.io/pypi/dm/DRL_Snakey.svg)\n![GitHub last commit](https://img.shields.io/github/last-commit/cstrikest/DRL_Snakey.svg)\n\n![PyPI](https://img.shields.io/pypi/v/DRL_Snakey.svg)\n![GitHub release](https://img.shields.io/github/release/cstrikest/DRL_Snakey.svg)\n\n[![Readme](https://img.shields.io/badge/Readme-Chinese-red.svg)](http://github.com/cstrikest/DRL_Snakey)\n[![Readme](https://img.shields.io/badge/Readme-Japanese-orange.svg)](http://github.com/cstrikest/DRL_Snakey/blob/master/README-JP.md)\n\n\n![\u6e38\u620f\u5f00\u59cb\u754c\u9762](https://github.com/cstrikest/ML_Snakey/blob/master/images/gamestart_image.png?raw=true)\n\n## \u73af\u5883\n\nPython\u7248\u672c: Python3.6\u6216\u4ee5\u4e0a\n\n### \u5916\u90e8\u4f9d\u8d56\n\n* pygame\n* tensorflow / tensorflow-gpu\n* h5py\n* numpy\n* matplotlib\n\n## \u6e38\u620f\u8bf4\u660e\n\n**\u6f14\u793a\u6587\u4ef6: Snakey_play.py**\n\n\u6b64\u6587\u4ef6\u4e0eDRL_Snakey\u5305\u65e0\u5173\u8054\uff0c\u4e0d\u542b\u6709\u4efb\u4f55AI\u90e8\u5206\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u4eba\u7c7b\u53ef\u4ee5\u6e38\u73a9\u7684\u6e38\u620f\u8fdb\u884c\u6f14\u793a\u3002\n\n\u5728\u4f7f\u7528\u5305\u4e4b\u524d\u53ef\u4ee5\u5148\u8fd0\u884c\u8be5\u811a\u672c\u67e5\u770b\u6e38\u620f\u6548\u679c\u3002\n\n### \u89c4\u5219\n\n\u4eba\u7c7b\u73a9\u5bb6\u6e38\u73a9\u65f6\uff0c\u6e38\u620f\u5185\u5bb9\u8bbe\u6709\u7b49\u7ea7\u5212\u5206\uff0c\u968f\u7740\u83b7\u53d6\u98df\u7269\u7684\u6570\u91cf\u4e0a\u5347\uff0c\u86c7\u524d\u8fdb\u7684\u901f\u5ea6\u4f1a\u53d8\u5feb\u3002\n\n\u540c\u65f6\u6bcf\u589e\u52a0\u4e00\u4e2a\u96be\u5ea6\u4f1a\u591a\u51fa\u73b0\u4e00\u4e2a\u89e6\u78b0\u5230\u4fbf\u4f1a\u6e38\u620f\u7ed3\u675f\u7684\u70b8\u5f39\u3002\uff08\u9ed8\u8ba4\u4e3a\u65e0\u70b8\u5f39\uff09\n\n\u6e38\u620f\u5728\u4e00\u4e2a200\u00d7200\u50cf\u7d20\u7684\u5e73\u9762\u4e2d\u8fd0\u884c\uff0c\u6bcf10\u00d710\u4e2a\u50cf\u7d20\u4f5c\u4e3a\u4e00\u4e2a\u5355\u5143\u3002\n\n\u6e38\u620f\u53f3\u4fa7\u662f\u4e00\u4e2a100\u00d7200\u50cf\u7d20\u7684\u4fe1\u606f\u9762\u677f\u3002\u4e3b\u8981\u7528\u5230\u7684\u4fe1\u606f\u4f1a\u5728\u53f3\u4fa7\u7ed9\u51fa\u3002\n\n\u4f7f\u7528\u65b9\u5411\u952e\u63a7\u5236\u79fb\u52a8\u65b9\u5411\uff0c\u4efb\u4f55\u65f6\u5019\u90fd\u53ef\u4ee5\u4f7f\u7528Q\u952e\u9000\u51fa\u3002\u6e38\u620f\u7ed3\u675f\u753b\u9762\u6309R\u91cd\u65b0\u5f00\u59cb\uff0c`S`\u5219\u4f1a\u8df3\u51fa\u8ba1\u5206\u677f\u3002\u6e38\u620f\u4e2d\u6309`P`\u952e\u53ef\u4ee5\u6682\u505c\u6e38\u620f\uff0c\u6682\u505c\u4e2dN\u952e\u53ef\u4ee5\u8ba9\u6e38\u620f\u5355\u6b65\u8fdb\u884c,`F`\u952e\u5207\u6362\u53ef\u89c6\u5316\u6a21\u5f0f\u3002\n\n\u9664\u5355\u72ec\u5b58\u5728\u7684\u6f14\u793a\u811a\u672c\u5916\uff0c\u6e38\u620f\u4e3b\u4f53\u4e3b\u8981\u7531**\u6e38\u620f\u903b\u8f91**\uff0c**\u56fe\u5f62\u5f15\u64ce**\uff0c**\u667a\u80fd\u4f53**\u4e09\u90e8\u5206\u7ec4\u6210\uff0c\u8fd0\u884c\u65f6\u53ef\u4ee5\u6839\u636e\u9700\u8981\u9009\u62e9\u662f\u5426\u52a0\u8f7d\u56fe\u5f62\u5f15\u64ce\u663e\u793a\u6e38\u620f\u754c\u9762\u3002\n\n### AI\u90e8\u5206\u8bf4\u660e\n\nAI\u6ca1\u6709\u6e38\u620f\u7684\u901f\u5ea6\u533a\u522b\u4e0e\u7b49\u7ea7\u533a\u5206\uff0c\u6682\u65f6\u65e0\u89c6\u70b8\u5f39\uff0c\u5e76\u4e14\u5728\u4f7f\u7528\u754c\u9762\u65f6\u9ed8\u8ba4\u4f7f\u7528\u6700\u5feb\u7684\u5237\u65b0\u901f\u5ea6\u3002\n\n\u672c\u9879\u76ee\u5185\u62e5\u6709\u6570\u4e2aAI\u811a\u672c\uff0c\u8be6\u7ec6\u89c1\u4e0b\u6587\u7684\u5404\u811a\u672c\u8bf4\u660e\u3002\n\n**\u6e38\u620f\u4e2d\u6309F\u952e\u53ef\u5207\u6362\u53ef\u89c6\u5316\u90e8\u5206\uff0cP\u952e\u6682\u505c\uff0cN\u952e\u5728\u6682\u505c\u65f6\u5355\u6b65\u8fdb\u884c\u6e38\u620f\u3002**\n\n### \u4f7f\u7528\u65b9\u6cd5\n\n\u9996\u5148import\n\n import DRL_Snakey as Snakey\n\n\u521b\u5efa\u6e38\u620f\u5bf9\u8c61\uff0c\u6b64\u6e38\u620f\u7c7b\u4ec5\u5305\u542b\u6e38\u620f\u89c4\u5219(DRL_Snakey.Game)\u3002\n\n game = Snakey.Game()\n\n\u6e38\u620f\u63a7\u5236agent\u5bf9\u8c61\u3002\u8fd9\u91cc\u4ee5\u7b80\u5355\u903b\u8f91\u7b97\u6cd5AI\u4e3e\u4f8b\u3002\n\n agent = Snakey.agent.Logic()\n\n\u6e38\u620f\u754c\u9762\u5bf9\u8c61\uff0c\u901a\u8fc7pygame\u6a21\u5757\u521b\u5efa\u53ef\u89c6\u7684\u6e38\u620f\u754c\u9762\u3002\n\n ui = Snakey.UI()\n\n\u901a\u8fc7UI\u7c7b\u7684show(game, agent)\u51fd\u6570\u521b\u5efa\u6e38\u620f\u7a97\u53e3\u3002\n\n ui.show(game, agent)\n\n\u9700\u8981\u8bad\u7ec3agent\u6a21\u578b\u6216\u5176\u4ed6\u7b49\u4e0d\u9700\u8981\u6e38\u620fUI\u754c\u9762\u65f6\uff0c\u4f7f\u7528\u4ee5\u4e0b\u811a\u672c\u63a7\u5236\u6e38\u620f\u6d41\u7a0b\u3002\n\n import DRL_Snakey as Snakey\n\n\n game = Snakey.Game()\n agent = Snakey.agent.Logic()\n\n while True:\n game.next_step(agent.get_next_direction(game))\n if game.deathflag:\n print(\"Gameover. score:\", game.ate)\n game.reset()\n\n## DRL_Snakey\u8bf4\u660e\n\nDRL_Snakey\u4e3b\u8981\u5206\u4e3a\u6e38\u620f\u73af\u5883`DRL_Snakey.core`\uff0c\u667a\u80fd\u4f53`DRL_Snakey.agent`\u4e0e`DRL_Snakey.utlis`\u7ec4\u4ef6\u4e09\u90e8\u5206\u7ec4\u6210\u3002\n\n\u5176\u4e2d`DRL_Snakey.core.Game`\u4e3a\u8d2a\u5403\u86c7\u6e38\u620f\u7684\u57fa\u672c\u884c\u52a8\u89c4\u5219\uff0c\u6b7b\u4ea1\u5224\u5b9a\u4ee5\u53ca\u5730\u56fe\u67e5\u770b\u7b49\u529f\u80fd\u3002\u53ef\u4ee5\u89c6\u4e3a\u6e38\u620f\u7684\u672c\u4f53\u3002\n`DRL_Snakey.core.UI`\u4e3a\u6e38\u620f\u754c\u9762\u663e\u793a\u76f8\u5173\u3002\u901a\u8fc7pygame\u5305\u6765\u521b\u5efa\u53ef\u89c6\u5316\u7684\u6e38\u620f\u754c\u9762\u3002\n\n`DRL_Snakey.agent`\u4e3a\u667a\u80fd\u4f53\u90e8\u5206\uff0c\u5176\u4e2d\u62e5\u6709\u4f17\u591aAI\u7c7b\u3002\u667a\u80fd\u4f53\u4f1a\u8bfb\u53d6\u6e38\u620f\u4e2d\u6bcf\u6b65\u7684\u72b6\u6001\uff0c\u5e94\u7528\u76f8\u5bf9\u7684\u51b3\u7b56\u65b9\u6cd5\n\u8fdb\u884c\u51b3\u7b56\uff0c\u5e76\u7ed9\u51fa\u53cd\u5e94\u3002\n\nAgent\u7c7b\u7684\u7ed3\u6784:\n\n class Agent(object):\n\tdef get_next_direction(self, Game):\n\t\t\"\"\"\n\t\t\u6839\u636e\u667a\u80fd\u4f53\u5bf9\u5f53\u524d\u73af\u5883\u7684\u5224\u65ad\u9009\u62e9\u4e0b\u4e00\u6b65\u524d\u8fdb\u7684\u65b9\u5411\u3002\n\t\t:return: \u65b9\u5411[\"W\", \"S\", \"A\", \"D\"]\n\t\t\"\"\"\n\t\tpass\n\n def button_K_e_pressed(self, Game):\n \"\"\"\n \u7ed9\u4e0d\u540c\u7684agnet\u9884\u7559\u7684\u81ea\u5b9a\u4e49\u51fd\u6570\uff0c\u7528\u6765\u8c03\u8bd5\u6216\u6570\u636e\u53ef\u89c6\u5316\u3002\n \"\"\"\n pass\n\n\tdef custom_function(self, Game):\n\t\t\"\"\"\n\t\t\u7ed9\u4e0d\u540c\u7684agnet\u9884\u7559\u7684\u81ea\u5b9a\u4e49\u51fd\u6570\uff0c\u7528\u6765\u8c03\u8bd5\u6216\u6570\u636e\u53ef\u89c6\u5316\u3002\n\t\t\"\"\"\n\t\tpass\n\n`DRL_Snakey.core.snake`\u4e2d\u8fd8\u6709\u4e00\u4e2a`Snake`\u7c7b\u6765\u8868\u793a\u6e38\u620f\u4e2d\u7684\u6bcf\u6761\u86c7\u3002\n\nps. \u8bf7\u591a\u591a\u7f16\u5199\u81ea\u5df1\u7684agent\u7136\u540epull request\n\n### DRL_Snakey.agent.Logic_AI.Logic\n\n\u4e00\u4e2a\u7b80\u5355\u7684\u6f14\u793a\u7528\u903b\u8f91AI\uff0c\u5b8c\u5168\u65e0\u89c6\u70b8\u5f39\uff0c\u53ea\u5403\u98df\u7269\u3002\u5177\u6709\u5341\u5206\u7b80\u5355\u7684\u81ea\u8eab\u8eb2\u907f\u7b97\u6cd5\u3002\n\n\u901a\u8fc7\u8ba1\u7b97\u86c7\u5934\u4f4d\u7f6e\u4e0e\u98df\u7269\u7684\u6c34\u5e73\u7ad6\u76f4\u5dee\uff0c\u4ee5\u4e4b\u5b57\u5f62\u63a5\u8fd1\u98df\u7269\u3002\u5e76\u4e14\u5728\u51b3\u7b56\u65b9\u5411\u524d\uff0c\u4f1a\u901a\u8fc7`Logic.next()`\u9884\u6d4b\n\u4e0b\u4e00\u6b65\u7684\u4f4d\u7f6e\uff0c\u5e76\u8c03\u7528`Logic.elude()`\u4f9d\u6b21\u5c1d\u8bd5\u5404\u4e2a\u65b9\u5411\u6765\u907f\u514d\u4e0e\u81ea\u5df1\u76f8\u649e\u3002\u4f46\u662f\u56e0\u4e3a\u53ea\u80fd\u9884\u6d4b\u4e0b\u4e00\u6b65\u7684\u5371\u9669\u60c5\u51b5\uff0c\n\u6240\u4ee5\u6b64AI\u5e76\u4e0d\u5177\u6709\u5f88\u9ad8\u667a\u80fd\uff0c\u53ea\u662f\u4f5c\u4e3a\u6f14\u793a\u4f7f\u7528\u3002\n\n\u6b64AI\u572820\u6b21\u5c1d\u8bd5\u4e2d\u6700\u597d\u6210\u7ee9\u4e3a68\uff0c\u5e73\u5747\u503c\u4e3a49.6\u3002\n\n![\u7b80\u6613AI\u6f14\u793a](https://github.com/cstrikest/ML_Snakey/blob/master/images/Logic_play.gif?raw=true)\n\n### DRL_Snakey.agent.DP_AI.DP\n\nDP(Dynamic Programming)\u52a8\u6001\u89c4\u5212-\u9a6c\u5c14\u79d1\u592b\u51b3\u7b56\u6cd5\u3002\n\n\u6bcf\u4e00\u6b65\u90fd\u901a\u8fc7\u8fed\u4ee3\u8d1d\u5c14\u66fc\u65b9\u7a0b\u8ba1\u7b97\u5f53\u524d\u5404\u70b9\u7684\u4ef7\u503c\uff0c\u521b\u5efa\u4ef7\u503c\u77e9\u9635\u3002\u5e76\u4e14\u671d\u5468\u56f4\u4ef7\u503c\u6700\u9ad8\u7684\u70b9\u524d\u8fdb\u3002\n\n\u6784\u9020\u51fd\u6570\u53c2\u6570\u8bf4\u660e:\n\n* `discount`: \u8870\u51cf\u7387\uff0c\u8d1d\u5c14\u66fc\u65b9\u7a0b\u4e2d\u5bf9\u4e8e\u975e\u5373\u65f6\u56de\u62a5\u7684\u8870\u51cf\u7387\u3002\n* `iteration`: \u63a8\u7b97\u4ef7\u503c\u77e9\u9635\u7684\u8fed\u4ee3\u6b21\u6570\u3002\n* `walk_reward`: \u6bcf\u8d70\u4e00\u6b65\u7684\u56de\u62a5\n* `eat_self_reward`: \u5403\u5230\u81ea\u5df1\u7684\u56de\u62a5\n* `food_reward`: \u5403\u5230\u98df\u7269\u7684\u56de\u62a5\n\n\u6309F\u6253\u5f00\u53ef\u89c6\u5316\u6a21\u5f0f\u540e\uff0c\u53ef\u89c2\u5bdf\u6bcf\u4e00\u6b65\u52a8\u4f5c\u6240\u57fa\u4e8e\u7684\u5404\u70b9\u4ef7\u503c\u56fe\u50cf\u3002\n\n\u5b9e\u9645\u64cd\u4f5c\u4e2d\u4f1a\u53d1\u73b0\uff0cAI\u53ef\u4ee5\u6839\u636e\u4ef7\u503c\u7684\u5224\u65ad\u907f\u5f00\u81ea\u8eab\uff0c\u5e76\u4e14\u5728\u98df\u7269\u73af\u5883\u6076\u52a3\u7684\u60c5\u51b5\u4e0b\u9009\u62e9\u5728\u5b89\u5168\u5730\u5e26\u8fc2\u56de\u7b49\u5f85\u3002\n\n\u6b64AI\u572820\u6b21\u5c1d\u8bd5\u4e2d\u6700\u597d\u6210\u7ee9\u4e3a119\uff0c\u5e73\u5747\u503c\u4e3a69.2\u3002\n\n![DP\u6f14\u793a](https://github.com/cstrikest/ML_Snakey/blob/master/images/DP_play.gif?raw=true)\n\n### DRL_Snakey.agent.MC_AI.MC\n\nMC(Monte-Calo)\u8499\u7279\u5361\u6d1b\u6cd5\u3002\n\n\u6bcf\u6b65\u5206\u522b\u57fa\u4e8e\u67d0\u4e2a\u7b56\u7565\u5faa\u73af\u8ba1\u7b97\u4e09\u4e2a\u53ef\u884c\u65b9\u5411\u7684\u5e73\u5747\u52a8\u4f5c\u4ef7\u503c\uff0c\u9009\u62e9\u5e73\u5747\u52a8\u4f5c\u4ef7\u503c\u6700\u9ad8\u7684\u4e00\u4e2a\u52a8\n\u4f5c\u3002\u672cAI\u91c7\u53d6\u7684\u57fa\u7840\u7b56\u7565\u662f`DRL_Snakey.agent.Logic_AI.Logic`\u3002\n\n\u6784\u9020\u51fd\u6570\u53c2\u6570\u8bf4\u660e:\n\n* `discount`: \u8870\u51cf\u7387\n* `iteration`: \u8fed\u4ee3\u6b21\u6570\n* `max_step`: \u9884\u6d4b\u6700\u5927\u6b65\u6570\n* `epsilon`: \u63a2\u7d22\u7387\n* `walk_reward`: \u6bcf\u6b65\u7684\u56de\u62a5\n* `eat_self_reward`: \u5403\u5230\u81ea\u5df1\u7684\u56de\u62a5\n* `food_reward`: \u5403\u5230\u98df\u7269\u7684\u56de\u62a5\n\n\u6b64AI\u572820\u6b21\u5c1d\u8bd5\u4e2d\u6700\u597d\u6210\u7ee9\u4e3a89\uff0c\u5e73\u5747\u503c\u4e3a50.5\u3002\n\n![MC\u6f14\u793a](https://github.com/cstrikest/ML_Snakey/blob/master/images/MC_play.gif?raw=true)\n\n## \u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60 DRL AI\n\n\u4f5c\u4e3a\u6df1\u5ea6\u5f3a\u5316\u5b66\u4e60\u5f88\u597d\u7684\u4e00\u4e2a\u4f8b\u5b50\uff0c\u8d2a\u5403\u86c7\u6e38\u620f\u6709\u7740\u5f88\u660e\u663e\u7684\u6570\u636e\u7ed3\u6784\u3002Environment\u5c31\u662f\u5730\u56fe\u6574\u4f53\uff0cAction\u662f\u4e0a\u4e0b\u5de6\u53f3\n\u56db\u79cd\u53ef\u4ee5\u91c7\u53d6\u7684\u884c\u52a8\uff0c\u65e0\u9700\u518d\u901a\u8fc7\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u8bfb\u53d6\u6e38\u620f\u753b\u9762\u3002\n\n\u672c\u9879\u76ee\u63d0\u4f9b\u4e86\u4e00\u4e2a\u6e38\u620f\u73af\u5883\uff0c\u4f9b\u4ed6\u4eba\u81ea\u884c\u7f16\u5199\u65b0\u7684agent\u6216\u62d3\u5c55\u6e38\u620f\u529f\u80fd\u3002\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/cstrikest/DRL_Snakey", "keywords": "", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "DRL-Snakey", "package_url": "https://pypi.org/project/DRL-Snakey/", "platform": "", "project_url": "https://pypi.org/project/DRL-Snakey/", "project_urls": { "Homepage": "https://github.com/cstrikest/DRL_Snakey" }, "release_url": "https://pypi.org/project/DRL-Snakey/1.2/", "requires_dist": [ "numpy", "tensorflow", "h5py", "pygame", "matplotlib" ], "requires_python": "", "summary": "A Deep Reinforcement Learning study package. With game environment.", "version": "1.2" }, "last_serial": 5361716, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "30f8fcc7231afe13a52eb31ea26bde5e", "sha256": "de776fc3a9c8bc425747489d59c3e70a9bfc0982bccb083a368880217ea41148" }, "downloads": -1, "filename": "DRL_Snakey-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "30f8fcc7231afe13a52eb31ea26bde5e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25659, "upload_time": "2019-05-22T11:06:51", "url": "https://files.pythonhosted.org/packages/69/a2/fd18eee02dacb4b1bcf282a25f7db4c6f5ab1af905f5d13ccf83fbf38bb6/DRL_Snakey-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d23074ccded72808af7f75dabdc2aa73", "sha256": "13ff49448dcce242d70d740196926d2a67277cfc0e804db9103ed12eb163de13" }, "downloads": -1, "filename": "DRL_Snakey-1.0.tar.gz", "has_sig": false, "md5_digest": "d23074ccded72808af7f75dabdc2aa73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13150, "upload_time": "2019-05-22T11:06:52", "url": "https://files.pythonhosted.org/packages/c8/55/736779e4adfd0c1fe120a48ac4bf653fc7abde6d8af7f8b23a78d8b17801/DRL_Snakey-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "85b08406291ce1f79837fcced5aa5c46", "sha256": "e261ab4eb15421ae45dfb45d4d70d4c61363d0d7a23bbc70949af76a5130e8a7" }, "downloads": -1, "filename": "DRL_Snakey-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "85b08406291ce1f79837fcced5aa5c46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25632, "upload_time": "2019-05-22T12:16:19", "url": "https://files.pythonhosted.org/packages/13/86/4a3f5da72f49c9e2dcd4a2179ef599d5e61e28e9c456755264d396e59915/DRL_Snakey-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34b606e382f7ba6839300df8afdf0e8c", "sha256": "987d384df5a9b8bb601c9d489b971ecbf5b8fb5208fc16a148879c6c00899511" }, "downloads": -1, "filename": "DRL_Snakey-1.1.tar.gz", "has_sig": false, "md5_digest": "34b606e382f7ba6839300df8afdf0e8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13034, "upload_time": "2019-05-22T12:16:21", "url": "https://files.pythonhosted.org/packages/e2/ec/ce3cdac97c7d08f08ccfb160192493a1e2d0624424cc7ee3827991363748/DRL_Snakey-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "2ce2ea1b0d879caacea0009ee43f957b", "sha256": "2b113ddd0c1b7bd39db03749ab6f6db583eec7b0a85dd3453f0e7d3dc277dfb1" }, "downloads": -1, "filename": "DRL_Snakey-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2ce2ea1b0d879caacea0009ee43f957b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26228, "upload_time": "2019-05-22T12:29:10", "url": "https://files.pythonhosted.org/packages/df/d0/7d4ac96541ff455e7e551536769c67afb3b1f40c1abfa95c650083174464/DRL_Snakey-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4b3feb8ee5c16bb566c23372d94648e", "sha256": "0e82dee4f3235a632f1b70ab174de97d4c5f6eb19d23cb3d8e0b1c8dbda4662b" }, "downloads": -1, "filename": "DRL_Snakey-1.1.1.tar.gz", "has_sig": false, "md5_digest": "c4b3feb8ee5c16bb566c23372d94648e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13378, "upload_time": "2019-05-22T12:29:12", "url": "https://files.pythonhosted.org/packages/d9/59/168aef3adaee820bde30bdb0d808835ee6384f692b3d26b68976012c1e41/DRL_Snakey-1.1.1.tar.gz" } ], "1.1.1.post0": [ { "comment_text": "", "digests": { "md5": "962263fcd6104e1db79e93c0e38caec3", "sha256": "82bad5e1d3caf3c76cf1a425b5a1776defcd4e7dfeeebf7cf334820f7a820bc3" }, "downloads": -1, "filename": "DRL_Snakey-1.1.1.post0-py3-none-any.whl", "has_sig": false, "md5_digest": "962263fcd6104e1db79e93c0e38caec3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61995, "upload_time": "2019-05-22T14:03:21", "url": "https://files.pythonhosted.org/packages/58/db/b81e9aad92700b18aa416ffb58350dc7248f672f57f42b24c3e946871ce8/DRL_Snakey-1.1.1.post0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9fdcf99e0e935f1f2f6b2a0aee2ae7c", "sha256": "e440d2118c8912d0a3b3cc8e8bbbafa8eb31d7a17e415f95a3dd4577aa12ae1b" }, "downloads": -1, "filename": "DRL_Snakey-1.1.1.post0.tar.gz", "has_sig": false, "md5_digest": "d9fdcf99e0e935f1f2f6b2a0aee2ae7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49187, "upload_time": "2019-05-22T14:03:24", "url": "https://files.pythonhosted.org/packages/e5/af/4dad82b573190197862cdf631c0d37e5285ba93f8c02f0ff940791d01a05/DRL_Snakey-1.1.1.post0.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "478398dda7f7f4e12b551b29665f0835", "sha256": "cb936c1f1ae9b97faa5b60c0df9f50db3759601c8df0061aba4b44291f5e4c6f" }, "downloads": -1, "filename": "DRL_Snakey-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "478398dda7f7f4e12b551b29665f0835", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65292, "upload_time": "2019-06-05T09:20:18", "url": "https://files.pythonhosted.org/packages/02/b3/c46f0b01337c87b0fc6d17f6a7f77ab8d0497feac6117cdcd63050ce997f/DRL_Snakey-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cf2e5b4cfee8396f03249e1e4f2bf7a", "sha256": "77e16c97c70628b2fcdce92539b8f9371a6195af14b5136830ca1a9cad10781a" }, "downloads": -1, "filename": "DRL_Snakey-1.2.tar.gz", "has_sig": false, "md5_digest": "6cf2e5b4cfee8396f03249e1e4f2bf7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51293, "upload_time": "2019-06-05T09:20:20", "url": "https://files.pythonhosted.org/packages/3c/c1/76074e73f712f365cb9ccc54463eacb2010a52e874ed09ceb15a5c69b3ee/DRL_Snakey-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "478398dda7f7f4e12b551b29665f0835", "sha256": "cb936c1f1ae9b97faa5b60c0df9f50db3759601c8df0061aba4b44291f5e4c6f" }, "downloads": -1, "filename": "DRL_Snakey-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "478398dda7f7f4e12b551b29665f0835", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65292, "upload_time": "2019-06-05T09:20:18", "url": "https://files.pythonhosted.org/packages/02/b3/c46f0b01337c87b0fc6d17f6a7f77ab8d0497feac6117cdcd63050ce997f/DRL_Snakey-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cf2e5b4cfee8396f03249e1e4f2bf7a", "sha256": "77e16c97c70628b2fcdce92539b8f9371a6195af14b5136830ca1a9cad10781a" }, "downloads": -1, "filename": "DRL_Snakey-1.2.tar.gz", "has_sig": false, "md5_digest": "6cf2e5b4cfee8396f03249e1e4f2bf7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51293, "upload_time": "2019-06-05T09:20:20", "url": "https://files.pythonhosted.org/packages/3c/c1/76074e73f712f365cb9ccc54463eacb2010a52e874ed09ceb15a5c69b3ee/DRL_Snakey-1.2.tar.gz" } ] }