{ "info": { "author": "Xavier-Lam", "author_email": "Lam.Xavier@hotmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "# Qiniu-ufop\n\n[![PyPI](https://img.shields.io/pypi/v/qiniu-ufop.svg)](https://pypi.org/project/qiniu-ufop)\n\n\u672c\u9879\u76ee\u63d0\u4f9b\u4e00\u4e2a\u4fbf\u6377\u9ad8\u6027\u80fd\u7684**\u4e03\u725b\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406**\u811a\u624b\u67b6,\u4ee5\u4fbf\u5f00\u53d1\u4eba\u5458\u4e13\u6ce8\u6570\u636e\u5904\u7406\u4e1a\u52a1\u903b\u8f91.\n\n\u76ee\u524d\u5c1a\u672a\u7f16\u5199\u5355\u5143\u6d4b\u8bd5,\u4e5f\u6ca1\u6709\u5b8c\u5584\u7684\u5f02\u5e38\u5904\u7406\u673a\u5236.\u91c7\u7528Python 3.6\u8fdb\u884c\u5f00\u53d1,\u4e0d\u786e\u4fdd\u5176\u4ed6\u7248\u672c\u8fd0\u884c\u6b63\u5e38.\n\n\u9879\u76ee\u5b98\u65b9\u7ad9\u70b9 https://github.com/Xavier-Lam/qiniu-ufop\n\n- [Quickstart](#Quickstart)\n - [\u5b89\u88c5](#\u5b89\u88c5)\n - [\u5f00\u59cb\u9879\u76ee](#\u5f00\u59cb\u9879\u76ee)\n - [\u7f16\u5199\u4e1a\u52a1\u4ee3\u7801](#\u7f16\u5199\u4e1a\u52a1\u4ee3\u7801)\n - [\u672c\u5730\u8fd0\u884c\u9879\u76ee](#\u672c\u5730\u8fd0\u884c\u9879\u76ee)\n - [\u751f\u6210Dockerfile\u5e76\u53d1\u5e03](#\u751f\u6210Dockerfile\u5e76\u53d1\u5e03)\n - [\u6fc0\u6d3b](#\u6fc0\u6d3b)\n - [\u6ce8\u610f](#\u6ce8\u610f)\n- [\u5f00\u53d1](#\u5f00\u53d1)\n- [\u4f7f\u7528](#\u4f7f\u7528)\n - [\u547d\u4ee4\u884c\u5de5\u5177](#\u547d\u4ee4\u884c\u5de5\u5177)\n - [\u4e00\u952e\u90e8\u7f72](#\u4e00\u952e\u90e8\u7f72)\n - [\u624b\u5de5\u90e8\u7f72](#\u624b\u5de5\u90e8\u7f72)\n - [\u751f\u6210\u955c\u50cf](#\u751f\u6210\u955c\u50cf)\n - [\u4e0a\u8f7d\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f](#\u4e0a\u8f7d\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f)\n - [\u914d\u7f6e](#\u914d\u7f6e)\n- [\u8c03\u8bd5](#\u8c03\u8bd5)\n - [\u672c\u5730\u8c03\u8bd5\u5904\u7406\u7a0b\u5e8f](#\u672c\u5730\u8c03\u8bd5\u5904\u7406\u7a0b\u5e8f)\n - [\u672c\u5730\u8c03\u8bd5webserver](#\u672c\u5730\u8c03\u8bd5webserver)\n - [\u672c\u5730\u8c03\u8bd5Docker](#\u672c\u5730\u8c03\u8bd5Docker)\n- [\u95ee\u9898\u6392\u67e5](#\u95ee\u9898\u6392\u67e5)\n - [\u65e5\u5fd7\u67e5\u770b](#\u65e5\u5fd7\u67e5\u770b)\n - [\u90e8\u7f72\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u5f02\u5e38](#\u90e8\u7f72\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u5f02\u5e38)\n- [Cookbook](#Cookbook)\n - [\u4f7f\u7528git\u66f4\u65b0\u4ee3\u7801](#\u4f7f\u7528git\u66f4\u65b0\u4ee3\u7801)\n- [TODOS:](#TODOS)\n\n## Quickstart\n### \u5b89\u88c5\n\u901a\u8fc7pip\u5b89\u88c5\u9879\u76ee\n\n pip install qiniu-ufop\n\n### \u5f00\u59cb\u9879\u76ee\n\u4f7f\u7528qiniu-ufop\u547d\u4ee4,\u5feb\u901f\u751f\u6210\u9879\u76ee\n\n qiniu-ufop createproject\n\n\u901a\u8fc7createproject\u547d\u4ee4,qiniu-ufop\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u751f\u6210\u4e86\u4e00\u4e2aapp.py\u6587\u4ef6.\n\n### \u7f16\u5199\u4e1a\u52a1\u4ee3\u7801\n\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u793a\u4f8b:\n\n # app.py\n\n from qiniu_ufop import QiniuUFOP\n\n ufop = QiniuUFOP()\n\n @ufop.task(route=r\"^(?:/(?P\\w+))?$\")\n def debug(buffer, args, content_type):\n return \"hello \" + args.get(\"name\", \"world\")\n\n\u5047\u8bbe\u8be5\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406\u540d\u79f0\u4e3a*qiniu*,\u5f85\u5904\u7406\u7684\u6587\u4ef6\u94fe\u63a5\u4e3a*https://qbox.me/example.jpg*. \u5219\u8c03\u7528\u94fe\u63a5\u662f*https://qbox.me/example.jpg?qiniu/qq*,\u54cd\u5e94\u8f93\u51fa\u4e3a*hello qq*\n\n\u7f16\u5199\u8bf4\u660e\u53c2\u89c1[\u5f00\u53d1](#\u5f00\u53d1) \u7ae0\u8282\n\n### \u672c\u5730\u8fd0\u884c\u9879\u76ee\n\n qiniu-ufop runserver --debug\n qiniu-ufop runworker\n\n> \u6ce8\u610f: \u5728windows\u4e0b\u5f00\u53d1\u9700\u989d\u5916\u5b89\u88c5`eventlet`,\u8fd0\u884crunworker\u65f6\u4f7f\u7528\u547d\u4ee4`qiniu-ufop runworker -P eventlet`\n\n\u8be6\u89c1[\u8c03\u8bd5](#\u8c03\u8bd5)\u7ae0\u8282\n\n### \u751f\u6210Dockerfile\u5e76\u53d1\u5e03\n\n qiniu-ufop deploy -t -n -v \n\n\u8be5\u547d\u4ee4\u4e3a\u4e00\u952e\u90e8\u7f72\u547d\u4ee4,\u4e00\u952e\u90e8\u7f72\u9700\u6ee1\u8db3\u76f8\u5173\u6761\u4ef6,\u8bf7\u53c2\u9605[\u4e00\u952e\u90e8\u7f72](#\u4e00\u952e\u90e8\u7f72)\u7ae0\u8282.\u5982\u9700\u5b9a\u5236\u5316\u90e8\u7f72,\u53ef\u53c2\u89c1[\u624b\u5de5\u90e8\u7f72](#\u624b\u5de5\u90e8\u7f72)\u7ae0\u8282\n\n### \u6fc0\u6d3b\n\u5728\u4f60\u7684\u81ea\u5b9a\u4e49\u5904\u7406\u7684[\u7248\u672c\u5217\u8868](https://portal.qiniu.com/dora/ufopv2//index?region=all)\u4e2d\u8c03\u6574\u5b9e\u4f8b\u6570,\u5373\u53ef\u4f7f\u7528\n\n### \u6ce8\u610f\n\u4e03\u725b\u6709\u4e00\u4e2aBUG,\u5728\u4ee3\u7801\u4e2d\u6ca1\u529e\u6cd5\u53d6\u5230\u6b63\u786e\u7684cpu\u6838\u6570\n* \u4f7f\u7528\u4e00\u952e\u90e8\u7f72,\u6846\u67b6\u4f1a\u53d6\u4e00\u952e\u90e8\u7f72\u7684\u914d\u7f6e\u9879flavor(\u5b9e\u4f8b\u7c7b\u578b,\u9ed8\u8ba4C1M1)\u4f5c\u4e3aCPU\u6838\u6570,\u5f00\u542f\u76f8\u5e94\u6570\u91cf\u7684worker\u53caweb\n* \u81ea\u884c\u90e8\u7f72\u65f6,\u8bf7\u52a1\u5fc5\u5728\u73af\u5883\u53d8\u91cf(\u5f00\u53d1\u8def\u5f84\u4e0b\u7684.env\u6587\u4ef6)\u4e2d\u5199\u5165CPU\u6838\u6570`CPU_COUNT`\u6216\u5b9e\u4f8b\u914d\u7f6e`FLAVOR`,\u624d\u80fd\u5f00\u542f\u6b63\u786e\u6570\u91cf\u7684worker\u53caweb,\u5426\u5219,qiniu-ufop\u5c06\u9ed8\u8ba4\u53d6\u5355\u6838,\u4e5f\u5c31\u662f\u5355\u5b9e\u4f8b\u8fd0\u884cweb\u53caworker\n\n## \u5f00\u53d1\n\u6570\u636e\u5904\u7406\u5668\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a[celery\u4efb\u52a1](http://docs.celeryproject.org/en/latest/userguide/tasks.html),\u8fd9\u4e2a\u4efb\u52a1\u5fc5\u987b\u63a5\u53d7\u4e00\u4e2a`route`\u53c2\u6570,\u6307\u660e\u4f1a\u8def\u7531\u5230\u8be5\u5904\u7406\u5668\u7684cmd,\u5982\u679c\u5168\u5c40\u53ea\u6709\u4e00\u4e2a\u5904\u7406\u5668,\u53ef\u4ee5\u4f7f\u7528`.*`\u6216`^$`\u4f5c\u4e3a\u8def\u7531.\u7406\u8bba\u4e0a\u53ef\u4ee5\u4f7f\u7528celery\u590d\u6742\u7684\u4efb\u52a1\u5206\u53d1.\n\n\u88ab\u88c5\u9970\u7684\u5904\u7406\u8d77\u63a5\u53d7\u4e09\u4e2a\u53c2\u6570,\u7b2c\u4e00\u4e2a\u662f\u5f85\u5904\u7406\u6587\u4ef6\u7684`io.BytesIO`,\u7b2c\u4e8c\u4e2a\u662f\u8def\u7531\u5339\u914d\u5230\u7684\u53c2\u6570\u5b57\u5178,\u7b2c\u4e09\u4e2a\u662f\u6587\u4ef6\u7684Content-Type.\n\n\u5904\u7406\u5668\u8fd4\u56de\u5b57\u7b26\u4e32,bytes,json\u6216\u662f\u4e00\u4e2a`qiniu_ufop.Response`\u5bf9\u8c61.\n\n\u65e5\u5fd7\u53ef\u76f4\u63a5\u8f93\u51fastderr.\n\n## \u4f7f\u7528\n### \u547d\u4ee4\u884c\u5de5\u5177\n\u53ef\u901a\u8fc7\n\n qiniu-ufop -h\n\n\u770b\u5230\u8be6\u7ec6\u8bf4\u660e\n\n### \u4e00\u952e\u90e8\u7f72\n\u4e00\u952e\u90e8\u7f72\u5047\u8bbe\u7528\u6237\n* \u672c\u5730\u5b89\u88c5\u6709docker\u73af\u5883\n* \u5df2\u5b89\u88c5\u5e76\u767b\u9646qdoractl,qdoractl\u5728PATH\u4e2d\n* \u5df2\u6ce8\u518c\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n\n qiniu-ufop deploy -t -n -v \n\n### \u624b\u5de5\u90e8\u7f72\n[\u5b98\u65b9\u6587\u6863](https://developer.qiniu.com/dora/manual/1224/quick-start)\n\n\u6b64\u7ae0\u8282\u5047\u5b9a\u7528\u6237\u5df2\u5b8c\u6210\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406\u7a0b\u5e8f\u7684\u5f00\u53d1,\u672c\u5730\u5b89\u88c5\u6709docker\u73af\u5883,\u5e76\u5904\u5728\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\u76ee\u5f55\u4e0b\n\n#### \u751f\u6210\u955c\u50cf\n* \u6784\u5efadocker\u955c\u50cf\n\n docker build . -t \n\n#### \u4e0a\u8f7d\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n* \u4e0b\u8f7d[\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406\u547d\u4ee4\u884c\u5de5\u5177](https://developer.qiniu.com/dora/tools/1222/qdoractl)\n* \u4f7f\u7528accesskey\u53casecretkey\u767b\u9646\n\n qdoractl login -u \n* \u5982\u679c\u4f60\u5c1a\u672a\u521b\u5efa\u4f60\u7684\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f,\u8bf7\u521b\u5efa\n\n qdoractl register [-d ]\n* \u4e0a\u8f7d\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n\n qdoractl push \n\n#### \u914d\u7f6e\n**[\u5b98\u65b9\u6587\u6863](https://developer.qiniu.com/dora/manual/1225/platform-user-guide)** **[\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406\u540e\u53f0](https://`portal.qiniu.com/dora/ufopv2//index?region=all)**\n\n\u5176\u4ed6\u4f9d\u7167\u5b98\u65b9\u6587\u6863\u914d\u7f6e,\u5728\u9ad8\u7ea7\u914d\u7f6e\u4e2d\n* \u5065\u5eb7\u914d\u7f6ePath\u8bf7\u586b\u5199`/health`\n* \u65e5\u5fd7\u8def\u5f84\u6dfb\u52a0\n * \u4efb\u52a1\u5904\u7406\u5f02\u5e38\u65e5\u5fd7 `/var/log/worker/`\n * web\u5904\u7406\u5f02\u5e38\u65e5\u5fd7 `/var/log/server/`\n * supervisor\u65e5\u5fd7 `/var/log/supervisor/`\n\n## \u8c03\u8bd5\n### \u672c\u5730\u8c03\u8bd5\u5904\u7406\u7a0b\u5e8f\n\u53ef\u901a\u8fc7qiniu-ufop\u5bf9\u5904\u7406\u7a0b\u5e8f\u8fdb\u884c\u8c03\u8bd5\n\n qiniu-ufop process [] \n\n> \u6ce8\u610f:\u6b64\u5904\u7684cmd\u662f\u4e0d\u5305\u62ec\u5904\u7406\u7a0b\u5e8f\u540d\u7684\n\n\u547d\u4ee4\u7684\u7ed3\u679c\u5c06\u76f4\u63a5\u6253\u5370\u518d\u63a7\u5236\u53f0\u4e0a,\u5982\u9700\u6301\u4e45\u5316,\u53ef\u4f7f\u7528output\u53c2\u6570,\u4f8b\u5982\n\n qiniu-ufop process test.png -o output.png\n\n### \u672c\u5730\u8c03\u8bd5webserver\n\u542f\u52a8\u670d\u52a1\u5668\u53caworker\n\n qiniu-ufop runserver --debug\n qiniu-ufop runworker\n\n\u8bbf\u95ee\n> POST http://localhost:9100/handler?cmd=\\&url=\\\n\n\u6216\u5c06\u6587\u4ef6\u4f5c\u4e3abody,POST\u5230\n> POST http://localhost:9100/handler?cmd=\\\n\n> \u6ce8\u610f: \u4e0d\u662f\u4f7f\u7528multipart/formdata\u8fdb\u884c\u6587\u4ef6\u4e0a\u4f20\n\n> \u6ce8\u610f: \u5728windows\u4e0b\u5f00\u53d1\u9700\u989d\u5916\u5b89\u88c5`eventlet`,\u8fd0\u884crunworker\u65f6\u4f7f\u7528\u547d\u4ee4`qiniu-ufop runworker -P eventlet`\n> \n> \u5426\u5219\u4f1a\u62a5`ValueError: not enough values to unpack (expected 3, got 0)`\n\n### \u672c\u5730\u8c03\u8bd5Docker\n\u5728\u9879\u76ee\u76ee\u5f55\u4e0b\n\n qiniu-ufop dockerfile > Dockerfile\n docker pull ubuntu:18.04\n docker build . -t \n docker run --name -p 9100:9100 -t \n\n\u8bbf\u95ee\n> POST http://localhost:9100/handler?cmd=\\\n\n> \u6ce8\u610f: \u5728\u4f7f\u7528virtualbox\u65f6 localhost\u5e94\u6539\u4e3a\u865a\u62df\u673aip\n\n## \u95ee\u9898\u6392\u67e5\n### \u65e5\u5fd7\u67e5\u770b\n\u4e03\u725b\u7684\u65e5\u5fd7\u67e5\u770b\u597d\u50cf\u7ecf\u5e38\u53d6\u4e0d\u5230\u65e5\u5fd7,\u5efa\u8bae\u81ea\u884c\u5728\u5904\u7406\u7a0b\u5e8f\u4e2d\u57cb\u4e00\u4e2a\u4e0b\u8f7d\u65e5\u5fd7\u7684\u65b9\u6cd5,\u6765\u83b7\u53d6\u65e5\u5fd7.\u53ef\u4ee5\u53c2\u770b\u793a\u4f8b\u9879\u76ee\n\n### \u90e8\u7f72\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u5f02\u5e38\n\u5728\u8fd0\u884cqdoractl push\u65f6,\u53ef\u80fd\u4f1a\u9047\u5230\u8be5\u5f02\u5e38,\u53cd\u6b63\u6211\u662f\u9047\u5230\u4e86\n\n Get http://192.168.99.100:2376/v1.20/version: net/http: HTTP/1.x transport connection broken: malformed HTTP response \"\\x15\\x03\\x01\\x00\\x02\\x02\".\n\n * Are you trying to connect to a TLS-enabled daemon without TLS?\n\n\u9047\u5230\u4e0a\u8ff0\u5f02\u5e38,\u9996\u5148\u767b\u9646docker\u5bbf\u4e3b\u673a\n\n docker-machine ssh\n\n\u4fee\u6539docker\u914d\u7f6e,\u8bbe\u7f6e`DOCKER_TLS=no`\n\n sudo vi /var/lib/boot2docker/profile\n\n\u91cd\u542fdocker\u670d\u52a1\n\n sudo /etc/init.d/docker restart\n\n\u9000\u51fadocker\u5bbf\u4e3b\u673a\n\n exit\n\nunset\u672c\u673a\u73af\u5883\u53d8\u91cfDOCKER_TLS_VERIFY(\u4ee5windows\u4e3a\u4f8b)\n\n set DOCKER_TLS_VERIFY=\n\n\u518d\u5ea6\u6267\u884c\u90e8\u7f72(\u53c2\u89c1\u624b\u5de5\u90e8\u7f72\u6216\u4e00\u952e\u90e8\u7f72)\n\n## Cookbook\n### \u4f7f\u7528git\u66f4\u65b0\u4ee3\u7801\n* \u5728\u5de5\u4f5c\u8def\u5f84\u4e0b,\u751f\u6210ssh-key\n\n md .ssh\n ssh-keygen -f ./.ssh/id_rsa -t rsa -N ''\n\n* \u5c06\u751f\u6210\u7684 ./.ssh/id_rsa.pub \u52a0\u5165git\u4ed3\u5e93\u7684\u90e8\u7f72\u5bc6\u94a5\u4e2d\n\n* \u4fee\u6539Dockerfile,\u5728cmd\u524d\u52a0\u5165\n\n RUN apt-get install git\n ADD ./.ssh /root/.ssh\n RUN chmod 400 /root/.ssh/id_rsa\n RUN ssh-keyscan github.com >> /root/.ssh/known_hosts\n RUN git clone your@repository\n\n* \u4fee\u6539script.sh\n\n git pull origin master\n\n> \u6ce8\u610f: \u7531\u4e8e\u5c06\u79c1\u94a5\u52a0\u5165\u4e86\u955c\u50cf,\u4efb\u4f55\u62ff\u5230\u4f60\u7684\u955c\u50cf\u7684\u7528\u6237,\u5c06\u53ef\u4ee5\u83b7\u53d6\u5230\u4f60\u7684\u79c1\u94a5\n\n## TODOS:\n* \u5f02\u5e38\u5904\u7406\n* \u5355\u5143\u6d4b\u8bd5\n* \u6d4b\u8bd5\u5f02\u6b65\n\n> \u5410\u69fd\u4e00\u4e0b\u4e03\u725b\u7684\u5de5\u5355\u5904\u7406,\u6211\u63d0\u4e86\u81f3\u5c113\u4e2abug,\u8981\u4e48\u88c5\u50bb,\u8981\u4e48\u8bf4\u5bf9\u4e0d\u8d77,\u6211\u4eec\u6709\u95ee\u9898,\u8bf7\u4f60\u4f7f\u7528\u5176\u4ed6\u65b9\u6cd5...\u53e6\u5916\u6587\u6863\u81ea\u5b9a\u4e49\u6570\u636e\u5904\u7406\u8fd9\u5757\u6587\u6863\u4e5f\u6bd4\u8f83\u7cdf\u7cd5.\n\n> \u6709\u95ee\u9898\u53ef\u4ee5\u63d0issue\u6211\u95ee\u6211,star\u6570\u4e0a50\u518d\u8003\u8651\u5355\u5143\u6d4b\u8bd5\u5427~\n\nXavier-Lam@NetDragon\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/Xavier-Lam/qiniu-ufop", "keywords": "qiniu,ufop,\u4e03\u725b", "license": "", "maintainer": "", "maintainer_email": "", "name": "qiniu-ufop", "package_url": "https://pypi.org/project/qiniu-ufop/", "platform": "", "project_url": "https://pypi.org/project/qiniu-ufop/", "project_urls": { "Homepage": "https://github.com/Xavier-Lam/qiniu-ufop" }, "release_url": "https://pypi.org/project/qiniu-ufop/0.1.3/", "requires_dist": [ "celery (>=4.3.0)", "PyYAML (>=5.1)", "redis (>=3.2.0)", "six (>=1.7.0)", "tornado (<6.0.0,>=5.1.0)" ], "requires_python": "", "summary": "Qiniu ufop development tool", "version": "0.1.3" }, "last_serial": 5441440, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "cad498351deca4034f9aa4af6d40bd38", "sha256": "e739acd5d113bc9c8d27b2e47725213f7f1e88e2d864575e8d4043eb4d845df9" }, "downloads": -1, "filename": "qiniu_ufop-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cad498351deca4034f9aa4af6d40bd38", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26019, "upload_time": "2019-06-10T16:30:59", "url": "https://files.pythonhosted.org/packages/1d/0e/561694f3399fca1cd24e944a519b1420d8fcb7eee5c78f31e34d7cb04908/qiniu_ufop-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "55ce630d736cd986dcd5f748fede2734", "sha256": "9cc9fa1764a2585147a55816977e38efb56c25f05157310342407cf5757dd8e1" }, "downloads": -1, "filename": "qiniu-ufop-0.1.2.tar.gz", "has_sig": false, "md5_digest": "55ce630d736cd986dcd5f748fede2734", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18142, "upload_time": "2019-06-10T16:31:01", "url": "https://files.pythonhosted.org/packages/cc/b0/92c35f29a338502d9c71ae166ab3a676b743c990a945f3815a520074b328/qiniu-ufop-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7da304ccf29490173c89f6620550828a", "sha256": "01b1c48260e418ffb2cd6aedd37a96d00640d23db4347a1d6f0cfc05d3524afc" }, "downloads": -1, "filename": "qiniu_ufop-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7da304ccf29490173c89f6620550828a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26617, "upload_time": "2019-06-24T16:23:02", "url": "https://files.pythonhosted.org/packages/fb/98/6d5c196e368f879fd970106ca6d2e0a49a166e4262b20d37c73d9c9616ec/qiniu_ufop-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a805e3d99ec22d8efb107ad535993d4", "sha256": "51edebe08e2bf1a95a6b593e9378575ce58828a41ae7a02e1b1b8628d3db5a45" }, "downloads": -1, "filename": "qiniu-ufop-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8a805e3d99ec22d8efb107ad535993d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18968, "upload_time": "2019-06-24T16:23:04", "url": "https://files.pythonhosted.org/packages/5e/64/9eeeeb398a12152384ec31052de7e5be954118e90e19446ca54e28de0850/qiniu-ufop-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7da304ccf29490173c89f6620550828a", "sha256": "01b1c48260e418ffb2cd6aedd37a96d00640d23db4347a1d6f0cfc05d3524afc" }, "downloads": -1, "filename": "qiniu_ufop-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7da304ccf29490173c89f6620550828a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26617, "upload_time": "2019-06-24T16:23:02", "url": "https://files.pythonhosted.org/packages/fb/98/6d5c196e368f879fd970106ca6d2e0a49a166e4262b20d37c73d9c9616ec/qiniu_ufop-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a805e3d99ec22d8efb107ad535993d4", "sha256": "51edebe08e2bf1a95a6b593e9378575ce58828a41ae7a02e1b1b8628d3db5a45" }, "downloads": -1, "filename": "qiniu-ufop-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8a805e3d99ec22d8efb107ad535993d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18968, "upload_time": "2019-06-24T16:23:04", "url": "https://files.pythonhosted.org/packages/5e/64/9eeeeb398a12152384ec31052de7e5be954118e90e19446ca54e28de0850/qiniu-ufop-0.1.3.tar.gz" } ] }