{ "info": { "author": "v1ll4n", "author_email": "v1ll4n@villanch.top", "bugtrack_url": null, "classifiers": [], "description": "# g3ar \u6e17\u900f\u7f16\u7a0b\u5de5\u5177\u5305\uff1a \u6781\u901f\u6253\u9020\u6e17\u900f\u6d4b\u8bd5\u5de5\u5177\r\n\u5b8c\u7f8e\u652f\u6301\uff1a Python2 \r\n\u5355\u5143\u6d4b\u8bd5\u901a\u8fc7\uff1a Python3\r\n\r\n[![Build Status](https://travis-ci.org/VillanCh/g3ar.svg?branch=master)](https://travis-ci.org/VillanCh/g3ar)\r\n\r\n## \u529f\u80fd\u6982\u8ff0\r\n\r\n1. \u591a\u7ebf\u7a0b\u4e0e\u591a\u8fdb\u7a0b\u7ba1\u7406\uff1a\r\n\t* \u7ebf\u7a0b\u6c60\u4e0e\u591a\u7ebf\u7a0b\u8c03\u7528\u6781\u7b80\u5316\r\n\t* \u5f02\u6b65\r\n\t* Taskbulter \u5bf9\u8fdb\u7a0b\u5185\u7684\u7ebf\u7a0b\u76d1\u63a7\u4e0e\u7ba1\u7406\r\n* \u7206\u7834\u7528\u5b57\u5178\u7ba1\u7406\uff1a\r\n\t* \u652f\u6301\u4efb\u610f\u5927\u5c0f\u7684\u5b57\u5178\u8bfb\u53d6\uff08\u5927\u5b57\u5178\u4e0d\u518d\u53d1\u6101\uff09\r\n\t* \u8fdb\u5ea6\u4fdd\u5b58\r\n\t* \u83b7\u53d6\u5f53\u524d\u8fdb\u884c\u8fdb\u5ea6\r\n* \u65e5\u5fd7\u8bb0\u5f55\u5668\uff1a\r\n\t* \u65e5\u5fd7\u7ba1\u7406\u6781\u7b80\u5316\r\n\t* \u88c5\u9970\u5668\u63a5\u53e3\r\n\t* \u81ea\u52a8\u8ffd\u8e2a\u51fd\u6570\uff0c\u65e5\u5fd7\u8bb0\u5f55\u51fd\u6570\u7684\u8c03\u7528\uff0cTrace\uff0c\u548c\u5f02\u5e38\u60c5\u51b5\r\n\r\n## \u5b89\u88c5\r\n\r\n### By pip\r\n\r\n\t\tpip install g3ar\r\n\r\n### By easy_install\r\n\r\n easy_install g3ar\r\n\r\n### By Github\uff1a\r\n\r\n\r\n\t\tgit clone https://github.com/VillanCh/g3ar.git\r\n \tcd g3ar\r\n\t\tpip install -r requirements.txt\r\n\t\tpython setup.py install\r\n\r\n## \u5e2e\u52a9\u624b\u518c\u4e0e Quick Look\r\n\r\n\u67e5\u770b\u5f53\u524d repos \u4e0b `docs/build/html/index.html` \u83b7\u53d6\u66f4\u591a\u5e2e\u52a9\u4fe1\u606f\r\n\r\n### \u529f\u80fd\u7b80\u4ecb\r\n\r\nPython \u6e17\u900f\u5de5\u5177\uff0c\u6216\u8005\u6e17\u900f\u6d4b\u8bd5\u5de5\u5177\u6846\u67b6\u53ef\u80fd\u9700\u8981\u7528\u5230\u7684\u7ec4\u4ef6\uff1a\u5e26\u7ed3\u679c\u53cd\u9988\u7684\u7ebf\u7a0b\u6c60\uff0c\u652f\u6301\u5927\u5b57\u5178\u6d41\u5f0f\u8bfb\u53d6\r\n\u4ee5\u53ca\u8fdb\u5ea6\u4fdd\u5b58\u7684\u5b57\u5178\u89e3\u6790\u6a21\u5757\uff0c\u4ee5\u8fdb\u7a0b\u65b9\u5f0f\u542f\u52a8\u5e76\u52a0\u4ee5\u76d1\u89c6\u63a7\u5236\u4e0e\u7ed3\u679c\u53cd\u9988\u7684\u4efb\u52a1\u7ba1\u7406\u5668\uff0c\u5e26\u6709\u88c5\u9970\u5668\u63a5\u53e3\u7684\u65e5\u5fd7\r\n\u8bb0\u5f55\u5de5\u5177\uff0c\u9664\u6b64\u4e4b\u5916\uff0cutils \u8fd8\u5305\u542b\u4e86\u4e00\u4e9b\u6709\u7528\u7684\u5c0f\u5de5\u5177\uff1a\u6253\u5370\u5e26\u989c\u8272\u7684\u6587\u5b57\uff0c\u6307\u5b9a\u8def\u5f84\u7684 import \u5de5\u5177\uff0c\r\nip \u8ba1\u7b97\u5de5\u5177\uff0c\u66f4\u52a0\u65b9\u4fbf\u7684 Python \u81ea\u7701\u5de5\u5177\u3002\r\n\r\n#### \u7ebf\u7a0b\u6c60\u7ec4\u4ef6\r\n\r\n##### \u7b80\u4ecb\r\n\r\n\u7ebf\u7a0b\u6c60\u7684\u51fa\u73b0\u6781\u5927\u7684\u65b9\u4fbf\u4e86\u5bc6\u96c6\u578b\u4efb\u52a1\u7684\u7f16\u7a0b\uff0c\u5728\u7ebf\u7a0b\u6c60\u7ec4\u4ef6\u7684\u5e2e\u52a9\u4e0b\uff0c\u4e00\u4e2a\u4efb\u52a1\u5bc6\u96c6\u578b\u7684\u7a0b\u5e8f\u5c06\u4f1a\u6781\u5927\u88ab\u7b80\u5316\uff0c\r\n\u53ea\u9700\u8981\u7ef4\u62a4\u4e00\u4e2a\u7a33\u5b9a\u7684\u4efb\u52a1\u961f\u5217\u5e76\u4e14\u5b9a\u65f6\u4ece\u7ebf\u7a0b\u6c60\u7684\u7ed3\u679c\u961f\u5217\u4e2d\u83b7\u53d6\u4efb\u52a1\u53cd\u9988\u3002\r\n\r\n##### Quick Look\r\n\r\n```\r\nimport time\r\nfrom g3ar import ThreadPool\r\n\r\ndef func(arg1):\r\n #\r\n # Do something intersting\r\n #\r\n time.sleep(5)\r\n return arg1\r\n\r\npool = ThreadPool()\r\npool.start()\r\npool.feed(target_func=func, arg1=4)\r\nqueue = pool.get_result_queue()\r\nresult = queue.get()\r\nprint(result)\r\npool.stop()\r\n```\r\n\r\n\u8fd9\u4e2a\u6700\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u5c31\u662f\u6211\u4eec\u4f7f\u7528 ThreadPool \u505a\u7684\u4e00\u4e2a\u6700\u7b80\u5355\u7684\u4e8b\u60c5\uff0c\u4e5f\u5c31\u662f\u6267\u884c\u4e00\u4e2a\u51fd\u6570\uff0c\u7136\u540e\u518d\u5f02\u6b65\r\n\u6536\u96c6\u7ed3\u679c\u3002\r\n\r\n\u6211\u4eec\u5206\u522b\u6765\u8bb2\u89e3\u8fd9\u4e00\u6bb5\u5c0f\u4ee3\u7801\uff1a\r\n\r\n```\r\nfrom g3ar import ThreadPool\r\ndef func(arg1):\r\n #\r\n # Do something intersting\r\n #\r\n time.sleep(5)\r\n return arg1\r\n```\r\n\r\n\u5bfc\u5165\u6211\u4eec\u9700\u8981\u7684 ThreadPool \u7136\u540e\u5e76\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u3002\r\n\r\n```\r\n pool = ThreadPool()\r\n pool.start()\r\n```\r\n\u65b0\u5efa\u4e00\u4e2a ThreadPool \u5bf9\u8c61\uff0c\u7136\u540e\u5f00\u542f\u7ebf\u7a0b\u6c60\uff08start\uff09\u3002\u542f\u52a8\u7ebf\u7a0b\u6c60\u4e4b\u540e\uff0c\u7ebf\u7a0b\u6c60\u5bf9\u8c61\u4f1a\u5728\u5185\u90e8\u542f\u52a8\u82e5\u5e72\r\n\u4e2a\u7ebf\u7a0b\uff0c\u7136\u540e\u8fd9\u4e9b\u7ebf\u7a0b\u5c31\u4f1a\u8fdb\u5165\u7b49\u5f85\u72b6\u6001\u3002\u5f53\u4efb\u52a1\u961f\u5217\u4e2d\u51fa\u73b0\u4efb\u52a1\u7684\u65f6\u5019\uff0c\u7ebf\u7a0b\u5c31\u4f1a\u63d0\u53d6\u4efb\u52a1\u961f\u5217\u4e2d\u7684\u4efb\u52a1\uff0c\r\n\u7136\u540e\u6267\u884c\u76f8\u5e94\u7684\u4efb\u52a1\uff0c\u628a\u4efb\u52a1\u7684\u6267\u884c\u60c5\u51b5\u653e\u5728\u7ed3\u679c\u961f\u5217\u4e2d\r\n\r\n\r\n```\r\npool.feed(target_func=func, arg1=4)\r\n```\r\n\u4f20\u5165\u9700\u8981\u8fd0\u884c\u7684\u51fd\u6570\uff0c\u5e76\u4e14\u5728 target_func \u540e\u8f93\u5165\u5176\u4ed6\u7684\u53c2\u6570\uff0c\u4f8b\u5982\u5728 func \u4e2d\uff0carg1 \u662f func \u7684\u552f\r\n\u4e00\u53c2\u6570\uff0c\u56e0\u4e3a\u540e\u9762\u5fc5\u987b\u8981\u5199\u51fa\u5f62\u53c2\u7684\u540d\u79f0\u548c\u5f62\u53c2\u7684\u503c\u3002\r\n\r\n\r\n```\r\nqueue = pool.get_result_queue()\r\nresult = queue.get()\r\nprint(result)\r\npool.stop()\r\n```\r\n\r\n\r\n\u901a\u8fc7 pool.get_result_queue()\uff0c \u83b7\u53d6\u4e00\u4e2a Queue.Queue \u5bf9\u8c61\uff0c\u8fd9\u4e2a\u5bf9\u8c61\u662f Python \u5185\u7f6e\u7684\u5bf9\u8c61\uff0c\r\n\u6240\u4ee5\u4e0d\u505a\u8fc7\u591a\u7684\u8bf4\u660e\uff0c\u901a\u8fc7 queue.get() \u6765\u83b7\u53d6\u51fd\u6570\u6267\u884c\u7684\u7ed3\u679c\u3002\r\n\r\n\u5f53\u83b7\u53d6\u5230\u9700\u8981\u7684\u7ed3\u679c\u4e4b\u540e\uff0c\u901a\u8fc7 pool.stop() \u6765\u5173\u95ed\u7ebf\u7a0b\u6c60\u3002\r\n\r\n\u4f60\u4f1a\u53d1\u73b0\uff0c\u8fd9\u4e2a\u7ebf\u7a0b\u6c60\u4f7f\u7528\u8d77\u6765\u975e\u5e38\u7684\u7b80\u5355\uff0c\u4e8b\u5b9e\u4e0a\uff0c\u7b80\u5355\u5df2\u7ecf\u662f\u4e00\u5207\u4e86\u5bf9\u4e0d\u5bf9\uff1f\r\n\r\n#### \u5927\u5b57\u5178\u8bfb\u53d6\r\n\r\n\u5728\u8fdb\u884c Python \u6e17\u900f\u5de5\u5177\u7f16\u5199\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u7528\u5230\u5404\u79cd\u5404\u6837\u7684\u5b57\u5178\uff08\u5f53\u7136\u4e0d\u662f\u7528\u6765\u67e5\u751f\u8bcd\u7684\u5b57\u5178\uff09\uff0c\r\n\u6bd4\u5982\u4f60\u6709\u4e00\u4e2a 300MB \u7684\u5b57\u5178\uff0c\u4f60\u60f3\u7528\u5b83\u53bb\u8dd1\u5bc6\u7801\uff0c\u7136\u540e\u6574\u4e2a\u811a\u672c\u90fd\u9700\u8981\u5728\u77ed\u65f6\u95f4\u5185\u5b8c\u6210\uff0c\u8fd9\u4e2a\u65f6\u5019\u5e94\u8be5\u600e\u4e48\u529e\u5462\uff1f\r\n\r\n\u5f53\u7136\u5927\u5bb6\u76f4\u5230\u4f7f\u7528\u6587\u4ef6\u6d41\u53bb\u8bfb\u53d6\u662f\u6700\u597d\u4e0d\u8fc7\u7684\uff0c\u4f46\u662f\u5b9e\u9645\u4e0a\uff0c\u53ef\u80fd\u4f60\u6574\u5929\u90fd\u5728\u5fd9\u7740\u6e17\u900f\u6d4b\u8bd5\u7684\u4e1a\u52a1\u5e76\u6ca1\u6709\u592a\u591a\r\n\u53bb\u5173\u6ce8\u7f16\u7a0b\u65b9\u9762\u7684\u4e1c\u897f\uff0c\u90a3\u4e48\u4f60\u96be\u9053\u771f\u7684\u5c31\u90a3\u6837\u6574\u4e2a\u628a\u5b57\u5178\u52a0\u8f7d\u8fdb\u5185\u5b58\uff1f\u800c\u4e14\u8fd8\u5f88\u9ebb\u70e6\u505a\u5b57\u5178\u5206\u7247\u554a\uff0c\u8fdb\u5ea6\r\n\u4fdd\u5b58\u554a\u4e4b\u7c7b\u7684\u57fa\u7840\u6027\u5de5\u4f5c\u3002\u5b9e\u9645\u4e0a\uff0c\u8fd9\u4e9b\u5de5\u4f5c\uff0cg3ar \u90fd\u53ef\u4ee5\u66ff\u4f60\u5b8c\u6210\u5594\uff01\r\n\r\n```\r\nfrom g3ar import DictParser\r\n\r\ndparser = DictParser('bigdict.txt')\r\nfor i in dparser:\r\n #\r\n # Do What you want!\r\n #\r\n pass\r\n```\r\n\r\n\u770b\uff01\u5b9e\u9645\u7684\u4f7f\u7528\uff0c\u5c31\u8fd9\u4e48\u7b80\u5355\uff0c\u4f46\u662f\u7136\u540e\u5462\uff1f\u6211\u4eec\u8bbe\u60f3\u4e00\u4e9b\u590d\u6742\u7684\u573a\u666f\uff1a\u6211\u7684\u5b57\u5178\u5927\u6982\u8dd1\u4e86\u6709 2000 \u6761\uff0c\r\n\u7136\u540e\u4e34\u65f6\u6709\u4e8b\u60c5\uff0c\u6211\u9700\u8981\u6682\u505c\u4e0b\u6765\uff0c\u7136\u540e\u7b49\u6211\u5fd9\u5b8c\u4e86\u4e8b\u60c5\u63a5\u4e0b\u6765\u518d\u8dd1\u8fd9\u4e2a\u5b57\u5178\uff0c\u90a3\u4e48\u5e94\u8be5\u600e\u4e48\u505a\u5462\uff1f\u5f53\u7136\u662f\u6709\r\n\u597d\u529e\u6cd5\u5566\uff01DictParser \u63d0\u4f9b\u4e86\u57fa\u4e8e session \u63a7\u5236\u7684\u53ef\u9009\u8fdb\u5ea6\u4fdd\u5b58\u64cd\u4f5c\u3002\r\n\r\n\u9996\u5148\u6211\u4eec\u5047\u5b9a\u6211\u4eec\u6709\u4e00\u4e2a\u53eb demodict \u7684\u5b57\u5178\u6587\u4ef6::\r\n\r\n```\r\n6666123\r\n12341\r\n346\r\n245!#$%@#$^#\r\n325\r\n12341adfas\r\nasd\r\nre\r\nyq\r\ndahy\r\nar\r\nr\r\n34\r\nawe\r\ng\r\nda\r\nhaf\r\ndh\r\nad\r\ns\r\ndasdtdassd\r\n```\r\n\r\n\u9488\u5bf9\u8fd9\u4e00\u4e2a\u5b57\u5178\u6587\u4ef6\uff0c\u6211\u4eec\u9700\u8981\u8bfb\u53d6\u8fd9\u4e2a\u5b57\u5178\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\uff0c\u7136\u540e\u5e76\u4e14\u8fdb\u884c\u8fdb\u5ea6\u4fdd\u5b58\uff0c\u90a3\u4e48\u6211\u4eec\u5e94\u8be5\u600e\u4e48\u505a\u5462\uff1f\r\n\r\n##### TAKL IS CHEAP, LET ME SHOW YOU THE CODES!\r\n\r\n```\r\nfrom g3ar import DictParser\r\nfrom g3ar.utils.print_utils import print_bar\r\n\r\n#\r\n# \u521b\u5efa\u4e00\u4e2a DictParser, \u628a demosession \u4f5c\u4e3a session_id \u4f20\u5165 DictParser \u5bf9\u8c61\u4e2d\r\n#\r\ndparser = DictParser(filename='demodict', session_id='demosession')\r\n\r\n#\r\n# \u8bfb\u53d6\u524d\u5341\u884c\uff1a\u56e0\u4e3a DictParser \u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u8fed\u4ee3\u5668\uff0c\u6240\u4ee5\u53ef\u4ee5\u4f7f\u7528 foreach \u7684\u5f62\u5f0f\u4e5f\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528 next\r\n# \u53bb\u83b7\u53d6\u76f8\u5e94\u7684\u503c\r\n#\r\nprint_bar('GET 10 LINES')\r\nfor i in xrange(10):\r\n\tprint(dparser.next())\r\nprint_bar('END')\r\nprint()\r\n\r\n#\r\n# \u5f3a\u5236\u4fdd\u5b58\u5f53\u524d\u5b57\u5178\u8bfb\u53d6\u7684\u8fdb\u5ea6\r\n#\r\ndparser.force_save()\r\n\r\n#\r\n# \u5220\u9664\u5b57\u5178\uff08\u81ea\u52a8\u5173\u95ed\u6587\u4ef6\uff09\r\n#\r\ndel dparser\r\n\r\n#\r\n# \u91cd\u65b0\u521b\u5efa\u4e00\u4e2a DictParser\uff0c \u7136\u540e\u628a\u4e4b\u524d\u4f7f\u7528\u7684 session_id \u4f20\u5165\uff0c\u7136\u540e\u8bbe\u7f6e do_continue \u4e3a True\r\n# \u8fd9\u6837\u5f97\u5230\u7684\u4e00\u4e2a DictParser \u5c31\u662f\u4e00\u4e2a\u63a5\u7740\u4e0a\u4e00\u6b21\u8bfb\u5199\u5b57\u5178\u8fdb\u5ea6\u7684\u4e00\u4e2a\u5b57\u5178\u89e3\u6790\u5668\r\n#\r\ndparser_continue = DictParser(filename='demodict', session_id='demosession', do_continue=True)\r\n#\r\n# \u90a3\u4e48\u6211\u4eec\u73b0\u5728\u6765\u9a8c\u8bc1\u540e\u9762\u7684\u5b57\u5178\u5269\u4e0b\u7684\u5185\u5bb9\u662f\u4e0d\u662f\u7d27\u63a5\u7740\u6211\u4eec\u4e0a\u4e00\u6b21\u4fdd\u5b58\u7684\u8fdb\u5ea6\u4e4b\u540e\uff1f\r\n#\r\nprint_bar('GET NEXT ALL LINE')\r\nfor i in dparser_continue:\r\n\tprint(i)\r\n```\r\n\r\n\r\n\u7136\u540e\u4e0a\u9762\u5c31\u662f\u6211\u4eec\u5b8c\u6210\u4fdd\u5b58\u8fdb\u5ea6\u4f7f\u7528\u7684\u63a5\u53e3\uff0c\u6211\u4eec\u67e5\u770b\u4e00\u4e0b\u6700\u7ec8\u7684\u7ed3\u679c\u6765\u68c0\u67e5\u662f\u4e0d\u662f\u6309\u7167\u6211\u4eec\u7684\u671f\u671b\u8fdb\u884c\u5de5\u4f5c!\r\n\r\n```\r\n=============================GET 10 LINES=============================\r\n6666123\r\n12341\r\n346\r\n245!#$%@#$^#\r\n325\r\n12341adfas\r\nasd\r\nre\r\nyq\r\ndahy\r\n=================================END=================================\r\n()\r\n==========================GET NEXT ALL LINE==========================\r\nar\r\nr\r\n34\r\nawe\r\ng\r\nda\r\nhaf\r\ndh\r\nad\r\ns\r\ndasdtdassd\r\n```\r\n\r\n\u63a5\u4e0b\u6765\u6211\u4eec\u5bf9\u6bd4\u4e00\u4e0b\u4e4b\u524d\u6211\u4eec\u521b\u5efa\u7684\u5b57\u5178\u6587\u4ef6\uff0c\u53d1\u73b0\u786e\u5b9e\u5b9e\u73b0\u5b57\u5178\u7684\u8fdb\u5ea6\u4fdd\u5b58\u3002\u90a3\u4e48\u73b0\u5728\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\u5b83\r\n\u53bb\u5b8c\u6210\u4f60\u60f3\u8981\u7684\u64cd\u4f5c\u4e86\uff01\u6211\u89c9\u5f97\u4f60\u73b0\u5728\u53ef\u80fd\u5df2\u7ecf\u60f3\u5230\u5b83\u53ef\u4ee5\u7528\u5728\u54ea\u91cc\u4e86\uff01\r\n\r\n#### \u4efb\u52a1\u7ba1\u7406\u5668\r\n\r\n\u4efb\u52a1\u7ba1\u7406\u5668\u5176\u5b9e\u4e0d\u50cf\u662f\u7ebf\u7a0b\u6c60\u90a3\u6837\u9002\u5408\u9ad8\u5ea6\u5bc6\u96c6\u4efb\u52a1\u7684\u5904\u7406\uff0c\u56e0\u4e3a\u8fdb\u7a0b\u5f00\u9500\u663e\u7136\u8981\u6bd4\u7ebf\u7a0b\u5f00\u9500\u5927\u5f97\u591a\u554a\uff0c\u90a3\u4e48\r\n\u57fa\u4e8e\u8fd9\u4e9b\u57fa\u7840\u7684\u95ee\u9898\uff0c\u6211\u4eec\u600e\u4e48\u6837\u6765\u8ba4\u8bc6\u6211\u4eec g3ar \u7ed9\u5927\u5bb6\u63d0\u4f9b\u7684\u4efb\u52a1\u7ba1\u7406\u5668\u5462\uff1f\u5176\u5b9e\u4e5f\u5f88\u597d\u89e3\u91ca\uff0c\u5c31\u662f\u5047\u5982\u8bf4\r\n\u6211\u4eec\u9700\u8981\u542f\u52a8\u4e24\u4e2a\u7206\u7834\u7a0b\u5e8f\uff0c\u6bcf\u4e00\u4e2a\u7206\u7834\u7a0b\u5e8f\u4f1a\u542f\u52a8\u751a\u81f3\u51e0\u5341\u4e2a\u7ebf\u7a0b\u53bb\u8fdb\u884c\u5bc6\u7801\u7206\u7834\u7b49\u64cd\u4f5c\uff0c\u6bcf\u4e00\u4e2a\u7206\u7834\u7a0b\u5e8f\r\n\u90fd\u6709\u9ad8\u5bc6\u5ea6\u7684\u4efb\u52a1\uff0c\u5728\u8fd9\u4e9b\u4efb\u52a1\u4e2d\uff0c\u6211\u4eec\u4e3a\u8fd9\u4e9b\u4efb\u52a1\u542f\u52a8\u5f00\u9500\u76f8\u5bf9\u66f4\u4f4e\u7684\u7ebf\u7a0b\u3002\u5bf9\u4e8e\u6574\u4e2a\u7684\u7206\u7834\u7a0b\u5e8f\uff0c\u6211\u4eec\r\n\u5c31\u4ee5\u8fdb\u7a0b\u4e3a\u5355\u4f4d\u53bb\u7ba1\u7406\u3002\u8fd9\u6837\u505a\u6709\u4ec0\u4e48\u597d\u5904\u5462\uff1f\r\n\r\n1. \u53ef\u4ee5\u76d1\u63a7\u8fdb\u7a0b\u5185\u90e8\u7ebf\u7a0b\u7684\u8fd0\u884c\u72b6\u51b5\uff1a\u5982\u679c\u5173\u952e\u7ebf\u7a0b\u53d1\u751f\u4e86\u5f02\u5e38\uff0c\u53ef\u4ee5\u7acb\u5373\u53d1\u73b0\uff0c\u91c7\u53d6\u76f8\u5e94\u63aa\u65bd\u3002\r\n2. \u53ef\u4ee5\u5f3a\u884c\u7ed3\u675f\u4e00\u4e2a\u8fdb\u7a0b\uff0c\u7136\u800c\u5e76\u4e0d\u80fd\u5f3a\u884c\u7ed3\u675f\u4e00\u4e2a\u7ebf\u7a0b\u3002\r\n\r\n\u597d\u7684\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c31\u6765\u770b\u4e00\u4e0b\uff0c\u600e\u4e48\u6837\u4f7f\u7528\u8fd9\u4e9b\u4ee4\u4eba\u6fc0\u52a8\u7684\u529f\u80fd\u5427\uff1f\r\n\r\n```\r\n#\r\n# example for taskbulter\r\n#\r\nimport time\r\nfrom g3ar import TaskBulter\r\nfrom g3ar.utils.print_utils import print_bar\r\n\r\n#\r\n# \u521b\u5efa\u4e00\u4e2a TaskBulter \u7528\u4ee5\u51c6\u5907\u542f\u52a8\u65b0\u7684\u4efb\u52a1\r\n#\r\ntbr = TaskBulter()\r\n\r\n#\r\n# \u81ea\u5df1\u5b9a\u4e49\u4e00\u4e2a taskid \u7136\u540e\u5b9a\u4e00\u4e2a\u4efb\u52a1\u51fd\u6570\r\n#\r\ntaskid = 'testtask-id'\r\n#----------------------------------------------------------------------\r\ndef func(arg1, arg2='1'):\r\n \"\"\"\"\"\"\r\n time.sleep(2)\r\n return arg1, arg2\r\n\r\n#\r\n# \u4f20\u5165\u5fc5\u987b\u4efb\u52a1\u7684 id\uff0c \u4f20\u5165\u76ee\u6807\u51fd\u6570\uff0c\u76ee\u6807\u51fd\u6570\u7684\u53c2\u6570\r\n#\r\nprint_bar('start the task')\r\nprint(tbr.start_task(id=taskid, target=func, args=('arg1var',)))\r\n\r\n#\r\n# \u67e5\u770b\u4efb\u52a1\u6267\u884c\u7684\u72b6\u6001\r\n#\r\nprint_bar('watch the status')\r\nprint(tbr.get_tasks_status())\r\n\r\ntime.sleep(3)\r\n\r\n#\r\n# \u83b7\u53d6\u4efb\u52a1\u7ed3\u679c\r\n#\r\nprint_bar('get result')\r\nprint(tbr.get_result(taskid))\r\n```\r\n\r\n\u4f7f\u7528\u8d77\u6765\u5927\u6982\u4e5f\u4e0d\u4f1a\u6709\u4ec0\u4e48\u4e0d\u9002\uff0c\u975e\u5e38\u7684\u7b80\u5355\u548c\u7406\u6240\u5f53\u7136\u7684\u63a5\u53e3\uff0c\u6211\u60f3\u5173\u4e8e\u7ed3\u679c\u5927\u5bb6\u80af\u5b9a\u90fd\u5df2\u7ecf\u731c\u5230\u4e86\r\n\r\n```\r\n============================start the task============================\r\nNone\r\n===========================watch the status===========================\r\n{'testtask-id': {'now': {}, 'last': {}}}\r\n==============================get result==============================\r\n[{'state': True, 'exception': '', 'result': ('arg1var', '1')}]\r\n```\r\n\r\n\u8981\u8bf4\u660e\u7684\u5c31\u662f\u7ed3\u679c\u90e8\u5206\u5427\uff0c\u53ef\u80fd\u5927\u5bb6\u4f1a\u5947\u602a\uff0c\u4e3a\u4ec0\u4e48\u7ed3\u679c\u4e0d\u662f\u6211\u7684\u51fd\u6570\u76f4\u63a5\u8fd4\u56de\u7684\u7ed3\u679c\uff0c\u800c\u4e14\u8fd8\u88ab\u5305\u88c5\u4e86\u4e00\u5c42\r\n\u53c8\u4e00\u5c42\uff1f\r\n\r\n\u8fd9\u5f53\u7136\u4e0d\u662f\u56fe\u9ebb\u70e6\uff0c\u5728\u540e\u7eed\u7684\u8be6\u7ec6\u6587\u6863\u5173\u4e8e\u8fd9\u4e2a\u90e8\u5206\u4f1a\u8be6\u7ec6\u89e3\u91ca\uff0c\u7b80\u5355\u6765\u60f3\uff0c\u539f\u56e0\u5c31\u662f\uff1a\u5982\u679c\u4efb\u52a1\u6267\u884c\u7684\u8fc7\u7a0b\r\n\u4e2d\uff0c\u51fa\u73b0\u4e86\u95ee\u9898\uff0c\u90a3\u4e48\uff0c\u5982\u679c\u6309\u5e73\u65f6\u4ec5\u4ec5\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u5c31\u4f1a\u663e\u5f97\u975e\u5e38\u7a81\u5140\uff0c\u6709\u65f6\u5019\u6211\u4eec\u53c8\u6e34\u671b\u77e5\u9053\u5230\u5e95\u51fa\u73b0\u4e86\r\n\u4ec0\u4e48\u5f02\u5e38\u4fe1\u606f\uff0c\u8fd9\u6837\u7684\u8bdd\uff0c\u4e00\u4e2a\u683c\u5f0f\u5316\u7684\u8f93\u51fa\u5c31\u5f88\u6709\u5fc5\u8981\u4e86\u3002\r\n\r\n\u5728\u7ed3\u679c\u8f93\u51fa\u4e2d\uff0c\u6574\u4e2a\u7ed3\u679c\u662f\u5b58\u50a8\u5728\u4e00\u4e2a list \u91cc\u9762\u7684\uff0clist \u5185\u662f\u4e00\u4e2a\u53c8\u4e00\u4e2a\u7684 dict\uff0cstate \u4ee3\u8868\u7684\u662f\u8fd0\r\n\u884c\u7684\u7ed3\u679c\u662f\u4e0d\u662f\u6309\u7167\u671f\u671b\u8fd0\u884c\uff0c\u5982\u679c\u51fa\u73b0\u4e86\u4e0d\u671f\u671b\u7684\u4e00\u573a\uff0cstate \u5219\u4f1a\u4e3a\r\nFalse\uff0c\u4e8e\u6b64\u540c\u65f6 exception \u4f1a\u8bb0\u5f55\u51fa\u73b0\u7684\u5f02\u5e38\u662f\u4ec0\u4e48\uff1bresult \u5219\u8868\u793a\u51fd\u6570\u8fd4\u56de\u7684\u7ed3\u679c\u662f\u4ec0\u4e48\uff0c\u5f53\u7136\uff0c\r\n\u5982\u679c\u8fd4\u56de\u4e86\u591a\u4e2a\u7ed3\u679c\uff0c\u5c31\u4f1a\u51fa\u73b0\u591a\u4e2a dict\uff0c\u56e0\u4e3a\u5728\u6211\u4eec\u7684\u4efb\u52a1\u53ef\u80fd\u4e0d\u662f return \uff0c\u8fd8\u6709\u53ef\u80fd\u662f yield\u3002\r\n\n\n###Version: 0.5.7\r\n\u4fee\u590d\u7ebf\u7a0b\u6c60ex\u4e0d\u80fd\u5b89\u5168\u9000\u51fa\u7684\u5c0f\u95ee\u9898\r\n\r\n###Version: 0.5.5\r\n\u4fee\u590d\u7ebf\u7a0b\u6c60 inuse \u7684\u5c0f\u95ee\u9898\r\n\r\n###Version: 0.5.3\r\n\u5220\u9664\u591a\u4f59 DEBUG IO\r\n\r\n###Version: 0.5.2\r\n\u4fee\u590d bug\r\n\r\n###Version: 0.5.0\r\n\u589e\u52a0 ThreadPoolX \u4e00\u4e2a\u4ee5\u56de\u8c03\u4e3a\u57fa\u7840\u7684\u66f4\u52a0\u5f3a\u5927\u7684\u7ebf\u7a0b\u6c60\uff0c\u4fee\u590d\u4e00\u4e2a queue \u7684\u4f9d\u8d56\u95ee\u9898\r\n\r\n###Version: 0.5.0\r\n\u589e\u52a0 ThreadPoolX \u4e00\u4e2a\u4ee5\u56de\u8c03\u4e3a\u57fa\u7840\u7684\u66f4\u52a0\u5f3a\u5927\u7684\u7ebf\u7a0b\u6c60\r\n\r\n###Version: 0.4.3\r\n\u6dfb\u52a0\u4ece list set tuple \u548c string \u4e2d\u5efa\u7acb DictParser \u7684\u7c7b \uff08DictParserFromIter\uff09\r\n\r\n###Version: 0.4.0a\r\n\u5f53 TaskBulter \u6267\u884c\u4efb\u52a1\u5b8c\u6bd5\u7684\u65f6\u5019\uff0c\u5173\u95ed\u7ba1\u9053\r\n\r\n###Version: 0.3.7\r\n\u878d\u5408\u5b57\u5178\u7684\u8fdb\u5ea6\u603b\u503c\u9519\u8bef\r\n\r\n###Version: 0.3.6\r\nFix bugs!\r\n\r\n###Version: 0.3.1\r\nNew feature! \u878d\u5408\u5b57\u5178\uff01\r\n\r\n###Version: 0.2.7\r\nThreadPool \u4e0e DictParser \u7684\u7a33\u5b9a\u6027\u5f97\u5230\u6781\u5927\u63d0\u5347\r\n\r\n###Version: 0.2.2\r\nAdd get_result to TaskBulter\r\n\r\n###Version: 0.2.1\r\nAdd print_utils function! It 's great to print table easily!\r\n\r\n###Version: 0.2.0bx\r\nFix bugs and make g3ar stable\r\n\r\n###Version: 0.1.9\r\nFix A little bug in TaskBulter (result_pipe issue)\r\n\r\n###Version: 0.1.8\r\nAdd result_callback to TaskBulter\r\n\r\n###Version: 0.1.7\r\nAdd type filter to inspect_utils.get_fields(obj, [type, public])\r\n\r\n###Version: 0.1.6\r\nAdd inspect_utils.get_classes() to gain classes from module instance\r\n\r\n###Version: 0.1.5\r\nSupport Py3\r\n\r\n###Version: 0.0.7b1\r\nAdd print_utils (print_bar)\r\n\r\n###Version: 0.0.6b4\r\nFix bugs\r\n\r\n###Version: 0.0.6b1\r\nAdd utils to support some useful module(ip calc, python-ping(root needed!))\r\n\r\n###Version: 0.0.6\r\n4 Useful Class Added and completed\r\n\r\n###Version: 0.0.5b1\r\nAdd README.md & HISTORY.md in setup()\r\n\r\n###Version: 0.0.5\r\nFix Bugs and Add test.py to unittest\r\n\r\n###Version: 0.0.1alpha3\r\nAdd shortcut for every available and useful class.\r\n\r\n###Version: 0.0.1alpha2\r\nCheck import and fix little bugs XD.\r\n\r\n###Version: 0.0.1alpha\r\nChanges: initial & test install.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/VillanCh/g3ar", "keywords": "", "license": "BSD 2-Clause License", "maintainer": "", "maintainer_email": "", "name": "g3ar", "package_url": "https://pypi.org/project/g3ar/", "platform": "", "project_url": "https://pypi.org/project/g3ar/", "project_urls": { "Homepage": "https://github.com/VillanCh/g3ar" }, "release_url": "https://pypi.org/project/g3ar/0.5.7/", "requires_dist": null, "requires_python": "", "summary": "Python Coding Toolkit for Pentester.", "version": "0.5.7" }, "last_serial": 2955174, "releases": { "0.0.1a3": [ { "comment_text": "", "digests": { "md5": "ad6581a182dd2fa849b03379019249bf", "sha256": "09990780fdfd1b613abc48e7e630e45f759b6613b52a7ad3ccc7be2e3c4a9e48" }, "downloads": -1, "filename": "g3ar-0.0.1a3.tar.gz", "has_sig": false, "md5_digest": "ad6581a182dd2fa849b03379019249bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9530, "upload_time": "2016-12-20T15:05:02", "url": "https://files.pythonhosted.org/packages/8e/ce/dac37d0d0d404a6d83f3709592d25abe0485fcb03709acb3a66af69c0709/g3ar-0.0.1a3.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2ed010c6448328049cf5a8e9ffce5012", "sha256": "8def6a4bb99ee4b5d0db4f58685d29492e7b0a5ddf35abe1922ad48379903beb" }, "downloads": -1, "filename": "g3ar-0.0.5.tar.gz", "has_sig": false, "md5_digest": "2ed010c6448328049cf5a8e9ffce5012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14051, "upload_time": "2016-12-23T11:29:25", "url": "https://files.pythonhosted.org/packages/89/c5/05c61f694fef59934257b99693c0e4160ee3cc8d609646ad4a0dcbc88231/g3ar-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "b9ec3532ce69c764423d3eadabf87da8", "sha256": "cb37aed64b4c467a6938b6bd903ac01e6dd53abea9d98700123bac9ee7e07879" }, "downloads": -1, "filename": "g3ar-0.0.6.tar.gz", "has_sig": false, "md5_digest": "b9ec3532ce69c764423d3eadabf87da8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16526, "upload_time": "2016-12-23T16:15:55", "url": "https://files.pythonhosted.org/packages/03/d9/58d83496248ad345b2566cf623b50aaeb5da1de402706dde248fd2f8f9c9/g3ar-0.0.6.tar.gz" } ], "0.0.6b4": [ { "comment_text": "", "digests": { "md5": "0649284b93702df7f53398627c6e1946", "sha256": "597c07eed5d6f846f8ee3d04c71b7f8706559b4b6bdd23dcaedd5ef6cbbf094f" }, "downloads": -1, "filename": "g3ar-0.0.6b4.tar.gz", "has_sig": false, "md5_digest": "0649284b93702df7f53398627c6e1946", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47209, "upload_time": "2016-12-26T10:21:26", "url": "https://files.pythonhosted.org/packages/f1/8e/6850214a0532a8568e6bd5c603addd67cd9f31c4df7cbec52dc42abfb3eb/g3ar-0.0.6b4.tar.gz" } ], "0.0.7b1": [ { "comment_text": "", "digests": { "md5": "71a86289d5d84e2a7095ad04e5f986a7", "sha256": "e0b3d1933cd54687c97b019441c03b705068f19fe8edc6e9ddf9eaacf02e8ce0" }, "downloads": -1, "filename": "g3ar-0.0.7b1.tar.gz", "has_sig": false, "md5_digest": "71a86289d5d84e2a7095ad04e5f986a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47634, "upload_time": "2017-01-02T04:01:26", "url": "https://files.pythonhosted.org/packages/94/e4/a18a688e16ac8ab9b9f78b23ba0e9417f039615f6a3cb00addd6690e4b49/g3ar-0.0.7b1.tar.gz" } ], "0.0.7b2": [ { "comment_text": "", "digests": { "md5": "f91a3ea6833b9268f4c4a9cf5a49ab92", "sha256": "cc822b364603eba68f52d888b3212c7325b7b1313a85687b2c8e51f372d6bdb5" }, "downloads": -1, "filename": "g3ar-0.0.7b2.tar.gz", "has_sig": false, "md5_digest": "f91a3ea6833b9268f4c4a9cf5a49ab92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48617, "upload_time": "2017-01-02T07:30:20", "url": "https://files.pythonhosted.org/packages/04/d3/d75d3dd2de9eeeaf60d11bf878295ad6d3c1da0d863247b5c3545e1f5b44/g3ar-0.0.7b2.tar.gz" } ], "0.0.7b2-4": [ { "comment_text": "", "digests": { "md5": "58dbcc58c994b2bf6c6d5053daeb0bf5", "sha256": "0554ce010a0ebffb7153359ee6295389fd3fae9205124bcf281431f25073142f" }, "downloads": -1, "filename": "g3ar-0.0.7b2-4.tar.gz", "has_sig": false, "md5_digest": "58dbcc58c994b2bf6c6d5053daeb0bf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49209, "upload_time": "2017-01-02T16:22:40", "url": "https://files.pythonhosted.org/packages/2e/d1/27e78acdce2dba4afe648a0a9ead607a6e80cec89742adcb6b053d1d5b71/g3ar-0.0.7b2-4.tar.gz" } ], "0.0.7b2-5": [ { "comment_text": "", "digests": { "md5": "77a2e48eecc8872a87f5b6c4092e5f40", "sha256": "5ea0f7093daee1f6f43ea5df11b1879129f1ac9050d8b6a566235e95490da245" }, "downloads": -1, "filename": "g3ar-0.0.7b2-5.tar.gz", "has_sig": false, "md5_digest": "77a2e48eecc8872a87f5b6c4092e5f40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50081, "upload_time": "2017-01-03T07:35:27", "url": "https://files.pythonhosted.org/packages/e5/99/3a03cb933822f973bca58d6e6060a1397b17b9b78266ab3d7a22efa8e9ca/g3ar-0.0.7b2-5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b85b9d447006fbd87b156ff5551e5117", "sha256": "d543a4e7ab1bacab906916f486d67183612cab1c5ba2f27e728d837bf51ffd36" }, "downloads": -1, "filename": "g3ar-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b85b9d447006fbd87b156ff5551e5117", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49419, "upload_time": "2017-01-04T15:15:29", "url": "https://files.pythonhosted.org/packages/88/5f/703323e9a071f4d2b81de0562960f360c2a1c7fc2f0aae266181878a2d89/g3ar-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "aad4048f4f62fefcaa384a198aaf18a2", "sha256": "ea3fd8df0a07fbd760947f5cd1d2eb662e5f21676d3e332d7063ed680b53df59" }, "downloads": -1, "filename": "g3ar-0.1.1.tar.gz", "has_sig": false, "md5_digest": "aad4048f4f62fefcaa384a198aaf18a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49419, "upload_time": "2017-01-04T15:34:00", "url": "https://files.pythonhosted.org/packages/8f/06/abc36cb8cf6e0c042c980032055aca0cd35da1ed55a114547c4343fcff77/g3ar-0.1.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e9c355fc93f2fab56705e295cc47da73", "sha256": "a593b2df36dafd76ad37cf61c2c0e25dd3fdb2935f39379b759b3e331b154fb1" }, "downloads": -1, "filename": "g3ar-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e9c355fc93f2fab56705e295cc47da73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49423, "upload_time": "2017-01-04T15:43:31", "url": "https://files.pythonhosted.org/packages/01/a1/e2381f449531b5a1ed9ce4316f63ce55d0c0f39c9a205771cd8825b08c4a/g3ar-0.1.3.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "5d6daa1d206aa1f809f16e0980ecbdd7", "sha256": "41f380372267edd95d6d4be99b700e2c88e3940a56a81fb7ad24da4822d4de1a" }, "downloads": -1, "filename": "g3ar-0.1.5.tar.gz", "has_sig": false, "md5_digest": "5d6daa1d206aa1f809f16e0980ecbdd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48775, "upload_time": "2017-01-10T15:25:35", "url": "https://files.pythonhosted.org/packages/45/b8/c68a8ce6c268ff3040f7e40ff14169c172b79d4e03d8eaca2a71351772aa/g3ar-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d510b0c796ac9165142002f46673cb38", "sha256": "f8817abd6d07226502d1ee37be1adc3d457853b4f07e7623b9247e08aa104b40" }, "downloads": -1, "filename": "g3ar-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d510b0c796ac9165142002f46673cb38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48868, "upload_time": "2017-01-14T16:46:21", "url": "https://files.pythonhosted.org/packages/21/1e/1688d8b135c2d4458566d1f2b47b1d0190101d510442dda6e424182dd164/g3ar-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "fcb5131668fb29f31dfb4eda8d99c265", "sha256": "1090584b797e051dcec4f48b90b5e7a27a41330a17e2d8396c18286c1af4e5cf" }, "downloads": -1, "filename": "g3ar-0.1.7.tar.gz", "has_sig": false, "md5_digest": "fcb5131668fb29f31dfb4eda8d99c265", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48965, "upload_time": "2017-01-16T16:25:50", "url": "https://files.pythonhosted.org/packages/33/07/952cf26012972d940f262e91489e0dfa3ee2f1180cacdfda9ece2a458345/g3ar-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "5189a9036b16e14ac2ab024b58437f57", "sha256": "b9f3c8225f504f05e421d26815cb04ab2e9e4b2a1f27518f6b1f630bb068289f" }, "downloads": -1, "filename": "g3ar-0.1.8.tar.gz", "has_sig": false, "md5_digest": "5189a9036b16e14ac2ab024b58437f57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49552, "upload_time": "2017-01-17T14:48:08", "url": "https://files.pythonhosted.org/packages/b1/7d/15c814d906460bebaf0b9cf168e8195bfb5d1d998b869886c23e5948f0a4/g3ar-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "31d0943bf6437c4e22a79f171d1b3bbf", "sha256": "dfc37975db1ddca3101ff9c4fc67db72d88446587fd1cb318cd375f09acd6f92" }, "downloads": -1, "filename": "g3ar-0.1.9.tar.gz", "has_sig": false, "md5_digest": "31d0943bf6437c4e22a79f171d1b3bbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49584, "upload_time": "2017-01-18T03:43:10", "url": "https://files.pythonhosted.org/packages/8b/59/aab6e7d626f806530b6440eadb5295eed64b498f009d6028daf64a4ea914/g3ar-0.1.9.tar.gz" } ], "0.2.0b1": [ { "comment_text": "", "digests": { "md5": "f79b6f9cad21da13a7a486ad197436e3", "sha256": "622b262bde9d1b5480f40ee792d48fe8873793553523516f800ab6a6ac7648a6" }, "downloads": -1, "filename": "g3ar-0.2.0b1.tar.gz", "has_sig": false, "md5_digest": "f79b6f9cad21da13a7a486ad197436e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49596, "upload_time": "2017-01-18T12:27:59", "url": "https://files.pythonhosted.org/packages/07/3b/06ac235467c543f0d355c4312484703bd47006c602ad7e1f3878f38a4272/g3ar-0.2.0b1.tar.gz" } ], "0.2.0b2": [ { "comment_text": "", "digests": { "md5": "4ac3d8160f2e32449f865aea40333a33", "sha256": "668a9b7e4df4cb1cdc9e0784f2d080f8b49ae987e82e444969f0a9718a189ac5" }, "downloads": -1, "filename": "g3ar-0.2.0b2.tar.gz", "has_sig": false, "md5_digest": "4ac3d8160f2e32449f865aea40333a33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49626, "upload_time": "2017-01-18T12:49:17", "url": "https://files.pythonhosted.org/packages/6d/6c/0702689ec9ad5d06306ec3a79d7da81ef56b7aa9956ab4241d731ee825dc/g3ar-0.2.0b2.tar.gz" } ], "0.2.0b3": [ { "comment_text": "", "digests": { "md5": "78cefb5fb077795fec4a866f97d48cff", "sha256": "d1513e196fff280263acf7d6b7af8e361de376d11abce33d16e1ee0c2a4cbda0" }, "downloads": -1, "filename": "g3ar-0.2.0b3.tar.gz", "has_sig": false, "md5_digest": "78cefb5fb077795fec4a866f97d48cff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49593, "upload_time": "2017-01-18T13:22:48", "url": "https://files.pythonhosted.org/packages/63/b6/78757124a0ed817b0f560b8ded61dcb3768eea86c823f91926cb341542eb/g3ar-0.2.0b3.tar.gz" } ], "0.2.0b4": [ { "comment_text": "", "digests": { "md5": "75eda570ec68f01a5ca8bb8e9057bc04", "sha256": "3f01d76a2cc1ca99799f114ac30eb9833c1ccacda62cf5e4fe6b9b5234b2edfe" }, "downloads": -1, "filename": "g3ar-0.2.0b4.tar.gz", "has_sig": false, "md5_digest": "75eda570ec68f01a5ca8bb8e9057bc04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49806, "upload_time": "2017-01-18T14:10:16", "url": "https://files.pythonhosted.org/packages/44/4c/f8ad041f23cfc6525f18dfea4e595e5dac49365c7e8a220fc0652a57b9c9/g3ar-0.2.0b4.tar.gz" } ], "0.2.0b5": [ { "comment_text": "", "digests": { "md5": "5a504eb437da867bc49f2eaf71d4221d", "sha256": "825cfc834f6fbfee2d8050667546c1b63438db63c8581379acda631a4139d448" }, "downloads": -1, "filename": "g3ar-0.2.0b5.tar.gz", "has_sig": false, "md5_digest": "5a504eb437da867bc49f2eaf71d4221d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49899, "upload_time": "2017-01-19T03:55:02", "url": "https://files.pythonhosted.org/packages/6a/bd/8ee2f60c2f0431d0be40a38d6d486a968e24baf4a9b10be846fe3dfa35f8/g3ar-0.2.0b5.tar.gz" } ], "0.2.0b6": [ { "comment_text": "", "digests": { "md5": "0d5be530d81fe9abdfa88b87be14c85f", "sha256": "4712f9d56268e0c0782f414fc367de79955fd98a01f251aa0731fde6226d7ca1" }, "downloads": -1, "filename": "g3ar-0.2.0b6.tar.gz", "has_sig": false, "md5_digest": "0d5be530d81fe9abdfa88b87be14c85f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49899, "upload_time": "2017-01-19T04:00:30", "url": "https://files.pythonhosted.org/packages/7a/ad/22b805f83b53dea30eeb80ef4a512a4af561e91c5117c19d69ba3fce678d/g3ar-0.2.0b6.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "dcefdec3cff62dcbfbf5201d919f39a9", "sha256": "c1298556d7d7e1ea399919f5513585bd63c56b9cf3fd845d8e0ed4000b6955c8" }, "downloads": -1, "filename": "g3ar-0.2.1.tar.gz", "has_sig": false, "md5_digest": "dcefdec3cff62dcbfbf5201d919f39a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50143, "upload_time": "2017-02-09T14:25:23", "url": "https://files.pythonhosted.org/packages/88/dc/f2a4332e6cd0e7b75db2252a7826f7ad188a999a547858a0092e915f4122/g3ar-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "89ebc7d7f019a6138507b5c61ce01155", "sha256": "6c17dc6b892d14f7068a60bcd29eb1eed9de9fb844b99180ba8540427c427eff" }, "downloads": -1, "filename": "g3ar-0.2.2.tar.gz", "has_sig": false, "md5_digest": "89ebc7d7f019a6138507b5c61ce01155", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50208, "upload_time": "2017-02-11T08:31:26", "url": "https://files.pythonhosted.org/packages/e8/21/b6c05c9de8191e6d3a8c5a3913f9d20c68f0152fb4fa70ad101253b8ad9f/g3ar-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "422cfd820e753035689dd962b25f9e9d", "sha256": "0fcee3f7049878aed8077065d3642aec3e20a356b3b63b20e629de79a48940e5" }, "downloads": -1, "filename": "g3ar-0.2.3.tar.gz", "has_sig": false, "md5_digest": "422cfd820e753035689dd962b25f9e9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44296, "upload_time": "2017-02-25T04:07:03", "url": "https://files.pythonhosted.org/packages/cd/be/72152805e83fde98eb7223382f92ccf2a70a9d3ecdd082400108344668d2/g3ar-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "232d9fea4cbfbdbd73a2340216381f2e", "sha256": "78c995310cf8611f105509cba46ce98c266fc70befa1c9035076df976dc26f06" }, "downloads": -1, "filename": "g3ar-0.2.4.tar.gz", "has_sig": false, "md5_digest": "232d9fea4cbfbdbd73a2340216381f2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44289, "upload_time": "2017-02-25T04:41:38", "url": "https://files.pythonhosted.org/packages/30/0d/11ca8e5f3b76c206b01aa300fcba94003d930d7be1dbab0a807e39018c71/g3ar-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "2369a19f1fc1879968a46d0ff55d9ecb", "sha256": "3e6384f29b5bae9437db94c3e648e88e7711564f34996f7c3844bd1ee8ef0896" }, "downloads": -1, "filename": "g3ar-0.2.5.tar.gz", "has_sig": false, "md5_digest": "2369a19f1fc1879968a46d0ff55d9ecb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44644, "upload_time": "2017-02-25T05:21:53", "url": "https://files.pythonhosted.org/packages/a8/82/e4528c7af6649fb7611ba063690d2165afc80dd9e06c55410f4e8c99f4f9/g3ar-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "e2f2269d8d6a3fbf898db93fc09adda3", "sha256": "060a888b1d540c5129985758d07dd5751dcc16e2f323ff4693c5ed095c14ec2c" }, "downloads": -1, "filename": "g3ar-0.2.6.tar.gz", "has_sig": false, "md5_digest": "e2f2269d8d6a3fbf898db93fc09adda3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44686, "upload_time": "2017-02-26T02:23:19", "url": "https://files.pythonhosted.org/packages/57/d8/c653334a7e8b0f2b7b49d99f8ee773b69765a079f797472f3ab5baa97208/g3ar-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "34da32dcfa4afe9057516b928f4c2274", "sha256": "527a9a50ace03e9440a50a1544e2e6f8b2a3af0bec49c94229e6778391a98e80" }, "downloads": -1, "filename": "g3ar-0.2.7.tar.gz", "has_sig": false, "md5_digest": "34da32dcfa4afe9057516b928f4c2274", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44688, "upload_time": "2017-02-26T02:52:12", "url": "https://files.pythonhosted.org/packages/0d/0a/02b78c02240584c311bea9fd1e26ad4a2df5c693782c76a154d10d4ff536/g3ar-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "fa077790d78b28c2219653ec6662ff6a", "sha256": "8a0a22be0cc53558fd01215f4b8f6dead4ac36fdb2c23f495a5ef47e3b3e0756" }, "downloads": -1, "filename": "g3ar-0.2.8.tar.gz", "has_sig": false, "md5_digest": "fa077790d78b28c2219653ec6662ff6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49954, "upload_time": "2017-03-02T12:03:30", "url": "https://files.pythonhosted.org/packages/c0/28/6660e24d4c0261c86d1e62a9183913fdbc76c5fa5d518c430949fae127d3/g3ar-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "64a4ee8101699ae7a3c2d5dd699d4386", "sha256": "fc63f484eded023907a0be284e858d7ec8087d45e1a17a9edeec24464ecb0d65" }, "downloads": -1, "filename": "g3ar-0.2.9.tar.gz", "has_sig": false, "md5_digest": "64a4ee8101699ae7a3c2d5dd699d4386", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50106, "upload_time": "2017-03-07T06:33:33", "url": "https://files.pythonhosted.org/packages/a5/92/b90475e3e00e6a9c62dfa421f0d4f1dc56326d23a4f117825a634e9b659f/g3ar-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "d290b28921152dfcfa3c776cd011eecd", "sha256": "c9351d82acaef1d054ea11ebec46caa374010720741b4ff4d75fff689c8283e5" }, "downloads": -1, "filename": "g3ar-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d290b28921152dfcfa3c776cd011eecd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51150, "upload_time": "2017-03-09T07:44:47", "url": "https://files.pythonhosted.org/packages/0f/82/fab29c1ba14ef17de7bb67cfa8e0631aba2cbee718b832449b4e874b60f5/g3ar-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "988e6480bbb920bc0a9f6e5faa9b0305", "sha256": "ebd52064788c7e614580e4838887e7ec5bd5bca9d0f3dd8b2c39141512732e1a" }, "downloads": -1, "filename": "g3ar-0.3.1.tar.gz", "has_sig": false, "md5_digest": "988e6480bbb920bc0a9f6e5faa9b0305", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51201, "upload_time": "2017-03-09T11:26:46", "url": "https://files.pythonhosted.org/packages/5d/61/85ddb534129ad921c6c1049f1bc42ae544f6ca7514e2af0df7df4e0252b9/g3ar-0.3.1.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "f879e29bc0d3d13a1d7dde887805865b", "sha256": "d6d0997b8750068d6db853f6094d8dd4b43ccdca31889d883261133d8d18460f" }, "downloads": -1, "filename": "g3ar-0.3.5.tar.gz", "has_sig": false, "md5_digest": "f879e29bc0d3d13a1d7dde887805865b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51685, "upload_time": "2017-03-09T12:48:35", "url": "https://files.pythonhosted.org/packages/43/1b/a01eb88cb815c9af389ca0a12461cdc90f7fa9aeac05efe7d8cf12851bfd/g3ar-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "579258694c65c2d11e5e9e3f350268ed", "sha256": "136a39724230c5e3902ef3fe45a96976b38e95bffd781df80b35b06971092107" }, "downloads": -1, "filename": "g3ar-0.3.6.tar.gz", "has_sig": false, "md5_digest": "579258694c65c2d11e5e9e3f350268ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51703, "upload_time": "2017-03-09T16:30:30", "url": "https://files.pythonhosted.org/packages/08/b6/155edf688076bdac501f7e0e15a8809693d4aa5784e4ceb27f93c7a28c56/g3ar-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "f82990eafa2867e28d7dbd8b89f982d5", "sha256": "ed7ae0c5ace174071b132c7fc6ae593549806bbe13453178215c997b047b0a8c" }, "downloads": -1, "filename": "g3ar-0.3.7.tar.gz", "has_sig": false, "md5_digest": "f82990eafa2867e28d7dbd8b89f982d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51744, "upload_time": "2017-03-19T11:43:01", "url": "https://files.pythonhosted.org/packages/19/3b/3f62bffdb7ea4c391dff71a0d1dc994580c70f243ddeff194f10231d7174/g3ar-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "78c30f4c3ad65baf2ec6a28370508718", "sha256": "87071730a174edaa65a27b68c20ec074b85421438848c7b0387b6aee09701c1f" }, "downloads": -1, "filename": "g3ar-0.3.8.tar.gz", "has_sig": false, "md5_digest": "78c30f4c3ad65baf2ec6a28370508718", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51750, "upload_time": "2017-03-21T01:20:13", "url": "https://files.pythonhosted.org/packages/0f/a2/3f20eaa807a60d00477509f98f264e8b2a1032b0b91844f7755ae1e8b970/g3ar-0.3.8.tar.gz" } ], "0.4.0a0": [ { "comment_text": "", "digests": { "md5": "eedb775b6603ea56ae8f4a4473082022", "sha256": "db69b27468cafcea7da27bfdb0cb500bd5c4a6ac818dbbb4043e8d956d3565af" }, "downloads": -1, "filename": "g3ar-0.4.0a0.tar.gz", "has_sig": false, "md5_digest": "eedb775b6603ea56ae8f4a4473082022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51861, "upload_time": "2017-03-31T02:47:53", "url": "https://files.pythonhosted.org/packages/d5/01/8c56409e856115b0d5fed7ec1b12ab37d61ce182d44408fb8821bd09b949/g3ar-0.4.0a0.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "c428b650ca737dbc8bb6165eb4f5e6f3", "sha256": "332bfd37d55539d5b945e6f14aa0b49ef514ff43932d3adeebf19b816190fd78" }, "downloads": -1, "filename": "g3ar-0.4.3.tar.gz", "has_sig": false, "md5_digest": "c428b650ca737dbc8bb6165eb4f5e6f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52699, "upload_time": "2017-05-10T07:08:33", "url": "https://files.pythonhosted.org/packages/e7/bf/7b1e9fe683cbc66fbd95471e49d6109e506f08af808f52c43093c20a985d/g3ar-0.4.3.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "bbc8fe7197051bc6922acaddca851a2a", "sha256": "47a6ae7b4ebd3940629caad61ff3219fbda64c66e729f4654747fc58f9bea7d3" }, "downloads": -1, "filename": "g3ar-0.5.0.tar.gz", "has_sig": false, "md5_digest": "bbc8fe7197051bc6922acaddca851a2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56659, "upload_time": "2017-05-14T05:33:47", "url": "https://files.pythonhosted.org/packages/ab/dd/07d3bfbff5c3d21cf5cebb3ae191365c3e7e471d2431bd1888752b9fed14/g3ar-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "f922694db967d32980d34ceb55261479", "sha256": "ff8a920de880374113c30204432831760ad834cf69cfa6620e31a5dcfef09aec" }, "downloads": -1, "filename": "g3ar-0.5.1.tar.gz", "has_sig": false, "md5_digest": "f922694db967d32980d34ceb55261479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56710, "upload_time": "2017-05-14T05:42:25", "url": "https://files.pythonhosted.org/packages/9f/a9/87bf5d6cf44f309cd050d1fa1be6c0f90de01cd19d0f0ce138824ead438f/g3ar-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "6f0fdc7011b6807148e17f7691c7aad6", "sha256": "7bbef0e794f65cde9bb734d44f1550dc0dd0b4442d507db49ae5ae1c355f18cf" }, "downloads": -1, "filename": "g3ar-0.5.2.tar.gz", "has_sig": false, "md5_digest": "6f0fdc7011b6807148e17f7691c7aad6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57001, "upload_time": "2017-05-21T10:57:25", "url": "https://files.pythonhosted.org/packages/3e/72/26101df174010013f0bb796eab5a8841400009dbe6acfcce5e093df6ed5c/g3ar-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "2a4e461eb462e6be1dad5806f2ef82cc", "sha256": "f1b541f1d081665a8581aa45fa98c3294c45958836cbaf7ef5ff8a8057bac479" }, "downloads": -1, "filename": "g3ar-0.5.3.tar.gz", "has_sig": false, "md5_digest": "2a4e461eb462e6be1dad5806f2ef82cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57016, "upload_time": "2017-05-21T11:35:57", "url": "https://files.pythonhosted.org/packages/b5/86/2985fe8aaf7b01cc5b851eda262ab6881279f409e0884284b9f95ace1047/g3ar-0.5.3.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "072bbe6dd51cc99a83dc260711ec8610", "sha256": "869c732f868eb4d55c92ccb7cbdce3e75fb1e6c859d6fdc5b157a6d90e44695b" }, "downloads": -1, "filename": "g3ar-0.5.5.tar.gz", "has_sig": false, "md5_digest": "072bbe6dd51cc99a83dc260711ec8610", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57036, "upload_time": "2017-05-28T07:12:51", "url": "https://files.pythonhosted.org/packages/89/1c/9c85e5b759e9dfaacb9f726c80141a2082c373d02681176192539f25ca51/g3ar-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "6038b5ef2018a3d4b19b48e8d3fb60db", "sha256": "9406615e71a25a7f99d44e604c13c99ced222fe23344892fde16077548d0c91d" }, "downloads": -1, "filename": "g3ar-0.5.6.tar.gz", "has_sig": false, "md5_digest": "6038b5ef2018a3d4b19b48e8d3fb60db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57056, "upload_time": "2017-06-16T18:01:04", "url": "https://files.pythonhosted.org/packages/12/fa/a4ee2999ec87b285cdc61f9848a21338b2d4611e9179fec19845f4981b12/g3ar-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "c8a893784c50fce01b8ebf77fca2d195", "sha256": "435203185a46de4a257aa22afbccfab370069dbfeb17ccd25d4a77e92f6efe3a" }, "downloads": -1, "filename": "g3ar-0.5.7.tar.gz", "has_sig": false, "md5_digest": "c8a893784c50fce01b8ebf77fca2d195", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57068, "upload_time": "2017-06-16T18:06:51", "url": "https://files.pythonhosted.org/packages/f1/d3/f929775a969d01809166b54062e575d03ce7bf5bb13e602a742474544443/g3ar-0.5.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c8a893784c50fce01b8ebf77fca2d195", "sha256": "435203185a46de4a257aa22afbccfab370069dbfeb17ccd25d4a77e92f6efe3a" }, "downloads": -1, "filename": "g3ar-0.5.7.tar.gz", "has_sig": false, "md5_digest": "c8a893784c50fce01b8ebf77fca2d195", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57068, "upload_time": "2017-06-16T18:06:51", "url": "https://files.pythonhosted.org/packages/f1/d3/f929775a969d01809166b54062e575d03ce7bf5bb13e602a742474544443/g3ar-0.5.7.tar.gz" } ] }