{ "info": { "author": "\u7f57\u79d1\u5cf0", "author_email": "lkf20031988@163.com", "bugtrack_url": null, "classifiers": [], "description": "# rtsf-http\n\u57fa\u4e8ertsf\u6d4b\u8bd5\u6846\u67b6\uff0c\u5173\u952e\u5b57\u9a71\u52a8\u6d4b\u8bd5http/https\u7b49api\n\n\n## \u73af\u5883\u51c6\u5907\n\n### \u5b89\u88c5rtsf-http\npip install rtsf-http\n\n\n## \u7f16\u5199\u6d4b\u8bd5\u7528\u4f8b\uff0c\u6a21\u677f\u57fa\u4e8ertsf\n\n> \u53d8\u91cf\u5f15\u7528-> $var \u5173\u952e\u5b57(\u51fd\u6570)\u5f15\u7528-> ${function}\n\n- \u5e38\u91cf\u7684\u5b9a\u4e49\uff0c glob_var \u548c glob_regx\n- \u6a21\u677f\u5e38\u7528\u7684\u5173\u952e\u5b57\uff0c\u53c2\u89c1 [rtsf](https://github.com/RockFeng0/rtsf)\u4ecb\u7ecd\n\n### \u57fa\u672c\u7528\u4f8b\n\n\u57fa\u672c\u7528\u4f8b\uff0c\u662f\u6307\u6ca1\u6709\u5206\u5c42\u7684\u60c5\u51b5\u4e0b\uff0c\u7b80\u5355\u7684\u6d4b\u8bd5\u7528\u4f8b\n\n```\n# \u793a\u4f8b\u5982 test.yml\uff1a\n- project:\n # \u6a21\u677f\u9075\u5faartsf\u7ea6\u5b9a\n name: xxx\u7cfb\u7edf\n module: \u767b\u9646\u6a21\u5757-\u529f\u80fd\u6d4b\u8bd5\n\n- case:\n id: ATP-1\n desc: \u6253\u5f00\u767e\u5ea6\n\n name: demo_baidu1\n glob_var:\n passwd: 123@Qwe\n glob_regx:\n rex_name: 'id=su value=([\\w\\-\\.\\+/=]+)'\n pre_command: \n - ${SetVar(username, luokefeng)}\n - ${SetVar(password, $passwd)}\n steps:\n - request:\n url: https://www.baidu.com \n method: GET\n post_command:\n - ${DyStrData(baidu_name,$rex_name)}\n verify:\n - ${VerifyCode(200)}\n - ${VerifyVar(baidu_name, \u767e\u5ea6\u4e00\u4e0b)}\n - ${VerifyVar(baidu_name, 123)}\n\n```\n\n### \u6570\u636e\u9a71\u52a8\u7528\u4f8b\n\u6570\u636e\u9a71\u52a8\uff0c\u6839\u636ertsf\u7684\u4ecb\u7ecd\uff0c\u9700\u8981\u518dproject\u4e2d,\u6dfb\u52a0data\u5173\u952e\u5b57\n\n```\n# \u793a\u4f8b\u5982 data_driver.yaml\n- project:\n name: xxx\u9879\u76ee\n module: xxx\u9879\u76ee-\u9996\u9875\u529f\u80fd-\u6570\u636e\u9a71\u52a8\n data:\n - csv: devices.csv\n by: Random\n\n- case:\n name: /baidu_test_$device\n steps:\n - request:\n url: https://www.baidu.com\n method: GET\n verify:\n - ${VerifyCode(200)}\n```\n\ndata\u76f8\u5173\u7684\u5177\u4f53\u4f7f\u7528\u65b9\u6cd5\uff0c\u53ef\u4ee5\u53c2\u89c1 [rtsf](https://github.com/RockFeng0/rtsf)\u4ecb\u7ecd\n\n\n### \u5206\u5c42\u7528\u4f8b\n\n- \u5206\u5c42\u7528\u4f8b\uff0c\u662f\u6307\u6a21\u5757\u529f\u80fd\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c\u5bf9\u6d4b\u8bd5\u7528\u4f8b\u8fdb\u884c\u5206\u5c42\uff0c\u6700\u5c0f\u7684\u5355\u5143\u4e3aapi\uff0c\u5176\u6b21\u4e3asuite\uff0c\u6700\u540e\u7ec4\u6210\u7528\u4f8b\n- \u5176\u5b58\u653e\u8def\u5f84\u3001\u7f16\u5199\u89c4\u5219\u7b49\uff0c\u8be6\u89c1 [rtsf](https://github.com/RockFeng0/rtsf)\u76f8\u5173\u4ecb\u7ecd\n\n\u793a\u4f8b\u573a\u666f1: \u6253\u5f00\u767e\u5ea6\uff0c\u641c\u7d22hello\uff0c\u6253\u5f00bing\n\n\u793a\u4f8b\u573a\u666f2: \u6253\u5f00bing, \u6253\u5f00\u767e\u5ea6\uff0c\u641c\u7d22hello\n\n\u5e94\u7528\u5206\u5c42\uff1a \n1. \u6253\u5f00\u767e\u5ea6 \u5c01\u88c5\u4e3a api_1, \u641c\u7d22hello \u5c01\u88c5\u4e3aapi_2, \u6253\u5f00bing\u5c01\u88c5\u4e3aapi_3; \n\n```\n# api_test.yaml\n\n- api:\n def: api_1()\n steps:\n - request:\n url: https://www.baidu.com \n method: GET \n verify:\n - ${VerifyCode(200)}\n\n- api:\n def: api_2($keyword)\n steps:\n - request:\n url: https://www.baidu.com/s?wd=$keyword \n method: GET \n verify:\n - ${VerifyCode(200)}\n\n- api:\n def: api_3()\n steps:\n - request:\n url: https://cn.bing.com \n method: GET \n verify:\n - ${VerifyCode(200)}\n```\n\n2. suite1\u6392\u5217api_1\u3001api_2\u3001api_3; \n\n```\n# suite_test1.yaml\n- project:\n def: suite1($keyword)\n\n- case:\n name: suite1_demo_baidu\n api: api_1()\n\n- case:\n name: suite1_demo_baidu_key\n api: api_2($keyword)\n\n- case:\n name: suite1_demo_bing\n api: api_3()\n\n```\n\n3. suite2\u6392\u5217 api_3\u3001api_1\u3001api_2\n\n```\n# suite_test2.yaml\n- project:\n def: suite2($keyword,$password,$username)\n\n- case:\n name: suite2_demo_bing\n api: api_3()\n\n- case:\n name: suite2_demo_baidu\n api: api_1()\n\n- case:\n name: suite2_demo_baidu_key\n api: api_2($keyword)\n\n```\n\n\n3. \u6700\u540e\u6d4b\u8bd5\u7528\u4f8b\u6392\u5217 suite1 & suite2 \n\n```\n# \u6d4b\u8bd5\u7528\u4f8b test_case.yaml\uff1a\n- project:\n name: \u5206\u5c42\u7528\u4f8b\n module: \u793a\u4f8b\u573a\u666f\n\n- case:\n name: \u793a\u4f8b\u573a\u666f-case1\n suite: suite1(hello)\n\n- case:\n name: \u793a\u4f8b\u573a\u666f-case2\n suite: suite2(hello,123456,luokefeng)\n\n```\n\n4. \u6267\u884c\n hdriver.exe test_case.yaml\n\n## \u6267\u884c\u6d4b\u8bd5\u7528\u4f8b\n\n> \u6267\u884c\u6709\u4e24\u4e2a\u547d\u4ee4, hdriver \u6216\u8005 httpdriver\n\n```\nusage: hdriver [-h] [--log-level LOG_LEVEL] [--log-file LOG_FILE] case_file\nusage: httpdriver [-h] [--log-level LOG_LEVEL] [--log-file LOG_FILE] case_file\n```\n\n![hdriver-command.png](https://raw.githubusercontent.com/RockFeng0/img-folder/master/rtsf-http-img/hdriver-command.png)\n\n## \u6d4b\u8bd5\u62a5\u544a\u53ca\u65e5\u5fd7\n\n> \u6267\u884c\u7ed3\u675f\u540e\uff0c\u6d4b\u8bd5\u7528\u4f8b\u6240\u5728\u8def\u5f84\uff0c\u5c31\u662freport\u751f\u6210\u7684\u8def\u5f84\n\n\n## \u57fa\u4e8ertsf\uff0c\u5c01\u88c5\u7684\u5173\u952e\u5b57(\u5185\u7f6e\u51fd\u6570)\n\n\n```\n# glob_var \u901a\u5e38function\u83b7\u53d6\u503c\u540e\uff0c\u590d\u5236\u7ed9\u53d8\u91cf\u63a7\u4ef6\nGetVar(name) # -> \u4ece\u53d8\u91cf\u7a7a\u95f4\u4e2d\uff0c\u83b7\u53d6\u53d8\u91cf\u7684\u503c\nPopVar(name) # -> \u4ece\u53d8\u91cf\u7a7a\u95f4\u4e2d\uff0c\u83b7\u53d6\u53d8\u91cf\u7684\u503c\uff0c\u7136\u540e\u5220\u9664\u8be5\u53d8\u91cf\nGetBasicAuth(username,password) # -> \u83b7\u53d6basic\u52a0\u5bc6\uff0c\u7528\u4e8e\u4f20\u9012 requests\u7684auth\u53c2\u6570\nGetDigestAuth(username,password) # -> \u83b7\u53d6digest\u52a0\u5bc6\uff0c\u7528\u4e8e\u4f20\u9012 requests\u7684auth\u53c2\u6570 \n\n# precommand \u901a\u5e38\u7528\u4e8e\u5b9a\u4e49\u4e00\u4e9b\u53d8\u91cf\uff0c\u7528\u4e8e\u4f20\u53c2\nSetVar(name, value) # -> \u8bbe\u7f6e\u53d8\u91cf\u81f3\u53d8\u91cf\u7a7a\u95f4\uff0c\n\n# postcommand \u901a\u5e38\u7528\u4e8e\u52a8\u6001\u5b9a\u4e49\u4e00\u4e9b\u53d8\u91cf\uff0c\u7528\u4e8e\u9a8c\u8bc1\nDyStrData(name,regx,index=0) # -> resp.text or resp.content \u8fd4\u56dehtml/xml\u7b49\u683c\u5f0f\u65f6\uff0c \u4f9d\u636e\u6b63\u5219regx\u548c\u4e0b\u6807index\uff0c\u4fdd\u5b58\u81f3\u53d8\u91cfname\nDyJsonData(name,sequence) # -> resp.text or resp.content \u8fd4\u56dejson\u683c\u5f0f\u65f6\uff0c\u4f9d\u636esequence\uff0c\u4fdd\u5b58\u81f3\u53d8\u91cfname\n\n# verify\nVerifyContain(strs) # \u9a8c\u8bc1\u76f8\u5e94\u7684body\u4e2d\uff0c\u5305\u542b\u5b57\u7b26\u4e32\nVerifyCode(code) # \u9a8c\u8bc1\u54cd\u5e94\u7801\u4e3acode\nVerifyVar(name, expect_value=None) # \u9a8c\u8bc1\u53d8\u91cf\u7684\u503c\u662f\u5426\u4e3a\u671f\u671b\u503c\uff1b\u5982\u679c\u671f\u671b\u503c\u4e3aNone\uff0c\u5219\u4ec5\u9a8c\u8bc1\u53d8\u91cf\u662f\u5426\u88ab\u8d4b\u503c\n\n\n# \u4e0b\u8f7d\u7684\u8bf7\u6c42\u793a\u4f8b\uff0cyaml\u7f16\u5199\uff1a\nsteps:\n - request:\n url: https://www.baidu.com \n method: get\n download_dir: c:\\downloads\n\n\n# \u4e0a\u4f20\u7684\u8bf7\u6c42\u793a\u4f8b, yaml\u7f16\u5199\nsteps:\n - request:\n url: http://127.0.0.1/filestorage/httpUploadFile\n method: post\n files:\n pic1: C:/d_disk/auto/buffer/800x600.png\n pic2: \n pic3:\n data: \n dirType: 1\n unzip: 0 \n\n```\n\n## \u81ea\u5b9a\u4e49\uff0c\u5173\u952e\u5b57(\u51fd\u6570\u3001\u53d8\u91cf)\n> \u5728case\u540c\u7ea7\u76ee\u5f55\u4e2d\uff0c\u521b\u5efa preference.py, \u8be5\u6587\u4ef6\u6240\u5b9a\u4e49\u7684 \u53d8\u91cf\u3001\u51fd\u6570\uff0c\u53ef\u4ee5\u88ab\u52a8\u6001\u52a0\u8f7d\u548c\u5f15\u7528\n\n\u6267\u884c\u7528\u4f8b\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u4f7f\u7528 \u53d8\u91cf\u5f15\u7528 \u6216\u8005\u5173\u952e\u5b57\u5f15\u7528\u7684\u65b9\u6cd5\uff0c\u8c03\u7528\uff0c\u81ea\u5b9a\u4e49\u7684\u51fd\u6570\u548c\u53d8\u91cf\n\n```\n# preference.py \u793a\u4f8b\n\ntest_var = \"hello rtsf.\"\ndef test_func():\n return \"nihao rtsf.\"\n\n```\n\n\n\n\n\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/RockFeng0/rtsf-http", "keywords": "test http api https", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rtsf-http", "package_url": "https://pypi.org/project/rtsf-http/", "platform": "", "project_url": "https://pypi.org/project/rtsf-http/", "project_urls": { "Homepage": "https://github.com/RockFeng0/rtsf-http" }, "release_url": "https://pypi.org/project/rtsf-http/2.1.5/", "requires_dist": [ "requests", "rtsf" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "summary": "only for http(s) test, base on rtsf", "version": "2.1.5" }, "last_serial": 4456441, "releases": { "1.9": [ { "comment_text": "", "digests": { "md5": "17785423cf07690df804a811dfdfd731", "sha256": "e5771c8e6631aea24b09fbc2d6179b93b6f47e8708e19f5ba251c24b8733d2f5" }, "downloads": -1, "filename": "rtsf_http-1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "17785423cf07690df804a811dfdfd731", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 7568, "upload_time": "2018-10-14T12:23:35", "url": "https://files.pythonhosted.org/packages/cb/0a/7f6b6122114c1aa10dcaaf4d88f5eb01b4f3cb0a919fb107935cef37e32c/rtsf_http-1.9-py3-none-any.whl" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "c2f578f1f26e8c639e0c54d82a9b0578", "sha256": "6c34166e3adbb4daa4158a2f09cd0d0c096a0bc37d9241ecd24beabf393de144" }, "downloads": -1, "filename": "rtsf_http-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c2f578f1f26e8c639e0c54d82a9b0578", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 7660, "upload_time": "2018-10-24T07:16:20", "url": "https://files.pythonhosted.org/packages/1e/a8/ac4cae98a9d7b2984e5015e9ac3b4c0e93de426a9bfcb7e2edb32b60b247/rtsf_http-2.0-py3-none-any.whl" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "0f902529ba6ffe10fdab15a57427ef7f", "sha256": "f3bd10649929951fd66c234a299d9ce8a2ed632f5ded44ec04fd2d052f069265" }, "downloads": -1, "filename": "rtsf_http-2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f902529ba6ffe10fdab15a57427ef7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 8225, "upload_time": "2018-11-04T02:17:10", "url": "https://files.pythonhosted.org/packages/68/c9/41935f9837d7bcca926cefe65bc9880d7bdb357f67631f32400f0869b89d/rtsf_http-2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cbb220a85f99ed913827b3af7f90fe4", "sha256": "a7a0d163ee97c4569a976bc4609189f66dbc723ba043b52fd44fd024e68c591b" }, "downloads": -1, "filename": "rtsf-http-2.1.tar.gz", "has_sig": false, "md5_digest": "5cbb220a85f99ed913827b3af7f90fe4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 9136, "upload_time": "2018-11-04T02:17:11", "url": "https://files.pythonhosted.org/packages/30/20/a0bd526908f2117209c64b57f33e20f9ff89ec3a6f129c01195d7e9aa459/rtsf-http-2.1.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "3b841a4695b10531457cb53903dee297", "sha256": "c9c79ca090170dab0a5101336c3408c581812e25dc74292616b884b930b97ffb" }, "downloads": -1, "filename": "rtsf_http-2.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3b841a4695b10531457cb53903dee297", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10659, "upload_time": "2018-11-04T02:20:26", "url": "https://files.pythonhosted.org/packages/1c/0c/615bb824870faf1949772e8e7d78ecef9f8f63889bd6d7f72f6ca575b370/rtsf_http-2.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9d41511266e7560e75a4a4565397a29", "sha256": "c7ad0c65f1b6c5df6ac26b864997978c95c0bb1479f2a38a9e638a5590c03630" }, "downloads": -1, "filename": "rtsf-http-2.1.1.tar.gz", "has_sig": false, "md5_digest": "c9d41511266e7560e75a4a4565397a29", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10292, "upload_time": "2018-11-04T02:20:28", "url": "https://files.pythonhosted.org/packages/f2/47/cb77c287f8083b8a8df7d068e13809f86dcdcbb1e9d0fd168e54a98d5815/rtsf-http-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "837e31b44ea662b9844afc9ea40983c4", "sha256": "892c53f64243969cbd8957a29841124428a22b619555463789907cbf6d5571bd" }, "downloads": -1, "filename": "rtsf_http-2.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "837e31b44ea662b9844afc9ea40983c4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10696, "upload_time": "2018-11-04T08:55:28", "url": "https://files.pythonhosted.org/packages/d6/af/cae2e482aef700d4346877140a10d615a917ebc90299773c17d1033bac70/rtsf_http-2.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a766196595530e66937761103da594e", "sha256": "b049620ae2599dab5aab41db3d3281b2f195d1664e654b643b8eadc93e6d7ba0" }, "downloads": -1, "filename": "rtsf-http-2.1.2.tar.gz", "has_sig": false, "md5_digest": "0a766196595530e66937761103da594e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10338, "upload_time": "2018-11-04T08:55:30", "url": "https://files.pythonhosted.org/packages/ec/c7/31da6608cfb74df9994740f48c2a54e054461494edad5361155b00d39101/rtsf-http-2.1.2.tar.gz" } ], "2.1.3": [ { "comment_text": "", "digests": { "md5": "2a939e8363d6456b0f9c540d72025008", "sha256": "4c0d98f88aff05015313d77ad1c46992253afece409974254c013eb5ec837643" }, "downloads": -1, "filename": "rtsf_http-2.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a939e8363d6456b0f9c540d72025008", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10705, "upload_time": "2018-11-04T09:05:14", "url": "https://files.pythonhosted.org/packages/5b/b9/68d4ea2c44853db3bab5a051244a328d93cc3f3945c723906283386b5e83/rtsf_http-2.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a310c29f22dca3540b95529bdcb99f71", "sha256": "cd68a0ba9a21e1f80ef8cdae6a4f24cc2440f5b267d94308a0fa92e7c4b99ca1" }, "downloads": -1, "filename": "rtsf-http-2.1.3.tar.gz", "has_sig": false, "md5_digest": "a310c29f22dca3540b95529bdcb99f71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10324, "upload_time": "2018-11-04T09:05:16", "url": "https://files.pythonhosted.org/packages/2d/5b/e45888a039e7caf81a3a2b03e82bd0c6495bbc7711bddae7cd46fa749ef6/rtsf-http-2.1.3.tar.gz" } ], "2.1.4": [ { "comment_text": "", "digests": { "md5": "ed92769546f19aabe4c86c25db94a212", "sha256": "99da6c773a74a9d7822be0625f13a4c9e2a54681811f0aebd0dd89701d0ef918" }, "downloads": -1, "filename": "rtsf_http-2.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ed92769546f19aabe4c86c25db94a212", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10681, "upload_time": "2018-11-05T15:15:05", "url": "https://files.pythonhosted.org/packages/c2/1f/63468f0d29452292127ff4133759e3d7478282de174a75aeb4f4bec463f9/rtsf_http-2.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5edeb64310344087c1f4b1cc01e9765f", "sha256": "65ce79e7fb63a923200372ed9043b01b95078d1ea6015fc0f942de20e7b5195b" }, "downloads": -1, "filename": "rtsf-http-2.1.4.tar.gz", "has_sig": false, "md5_digest": "5edeb64310344087c1f4b1cc01e9765f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10299, "upload_time": "2018-11-05T15:15:06", "url": "https://files.pythonhosted.org/packages/fa/fa/ac13fc010ea3913a4e7997254da53e7daa5771aa7bacfe9189383ede2c4e/rtsf-http-2.1.4.tar.gz" } ], "2.1.5": [ { "comment_text": "", "digests": { "md5": "e7ec4831e6d3739cd310b48b3de899ed", "sha256": "e79f4bfcae1595cb83db6f63fccfe144a870a0ad0afe6c649dbd1c8065f8f929" }, "downloads": -1, "filename": "rtsf_http-2.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e7ec4831e6d3739cd310b48b3de899ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10686, "upload_time": "2018-11-06T08:09:31", "url": "https://files.pythonhosted.org/packages/76/9b/0baca78910178c04259ae4288ade3478fb522955d8cb01c0daf702cf06d6/rtsf_http-2.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e500fd6105a1ec09ec43fe6664e6f5fa", "sha256": "4ae5cd8f0fefea789077d4bb84125e24d361c637a0b7439e68c141814e26ef55" }, "downloads": -1, "filename": "rtsf-http-2.1.5.tar.gz", "has_sig": false, "md5_digest": "e500fd6105a1ec09ec43fe6664e6f5fa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10303, "upload_time": "2018-11-06T08:09:32", "url": "https://files.pythonhosted.org/packages/50/5a/d105a20b39d254e5f7938f3ab306a3a7c78707796094057ac8e51c7f51c6/rtsf-http-2.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e7ec4831e6d3739cd310b48b3de899ed", "sha256": "e79f4bfcae1595cb83db6f63fccfe144a870a0ad0afe6c649dbd1c8065f8f929" }, "downloads": -1, "filename": "rtsf_http-2.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e7ec4831e6d3739cd310b48b3de899ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10686, "upload_time": "2018-11-06T08:09:31", "url": "https://files.pythonhosted.org/packages/76/9b/0baca78910178c04259ae4288ade3478fb522955d8cb01c0daf702cf06d6/rtsf_http-2.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e500fd6105a1ec09ec43fe6664e6f5fa", "sha256": "4ae5cd8f0fefea789077d4bb84125e24d361c637a0b7439e68c141814e26ef55" }, "downloads": -1, "filename": "rtsf-http-2.1.5.tar.gz", "has_sig": false, "md5_digest": "e500fd6105a1ec09ec43fe6664e6f5fa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 10303, "upload_time": "2018-11-06T08:09:32", "url": "https://files.pythonhosted.org/packages/50/5a/d105a20b39d254e5f7938f3ab306a3a7c78707796094057ac8e51c7f51c6/rtsf-http-2.1.5.tar.gz" } ] }