{
"info": {
"author": "HaiFeng",
"author_email": "haifengat@vip.qq.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7"
],
"description": "#\n\n\n\n## \u6d77\u98cepy\n\n\u4e00\u6b3e\u5f00\u6e90\u7684\u7b56\u7565\u5f00\u53d1\u5e73\u53f0.\u4e3a\u7528\u6237\u63d0\u4f9b\u65b9\u4fbf\u6613\u7528\u7684\u7b56\u7565\u5f00\u53d1\u5de5\u5177.\n\n## \u6709\u95ee\u9898\u53cd\u9988\n\n\u5728\u4f7f\u7528\u4e2d\u6709\u4efb\u4f55\u95ee\u9898\uff0c\u6b22\u8fce\u53cd\u9988\u7ed9\u6211\uff0c\u53ef\u4ee5\u7528\u4ee5\u4e0b\u8054\u7cfb\u65b9\u5f0f\u8ddf\u6211\u4ea4\u6d41\n\n- \u90ae\u4ef6(hubert28@qq.com)\n- QQ: 24918700\n- Q\u7fa4:65164336\n\n## \u6d77\u98ceAT\u7684\u529f\u80fd\n\n- \u7b56\u7565\u7f16\u5199\n - \u63d0\u4f9b\u5e38\u7528\u6307\u6807\n - \u91c7\u7528HLOC\u8c03\u7528K\u7ebf\u6570\u636e\n- \u5386\u53f2\u6570\u636e\n - \u63d0\u4f9b\u6bcf\u65e5\u6570\u636e\n - \u63d0\u4f9b\u5b9e\u65f6\u6570\u636e\u5206\u949f\u7ea7\u670d\u52a1\n - \u63d0\u4f9b\u5206\u7b14\u6570\u636e(\u5185\u7f51) \n\n## \u8fd0\u884c\u73af\u5883\n\n### python >3.6\n\n- anaconda\n - \u5b89\u88c5\u8bf4\u660e [https://user.qzone.qq.com/24918700/blog/1483274137](https://user.qzone.qq.com/24918700/blog/1483274137)\n\n### talib \u6307\u6807\u5e93\n - windows [http://user.qzone.qq.com/24918700/blog/1486954718](http://user.qzone.qq.com/24918700/blog/1486954718)\n - linux [http://user.qzone.qq.com/24918700/blog/1483279805](http://user.qzone.qq.com/24918700/blog/1483279805)\n\n### hfpy \u5b89\u88c5\n`pip install hfpy`\n\n### \u4f7f\u7528\n\n- \u65b0\u5efa\u76ee\u5f55\n- \u521b\u5efamain.py\u5e76\u590d\u5236\u7c98\u8d34\u4e0b\u9762\u793a\u4f8b\u4e2dmain\u7684\u5185\u5bb9\n- \u521b\u5efastrategies\u5b50\u76ee\u5f55\n- \u5728strategies\u76ee\u5f55\u4e0b,\u521b\u5efaSMACross.py\u548cSMACross.yml\u6587\u4ef6\u3010\u6ce8\u610f\u5927\u5c0f\u5199\u3011,\u5e76\u590d\u5236\u7c98\u8d34\u793a\u4f8b\u4e2d\u5bf9\u5e94\u7684\u4ee3\u7801.\n- \u6267\u884c python main.py \n\n## \u5f00\u53d1\u5de5\u5177\n\n- vscode\n - windows [https://code.visualstudio.com/Download](https://code.visualstudio.com/Download)\n - linux [http://user.qzone.qq.com/24918700/blog/1506828997](http://user.qzone.qq.com/24918700/blog/1506828997)\n- pycharm\n - http://www.jetbrains.com/pycharm/download/index.html\n \n\n## \u914d\u7f6e\u8bf4\u660e\n\n- json\u8f6cyaml\n - 2018.10.01\u914d\u7f6e\u7531json\u6539\u4e3ayaml\n - [json \u8f6c yaml](https://www.json2yaml.com/)\n- \u9879\u76ee\u914d\u7f6e config.yml\n - \u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u65e0\u6b64\u6587\u4ef6\u65f6, \u9996\u6b21\u8fd0\u884c\u4f1a\u590d\u5236\u539f\u59cb\u914d\u7f6e\u5230\u6b64\u76ee\u5f55\u4e0b\n - ctp_dll_path \u6307\u5b9a\u63a5\u53e3dll\u8def\u5f84\n - stra_path \u7b56\u7565\u8def\u5f84[],\u53ef\u591a\u4e2a\n - \u6309\u6b64\u914d\u7f6e\u8bfb\u53d6\u76f8\u5e94\u7b56\u7565,\u6309ID\u52a0\u8f7d\u5bf9\u5e94\u7684\u53c2\u6570\n - \u539f\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684enable\u5168\u90e8\u653e\u5f03(20180227)\n- \u7b56\u7565\u914d\u7f6e\n - \u4e0e\u7b56\u7565\u6587\u4ef6\u540d\u540c\u540d\u7684.yml\u6587\u4ef6\n - \u914d\u7f6e\u53c2\u6570\u7ec4\n - \u5fc5\u987b\u6709ID\u6807\u8bc6(int)\n - TickTest: true\n - \u5206\u7b14\u6570\u636e\u56de\u6d4b,\u9700\u5904\u7406\u6570\u636e\u6e90\u53ca\u683c\u5f0f\n- \u6267\u884c\n - \u914d\u7f6e config.yml \u4e2d\u7684\u4fe1\u606f\n - python main.py\n\n## \u7b56\u7565\u7f16\u5199\n\n- \u7b56\u7565\u6587\u4ef6\u540d\u4e0e\u6587\u4ef6\u5185\u7684\u7c7b\u540d\u8981\u4e00\u81f4(\u533a\u5206\u5927\u5c0f\u5199)\n- \u793a\u4f8b\n - strategies/SMACross.py\n - strategies/Test.py\n - \u63a5\u53e3\u8c03\u7528\u793a\u4f8b\n\n### \u793a\u4f8b\n\n#### main.py\n```python\n#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n__title__ = '\u4e3b\u7a0b\u5e8f'\n__author__ = 'HaiFeng'\n__mtime__ = '20180822'\n\nfrom hfpy.atp import ATP\n\nif __name__ == '__main__':\n ATP().Run()\n while input().lower() != 'q':\n continue\n```\n\n#### config.yml\n```yaml\n---\nctp_config:\n # \u4e3a\u7a7a\u65f6\u4e0d\u767b\u5f55\n ctp_front: ''\n investor: '008105'\n password: '1'\n product_info: ''\n app_id: ''\n auth_code: ''\n # \u8ffd\u5355\u8bbe\u7f6e\n chasing:\n # n\u79d2\u540e\u4e0d\u6210\u4ea4\u5219\u64a4\u5355\u91cd\u53d1[0-\u4e0d\u8ffd\u5355]\n wait_seconds: 3\n # \u8d85\u4ef7\u91cd\u53d1n\u4e2apricetick\n offset_ticks: 2\n # \u91cd\u53d1\u6b21\u6570,n\u6b21\u91cd\u53d1\u540e\u4ecd\u672a\u6210\u4ea4\u5219[\u677f\u4ef7\u53d1\u5355]\n resend_times: 3\n # ctp\u524d\u7f6e\u914d\u7f6e\n fronts:\n sim_now:\n trade: tcp://180.168.146.187:10000\n quote: tcp://180.168.146.187:10010\n broker: '9999'\n ebf:\n trade: tcp://192.168.52.4:41205\n quote: tcp://192.168.52.4:41213\n broker: '6000'\n# \u6570\u636e\u6e90 - zmq\u914d\u7f6e\nzmq_config: tcp://broadcast.eicp.net:55881\n# \u5f00\u5173\nonoff:\n # \u662f\u54267*24\n running_as_server: true\n # \u662f\u5426\u53d1\u9001\u59d4\u6258\n real_order_enable: false\n # \u4e00\u6839K\u7ebf\u53ea\u53d1\u9001\u4e00\u6b21\u6307\u4ee4\n single_order_one_bar: true\n # \u662f\u5426\u6253\u5370\u884c\u60c5\u65f6\u95f4\n show_tick_time: true\n# \u7b56\u7565\u8def\u5f84\u914d\u7f6e\nstra_path:\n # \u8def\u5f84\n strategies:\n # \u7b56\u7565\u6587\u4ef6\u540d\n SMACross:\n # \u7b56\u7565\u914d\u7f6e\u53c2\u6570ID\n - 119\n```\n\n#### SMACross.py\n```python\n#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n__title__ = ''\n__author__ = 'HaiFeng'\n__mtime__ = '2016/8/16'\n\n- talib \u5b89\u88c5\n - windows [http://user.qzone.qq.com/24918700/blog/1486954718](http://user.qzone.qq.com/24918700/blog/1486954718)\n - linux [http://user.qzone.qq.com/24918700/blog/1483279805](http://user.qzone.qq.com/24918700/blog/1483279805)\n\"\"\"\nimport talib\nfrom hfpy.data import Data\nfrom hfpy.bar import Bar\nfrom hfpy.strategy import Strategy\nimport numpy as np\n\n\nclass SMACross(Strategy):\n\n def __init__(self, jsonfile):\n super().__init__(jsonfile)\n self.p_ma1 = self.Params['MA1']\n self.p_ma2 = self.Params['MA2']\n self.p_lots = self.Params['Lots']\n\n def OnBarUpdate(self, data=Data, bar=Bar):\n if len(self.C) < self.p_ma2:\n return\n\n # print('{0}-{1}'.format(self.D[-1], self.C[-1]))\n ma1 = talib.SMA(np.array(self.C, dtype=float), self.p_ma1)\n ma2 = talib.SMA(np.array(self.C, dtype=float), self.p_ma2)\n\n self.IndexDict['ma5'] = ma1\n self.IndexDict['ma10'] = ma2\n\n if self.PositionLong == 0:\n if ma1[-1] >= ma2[-1] and ma1[-2] < ma2[-2]:\n if self.PositionShort > 0:\n self.BuyToCover(self.O[-1], self.p_lots, '\u4e70\u5e73')\n self.Buy(self.O[-1], self.p_lots, '\u4e70\u5f00')\n elif self.PositionShort == 0:\n if ma1[-1] <= ma2[-1] and ma1[-2] > ma2[-2]:\n if self.PositionLong > 0:\n self.Sell(self.O[-1], self.p_lots, '\u5356\u5e73')\n self.SellShort(self.O[-1], self.p_lots, '\u5356\u5f00')\n\n```\n\n#### SMACross.yml\n\n```yaml\n---\n# ID\u7528\u4e8e\u533a\u5206\u4e0d\u540c\u7b56\u7565\u5b9e\u4f8b\u7684\u59d4\u6258\n- \n ID: 119\n BeginDate: 20180901\n TickTest: false\n # \u53ef\u901a\u8fc7\u589e\u52a0Data\u5b9e\u73b0\u591a\u5408\u7ea6\u591a\u5468\u671f\u5f15\u7528\n Datas:\n -\n Instrument: j1901\n IntervalType: Minute\n Interval: 5\n Params:\n Lots: 1\n MA1: 10\n MA2: 20\n- \n ID: 120\n BeginDate: 20180901\n Datas:\n - \n Instrument: rb1901\n IntervalType: Minute\n Interval: 5\n Params:\n Lots: 1\n MA1: 5\n MA2: 60\n```\n\n#### Test.py\n```python\n# !/usr/bin/python\n# -*- coding: utf-8 -*-\n\"\"\"\n__title__ = ''\n__author__ = 'HaiFeng'\n__mtime__ = '2017/11/16'\n\"\"\"\n\nfrom hfpy.strategy import Strategy\nfrom hfpy.data import Data\nfrom hfpy.bar import Bar\n\n\nclass Test(Strategy):\n ''''''\n\n def __init__(self, jsonfile=''):\n super().__init__(jsonfile)\n self.ordered = False\n self.closed = False\n self.oid = 0\n \n def OnBarUpdate(self, data=Data, bar=Bar):\n if self.Tick.Instrument == '':\n return\n # print(self.Datas[0].Tick.UpdateTime[-2:])\n if self.Tick.UpdateTime[-2:] == '00' or self.Tick.UpdateTime[-2:] == '30':\n if self.ordered:\n self.ordered = False\n else:\n self.ordered = True\n # self.ReqOrder(self.Instrument, DirectType.Buy, OffsetType.Open, self.Tick.AskPrice, 1)\n # self.ReqOrder(self.Tick.Instrument, DirectType.Buy, OffsetType.Open, self.Tick.BidPrice, 1)\n self.Sell(self.Tick.BidPrice, 1, 'close long')\n\n print('1 last order == ', self.GetLastOrder())\n print('1 order id == ', self.oid)\n '''\n if self.Tick.UpdateTime[-2:] == '05' or self.Tick.UpdateTime[-2:] == '35':\n if self.closed:\n self.closed = False\n else:\n self.closed = True\n self.Sell(self.O[0], 1, '')\n print(self.PositionLong)\n print('all:{0},last:{1},notfill:{2}'.format(len(self.GetOrders()), self.GetLastOrder(), len(self.GetNotFillOrders())))\n '''\n\n # def OnOrder(self, order=OrderField()):\n # \"\"\"\u59d4\u6258\u54cd\u5e94\"\"\"\n # print('\u59d4\u6258\u53cd\u5e94')\n # self.oid = self.GetLastOrder().OrderID\n\n # print('last order == ', self.GetLastOrder())\n # print('order id == ', self.oid)\n # print('cancel orderid == ', order.OrderID)\n # self.ReqCancel(self.oid)\n\n # #print('strategy order')\n # # print(order)\n\n # def OnTrade(self, trade=TradeField()):\n # \"\"\"\u6210\u4ea4\u54cd\u5e94\"\"\"\n # print('\u6210\u4ea4\u53cd\u5e94')\n # print('strategy trade')\n # print(trade)\n\n # def OnCancel(self, order):\n # \"\"\"\u64a4\u5355\u54cd\u5e94\"\"\"\n # print('\u626f\u6de1\u53cd\u5e94')\n # print('\u6240\u64a4\u5355\u8d44\u6599 \uff1a', order)\n\n # #print('strategy cancel')\n # # print(order)\n\n # def OnErrOrder(self, order=OrderField(), info=InfoField()):\n # \"\"\"\u59d4\u6258\u9519\u8bef\"\"\"\n # print('\u59d4\u6258\u9519\u8bef')\n # print('strategy err order')\n # print(order)\n\n # def OnErrCancel(self, order=OrderField(), info=InfoField()):\n # \"\"\"\u64a4\u5355\u9519\u8bef\"\"\"\n # print('\u64a4\u5355\u9519\u8bef')\n # print('strategy err cancel')\n # print(order)\n\n```\n\n#### Test.yml\n```yaml\n---\n-\n ID: 100\n BeginDate: 20181010\n Datas:\n - \n Instrument: rb1901\n IntervalType: Minute\n Interval: 1\n Params:\n Fast: 10\n Slow: 20\n lots: 1\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/haifengat/hf_at_py",
"keywords": "",
"license": "MIT License",
"maintainer": "",
"maintainer_email": "",
"name": "hfpy",
"package_url": "https://pypi.org/project/hfpy/",
"platform": "any",
"project_url": "https://pypi.org/project/hfpy/",
"project_urls": {
"Homepage": "https://github.com/haifengat/hf_at_py"
},
"release_url": "https://pypi.org/project/hfpy/0.1.6.6/",
"requires_dist": null,
"requires_python": ">=3.4.0",
"summary": "Hai Feng Future Trading Platform with SE",
"version": "0.1.6.6"
},
"last_serial": 5669677,
"releases": {
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "71ccce27d0231629809e049212d57c8d",
"sha256": "5f6eae506d81e307850199ba749da9a6c6804a50d61bfefa9f2fe2120531b8e8"
},
"downloads": -1,
"filename": "hfpy-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "71ccce27d0231629809e049212d57c8d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 26303,
"upload_time": "2018-11-20T03:19:31",
"url": "https://files.pythonhosted.org/packages/e1/e7/8a048a793efb7b8f58eaee1400e7ad8238b27fe10605b31f327aa0af0e5a/hfpy-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "825b37cd571807e366338a74256eeb95",
"sha256": "574721a7d77f97c20b7b30d7a24f8be820523ce64f9a18eec3a309052c2ea03c"
},
"downloads": -1,
"filename": "hfpy-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "825b37cd571807e366338a74256eeb95",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 27442,
"upload_time": "2018-11-20T04:24:40",
"url": "https://files.pythonhosted.org/packages/b7/55/4995426e27ec838c6a09ab075fe0d1989fb2aa1e04ba4f0c8a5249b8a561/hfpy-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "1aaef912185013d868127a8255932230",
"sha256": "65bafbb747def35875086f3c8848c2e66b2a7f9a17737d991e6fc7d313bbeab7"
},
"downloads": -1,
"filename": "hfpy-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "1aaef912185013d868127a8255932230",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 27476,
"upload_time": "2018-11-20T06:23:02",
"url": "https://files.pythonhosted.org/packages/b6/1a/a2c905cf25f9107d62890bd410c7d44428ae1248ce2e8bcc04e89ce8c140/hfpy-0.0.7.tar.gz"
}
],
"0.0.9": [
{
"comment_text": "",
"digests": {
"md5": "377c6d8ec87138e5931ae0a8b78a8e49",
"sha256": "bec69ca0564903cb4ad10ce04cc541ff6766c3e2f31fbce171a036138d140cf8"
},
"downloads": -1,
"filename": "hfpy-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "377c6d8ec87138e5931ae0a8b78a8e49",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 27541,
"upload_time": "2018-11-20T06:43:26",
"url": "https://files.pythonhosted.org/packages/af/92/2345c726e7c1f5fc95699e68df6eba97c2d3cd54edc601db7a1d0bab33a6/hfpy-0.0.9.tar.gz"
}
],
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f9a733cb459cd7e93a42cde684696c40",
"sha256": "00f80956b31ea4c10dd8f94429e78d34af965c83b7f8290dfc61aedf018e903c"
},
"downloads": -1,
"filename": "hfpy-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f9a733cb459cd7e93a42cde684696c40",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31339,
"upload_time": "2018-11-20T07:16:51",
"url": "https://files.pythonhosted.org/packages/42/cd/7de001cd9341d9e444cf9a1cbef84a30d763934293fc35668a1e1edefd1d/hfpy-0.1.0.tar.gz"
}
],
"0.1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "61ba9e0aff6c1381e1b3aec217bfc5cb",
"sha256": "13967d3e3c65c93c55a0dacc81f13314f271a47e17a56a234958f5ba571ec71a"
},
"downloads": -1,
"filename": "hfpy-0.1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "61ba9e0aff6c1381e1b3aec217bfc5cb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31474,
"upload_time": "2018-11-20T07:22:44",
"url": "https://files.pythonhosted.org/packages/08/d0/de01f927fc43f93751b52323278de31fc7638c4fdbc08c845beb2fcfff28/hfpy-0.1.0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "be47b942a0587eaae06ce01d9b526c05",
"sha256": "f1cd3e01a2e1f71d1db0d51aa006f30812501ee45dfd3ae781235b2940cd2938"
},
"downloads": -1,
"filename": "hfpy-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "be47b942a0587eaae06ce01d9b526c05",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31750,
"upload_time": "2018-11-20T08:30:41",
"url": "https://files.pythonhosted.org/packages/0a/bd/1b9af01a5d9f232db381117f36f5fa57e26c7a9568836521625586451cd2/hfpy-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "5ce91e2d1e8c125e5395ef529ee20e53",
"sha256": "7cd329666690aa9fe6710ef51fe43b789ed5c6448e1f5bb55ed884ca8dc0a8b3"
},
"downloads": -1,
"filename": "hfpy-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "5ce91e2d1e8c125e5395ef529ee20e53",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 27591,
"upload_time": "2018-11-29T06:35:15",
"url": "https://files.pythonhosted.org/packages/25/96/5e4d1049835810449714fafc83d80a8a7f7fe28f31503fd4a437a3bd4a1c/hfpy-0.1.2.tar.gz"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "d32de88623db7e0de66d6be9461d560d",
"sha256": "84d81539d64891b5730640ad0621b3857fbe9cec532c484daece4c4d98b8646e"
},
"downloads": -1,
"filename": "hfpy-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "d32de88623db7e0de66d6be9461d560d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31821,
"upload_time": "2018-11-30T07:09:39",
"url": "https://files.pythonhosted.org/packages/51/6b/b240f22ba74b805ab8b1daa1d8cb7155100bac3b22f250f6234e9bd45b16/hfpy-0.1.3.tar.gz"
}
],
"0.1.4": [
{
"comment_text": "",
"digests": {
"md5": "d6f7c0a2a1ef301d3f2789cb952c8ef7",
"sha256": "390b9971ea1332d4e305cf2b5ead33ca5e771399d72d7a31132d03e65b8c784d"
},
"downloads": -1,
"filename": "hfpy-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "d6f7c0a2a1ef301d3f2789cb952c8ef7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31819,
"upload_time": "2018-11-30T08:29:03",
"url": "https://files.pythonhosted.org/packages/97/ed/95722da916501f143bc3abc9dd8f449dfa87313b9f0f243c5bc538ac575a/hfpy-0.1.4.tar.gz"
}
],
"0.1.4.1": [
{
"comment_text": "",
"digests": {
"md5": "a783bb59b9a787cce804bb1b5506aecd",
"sha256": "a37544ab0fb202c7915decd6cef9ec28de1dc1b4d6928f30aa58ade2616322bd"
},
"downloads": -1,
"filename": "hfpy-0.1.4.1.tar.gz",
"has_sig": false,
"md5_digest": "a783bb59b9a787cce804bb1b5506aecd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31825,
"upload_time": "2018-12-03T05:53:17",
"url": "https://files.pythonhosted.org/packages/26/0f/309d0365843996b43367854caaa0d49fc85055c29c0356f0efc53f76587a/hfpy-0.1.4.1.tar.gz"
}
],
"0.1.4.2": [
{
"comment_text": "",
"digests": {
"md5": "b38e07187aa76982794b3216c5ace573",
"sha256": "42702507a2f047bded2d15fc8b7e94c93047aa2108a5f90ecb614b72d886e779"
},
"downloads": -1,
"filename": "hfpy-0.1.4.2.tar.gz",
"has_sig": false,
"md5_digest": "b38e07187aa76982794b3216c5ace573",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31866,
"upload_time": "2018-12-04T11:12:58",
"url": "https://files.pythonhosted.org/packages/f4/00/c81e847d8d6d95527ea1796ac125609e4368198e078d9da138ac6519ba43/hfpy-0.1.4.2.tar.gz"
}
],
"0.1.5": [
{
"comment_text": "",
"digests": {
"md5": "d9aa38ab5e20ab734b235398b34e0ff1",
"sha256": "0480083eaf2ccde28d869251c7fbe849237c5f3935663746b68eb113bf19839b"
},
"downloads": -1,
"filename": "hfpy-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "d9aa38ab5e20ab734b235398b34e0ff1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31963,
"upload_time": "2018-12-06T00:41:35",
"url": "https://files.pythonhosted.org/packages/9b/f3/6e929f6dbf568d51c49ddbc63c05b250d463ec9a1ff583bab5afccdafb74/hfpy-0.1.5.tar.gz"
}
],
"0.1.5.1": [
{
"comment_text": "",
"digests": {
"md5": "1f3bfaf4131dafffe306efa78a203c9c",
"sha256": "c4e41c1ef9d700b84436ce7005046d190930607875374947b44ff3b77a1b769c"
},
"downloads": -1,
"filename": "hfpy-0.1.5.1.tar.gz",
"has_sig": false,
"md5_digest": "1f3bfaf4131dafffe306efa78a203c9c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 31967,
"upload_time": "2018-12-07T00:22:49",
"url": "https://files.pythonhosted.org/packages/4a/5d/3706e48f95c6b202e252ee826db53620bfcd3c30f3dd14805738b8efc50a/hfpy-0.1.5.1.tar.gz"
}
],
"0.1.5.2": [
{
"comment_text": "",
"digests": {
"md5": "5986c84a161d8baee104ab4ac2619647",
"sha256": "2063c43b56b68c25f58da2dce8884cad5105f4f7adc267b05a034afeaf6c33d4"
},
"downloads": -1,
"filename": "hfpy-0.1.5.2.tar.gz",
"has_sig": false,
"md5_digest": "5986c84a161d8baee104ab4ac2619647",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32288,
"upload_time": "2019-01-07T08:11:53",
"url": "https://files.pythonhosted.org/packages/0f/36/6e4caf3a2a801d29bbf30b1f754f6e372fbbe9ca5a428aa06611b3975e28/hfpy-0.1.5.2.tar.gz"
}
],
"0.1.5.3": [
{
"comment_text": "",
"digests": {
"md5": "7e28673ddaf4be1bbd55e7d0da88b696",
"sha256": "0e7996884bc712eace51851df7560812aa14097b560282fe6bf087b950d40eb0"
},
"downloads": -1,
"filename": "hfpy-0.1.5.3.tar.gz",
"has_sig": false,
"md5_digest": "7e28673ddaf4be1bbd55e7d0da88b696",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32297,
"upload_time": "2019-01-22T09:27:52",
"url": "https://files.pythonhosted.org/packages/c3/cc/cdaed1345890794c9a23f771720f97f79e56981c68f019395c7007ebfee9/hfpy-0.1.5.3.tar.gz"
}
],
"0.1.5.4": [
{
"comment_text": "",
"digests": {
"md5": "bd550a21aa11b5cf396a587bf098ba4f",
"sha256": "a5bb184c7c2d1d1b5b8910e4ff7a97465176890570414f9231727b6f49a3ebc4"
},
"downloads": -1,
"filename": "hfpy-0.1.5.4.tar.gz",
"has_sig": false,
"md5_digest": "bd550a21aa11b5cf396a587bf098ba4f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32383,
"upload_time": "2019-01-23T03:57:25",
"url": "https://files.pythonhosted.org/packages/10/42/2986e043bdc417fb925eaa0abbf307e62069508928835dfaa632d7367176/hfpy-0.1.5.4.tar.gz"
}
],
"0.1.5.5": [
{
"comment_text": "",
"digests": {
"md5": "5d84bcdc0cb89beee1de9b8342e788f1",
"sha256": "4a60e8255bc8c6a919d99cba14faa5c90cc1a788ea056bb1e0b52558485c101d"
},
"downloads": -1,
"filename": "hfpy-0.1.5.5.tar.gz",
"has_sig": false,
"md5_digest": "5d84bcdc0cb89beee1de9b8342e788f1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32398,
"upload_time": "2019-01-28T08:30:49",
"url": "https://files.pythonhosted.org/packages/c4/c7/1d5ef2a257f828e7ce4aa49395774ef056234b1feb6bbc938f44102b5f3c/hfpy-0.1.5.5.tar.gz"
}
],
"0.1.5.6": [
{
"comment_text": "",
"digests": {
"md5": "2dc74c12fbc2b009f4def5c9e146dfa7",
"sha256": "437850cfea824aaf281e91261c1331644660e4237f39475e48231e9b76c04a43"
},
"downloads": -1,
"filename": "hfpy-0.1.5.6.tar.gz",
"has_sig": false,
"md5_digest": "2dc74c12fbc2b009f4def5c9e146dfa7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32603,
"upload_time": "2019-04-09T00:35:57",
"url": "https://files.pythonhosted.org/packages/c7/27/26258757a5e72c395101308eb513288f9bca6edaa8703326c8909e18d7af/hfpy-0.1.5.6.tar.gz"
}
],
"0.1.6.0": [
{
"comment_text": "",
"digests": {
"md5": "aa390296055a52f5c6d260b423e1c2ef",
"sha256": "29272c893b009ba6c87a42875936e9142ebc7974dbc0f7525a3c40ba4f981dee"
},
"downloads": -1,
"filename": "hfpy-0.1.6.0.tar.gz",
"has_sig": false,
"md5_digest": "aa390296055a52f5c6d260b423e1c2ef",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32662,
"upload_time": "2019-05-08T00:39:57",
"url": "https://files.pythonhosted.org/packages/03/5b/264c397b849c8ed141c3acbd2d2ebf5277f23691dc88b4bda6e854e48ce7/hfpy-0.1.6.0.tar.gz"
}
],
"0.1.6.1": [
{
"comment_text": "",
"digests": {
"md5": "19a85cd48886b78a0f36d454a561d724",
"sha256": "c29872851764ec713d1e8a455dbe4dc47c66887f1c262cbaa0d91fb83177b350"
},
"downloads": -1,
"filename": "hfpy-0.1.6.1.tar.gz",
"has_sig": false,
"md5_digest": "19a85cd48886b78a0f36d454a561d724",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32662,
"upload_time": "2019-05-08T01:24:18",
"url": "https://files.pythonhosted.org/packages/50/87/72ffdc752014be67f60a39a7dcc4f53516dc0f913181e159340244c83091/hfpy-0.1.6.1.tar.gz"
}
],
"0.1.6.2": [
{
"comment_text": "",
"digests": {
"md5": "338862cc2d1d1b5788c7c6d303ab8ade",
"sha256": "56b33adbd4f8aaacee52a0964ee43a0297ace6a70874d0a70a0ba7103d64d938"
},
"downloads": -1,
"filename": "hfpy-0.1.6.2.tar.gz",
"has_sig": false,
"md5_digest": "338862cc2d1d1b5788c7c6d303ab8ade",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32715,
"upload_time": "2019-06-04T02:41:09",
"url": "https://files.pythonhosted.org/packages/a2/7b/188a6fcf95c60365b375e99a0355e2cce8c312bdf5dcaf02c97895f79d26/hfpy-0.1.6.2.tar.gz"
}
],
"0.1.6.3": [
{
"comment_text": "",
"digests": {
"md5": "1f8326261b56a8b85b2ab18c111d9bc4",
"sha256": "6c91049e5f1cf50fa36e2dcfd2874daccd61812c5e36f0f1612b26e6eaf2b295"
},
"downloads": -1,
"filename": "hfpy-0.1.6.3.tar.gz",
"has_sig": false,
"md5_digest": "1f8326261b56a8b85b2ab18c111d9bc4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 33466,
"upload_time": "2019-07-02T05:52:52",
"url": "https://files.pythonhosted.org/packages/0e/b9/dd3776072e9aea68b0a4682928b4645eba3765fdd492447659047079e118/hfpy-0.1.6.3.tar.gz"
}
],
"0.1.6.4": [
{
"comment_text": "",
"digests": {
"md5": "dcad9b23da81eba1510502d53f582239",
"sha256": "7a5ab91c4dc1c78f5c14bac406cf802108496903f3028295e8bffe81ff556e7f"
},
"downloads": -1,
"filename": "hfpy-0.1.6.4.tar.gz",
"has_sig": false,
"md5_digest": "dcad9b23da81eba1510502d53f582239",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 32843,
"upload_time": "2019-07-12T00:29:21",
"url": "https://files.pythonhosted.org/packages/07/22/61f8412ccb1b5263e117f32eb515fc9eab3f69fdf0dff155fa6df5d44266/hfpy-0.1.6.4.tar.gz"
}
],
"0.1.6.5": [
{
"comment_text": "",
"digests": {
"md5": "fedadc5719125998c44418e686325ba3",
"sha256": "dd7f3ecd5dce6f02010a7855c08c6c90d719d9aaa628f03d331d62e2b7b16b0b"
},
"downloads": -1,
"filename": "hfpy-0.1.6.5.tar.gz",
"has_sig": false,
"md5_digest": "fedadc5719125998c44418e686325ba3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 33011,
"upload_time": "2019-07-15T05:48:40",
"url": "https://files.pythonhosted.org/packages/10/82/ee0d2ec74124dfc8c169c2833cabe3aee8974fb3c9389849505fd2aa6bd5/hfpy-0.1.6.5.tar.gz"
}
],
"0.1.6.6": [
{
"comment_text": "",
"digests": {
"md5": "6015b0305ccfac5be9582ffbe77644e8",
"sha256": "b0489aa8bd3e23e5e8064fcc2e98b69eb434e58e4ff37a013a92d9c9d5663e7a"
},
"downloads": -1,
"filename": "hfpy-0.1.6.6.tar.gz",
"has_sig": false,
"md5_digest": "6015b0305ccfac5be9582ffbe77644e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 33014,
"upload_time": "2019-08-13T02:54:40",
"url": "https://files.pythonhosted.org/packages/ec/cd/ea07cb3da47705fbe39978c9e2bcf12ad6015c70000269fb4cbe49dca76f/hfpy-0.1.6.6.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6015b0305ccfac5be9582ffbe77644e8",
"sha256": "b0489aa8bd3e23e5e8064fcc2e98b69eb434e58e4ff37a013a92d9c9d5663e7a"
},
"downloads": -1,
"filename": "hfpy-0.1.6.6.tar.gz",
"has_sig": false,
"md5_digest": "6015b0305ccfac5be9582ffbe77644e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4.0",
"size": 33014,
"upload_time": "2019-08-13T02:54:40",
"url": "https://files.pythonhosted.org/packages/ec/cd/ea07cb3da47705fbe39978c9e2bcf12ad6015c70000269fb4cbe49dca76f/hfpy-0.1.6.6.tar.gz"
}
]
}