{ "info": { "author": "TAL AI-LAB", "author_email": "author@example.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "# Document for dawn's SDK\n\nThis is the SDK for dawn, which is OSS system. Dawn is honorly presented by TAL's ocean team.\n\n# OSS-SDK python \u4f7f\u7528\u8bf4\u660e\n\n## \u63cf\u8ff0\n\n- \u672c\u6587\u6863\u9002\u7528\u4e8eOSS-SDK python\u8bed\u8a00\u7248\u672c\u7684\u5f00\u53d1\u6307\u5357\u3002\n- \u4e3b\u8981\u63d0\u4f9b\u5982\u4e0b\u529f\u80fd\n - [x] 1.\u4e0a\u4f20\u5355\u4e2a\u6587\u4ef6\n - [x] 2.\u751f\u6210\u5bf9\u8c61web\u8bbf\u95eeurl\uff0c\u8be5url\u5e26\u8fc7\u671f\u65f6\u95f4\n - [x] 3.\u5927\u6587\u4ef6\u5206\u6bb5\u4e0a\u4f20\n - [x] 4.\u67e5\u8be2\u79df\u6237\u4e0b\u9762\u7684bucket\u5217\u8868\n - [x] 5.\u67e5\u8be2bucket\u4e0b\u9762\u7684\u5bf9\u8c61\u5217\u8868\n\n## \u4f7f\u7528\u524d\u51c6\u5907\n- \u4f7f\u7528OSS-SDK\u524d\u9700\u8981\u5148\u4e0b\u8f7d\uff0c\u53ef\u4ee5\u91c7\u7528\u4e0b\u9762\u7684\u65b9\u5f0f\u4e0b\u8f7d\uff1a\n - [x] pip install dawn-sdk // python2\u4e0b\u8f7d\n - [x] pip3 install dawn-sdk // python3\u4e0b\u8f7d\n- \u5728\u4f7f\u7528\u4e4b\u524d\u5f15\u5165\u5305\n - \u53ef\u4ee5\u5f15\u5165\u5982\u4e0b\u5305\n ```python\n from dawn_sdk import auth //\u8ba4\u8bc1\u76f8\u5173\u7c7b\u63a5\u53e3\n from dawn_sdk import bucket //bucket\u7c7b\u63a5\u53e3\n from dawn_sdk.xml_body import PartInfo //\u5206\u6bb5\u4e0a\u4f20\u8fd4\u56de\u7684\u5206\u6bb5\u4fe1\u606f\u7c7b\n ... //\u5176\u4ed6\u5bfc\u5165\n ```\n\n## Bucket\u7c7b\u63a5\u53e3\n- bucket\u64cd\u4f5c\u76f8\u5173\u63a5\u53e3\n### 1. \u6784\u9020\u51fd\u6570\n - \u539f\u578b\n ```python\n def __init__(self, auth, endpoint, bucket, session=None, connect_timeout=None)\n ```\n - \u53c2\u6570\u548c\u8fd4\u56de\u503c\uff1a\n - [x] auth: \u8ba4\u8bc1\u5b9e\u4f8b\u5bf9\u8c61\uff0c\u5373auth.Authorize\u7c7b\u7684\u5b9e\u4f8b\u5bf9\u8c61\uff0c\u7528\u4e8e\u8ba4\u8bc1\u3002\n - [x] endpoint: \u7aef\u70b9\uff0cOSS\u670d\u52a1\u7aef\u70b9\uff0c\u5177\u4f53\u503c\u8bf7\u54a8\u8be2\u670d\u52a1\u63d0\u4f9b\u8005\u3002\n - [x] bucket: bucket\u540d\u79f0\u3002\n - [x] session: \u4f1a\u8bdd\uff0c\u901a\u5e38\u7528\u4e8e\u590d\u7528\u4e4b\u524d\u4f7f\u7528\u7684\u4f1a\u8bdd\uff0c\u53ef\u4ee5\u4e0d\u8fdb\u884c\u8bbe\u7f6e\uff0c\u9ed8\u8ba4\u4e0d\u590d\u7528\u4e4b\u524d\u7684\u4f1a\u8bdd\u3002\n - [x] connect_timeout: \u8fde\u63a5\u8d85\u65f6\uff0c\u5355\u4f4d\u4e3a\u79d2\uff0c\u53ef\u4ee5\u4e0d\u8bbe\u5b9a\u8be5\u53c2\u6570\uff0c\u5c06\u4f7f\u7528\u9ed8\u8ba4\u8d85\u65f6: 30s.\n - \u8fd4\u56de\u503c\uff0c\u65e0\u3002\n - \u4f7f\u7528\u793a\u4f8b\uff1a\n ```python\n from dawn_sdk import auth\n from dawn_sdk import bucket\n\n access_key=\"\"def sign_url(self, key, expires, method='GET', headers=None, params=None)\n secret_key=\"\"def sign_url(self, key, expires, method='GET', headers=None, params=None)\n\n //\u521d\u59cb\u5316\u8ba4\u8bc1\n ath = auth.Authorize(access_kdef sign_url(self, key, expires, method='GET', headers=None, params=None)\n\n endpoint=\"\"\n bucket_name=\"\"\n is_cname=\"\" //\u9700\u8981\u54a8\u8be2\u670d\u52a1\u63d0\u4f9b\u5546\n conn_timeout=60 //\u8bbe\u7f6e\u8fde\u63a5\u8d85\u65f6\u4e3a60s\n\n //\u521d\u59cb\u5316bucket\n bkt = bucket.Bucket(ath, endpoint, bucket_name, is_cname\uff0c connect_timeout=conn_timeout)\n\n ```\n### 2. \u4e0a\u4f20\u5bf9\u8c61\uff0c\u4ece\u7f13\u51b2\u533a\u4e0a\u4f20\n - \u539f\u578b\n ```python\n def put_object(self, key, data, headers=None, progress_callback=None, upload_speed_limited=None)\n ```\n - \u53c2\u6570\u548c\u8fd4\u56de\u503c\n - [x] key: \u9700\u8981\u4e0a\u4f20\u7684\u5bf9\u8c61\u540d\n - [x] data: \u9700\u8981\u4e0a\u4f20\u5bf9\u8c61\u7684\u6570\u636e\uff0c\u6570\u636e\u7684\u957f\u5ea6\u5fc5\u987b\u5c0f\u4e8e5GB\n - [x] header: \u7528\u6237\u81ea\u5b9a\u4e49HTTP\u5934\uff0c\u901a\u5e38\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u5934\uff0c\n - [x] progress_callback: \u4e0a\u4f20\u8fdb\u5ea6\u56de\u8c03\uff0c\u539f\u578b\u4e3a\uff1a def progress_func(chunk_size, size)\n - [x] chunk_size: \u5df2\u7ecf\u4f20\u8f93\u7684\u5b57\u8282\u6570\n - [x] size: \u603b\u5b57\u8282\u6570\u3002\n - [x] upload_speed_limited: \u4e0a\u4f20\u901f\u5ea6\u9650\u5236\uff0c\u5355\u4f4d\u4e3a\u5b57\u8282\u6bcf\u79d2\u3002\u4e0d\u6307\u5b9a\u8be5\u53c2\u6570\u65f6\uff0c\u5373\u4e0d\u9650\u901f\u3002\n - \u8fd4\u56de\u503c: \u4e0a\u4f20\u6210\u529f\u5219\u8fd4\u56dePutObject\u5bf9\u8c61\uff0c\u5426\u5219\u629b\u51fa\u5f02\u5e38\uff0c\u53ef\u4ee5\u67e5\u770b\u5f02\u5e38\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\n - \u4f7f\u7528\u793a\u4f8b:\n ```python\n\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n //bkt = bucket.Bucket(...);\n\n //\u5bf9\u8c61\u540d\n obj=\"\"\n data=\"\"\n //progress_func\u4e3a\u4e0a\u4f20\u8fdb\u5ea6\u56de\u8c03\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n progress_func=...\n //limit\u4e3a\u4e0a\u4f20\u901f\u5ea6\u9650\u5236\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n limit=...\n try:\n result = bkt.put_object(obj, data, progress_callback=progress_func, upload_speed_limited=limit)\n //\u6210\u529f\u5219\u4e0d\u629b\u51fa\u5f02\u5e38\u3002\n except BaseError, err:\n //\u5904\u7406\u5931\u8d25\n\n ```\n### 3. \u4e0a\u4f20\u5bf9\u8c61\uff0c\u4ece\u6587\u4ef6\u4e0a\u4f20\n - \u539f\u578b\n ```python\n def put_object_from_file(self, key, filename, headers=None, progress_callback=None, upload_speed_limited=None)\n ```\n - \u53c2\u6570\u548c\u8fd4\u56de\u503c\n - [x] key: \u9700\u8981\u4e0a\u4f20\u7684\u5bf9\u8c61\u540d\n - [x] filename: \u9700\u8981\u4e0a\u4f20\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u6587\u4ef6\u5927\u5c0f\u5fc5\u987b\u5c0f\u4e8e5GB\n - [x] header: \u7528\u6237\u81ea\u5b9a\u4e49HTTP\u5934\uff0c\u901a\u5e38\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u5934\uff0c\n - [x] progress_callback: \u4e0a\u4f20\u8fdb\u5ea6\u56de\u8c03\uff0c\u539f\u578b\u4e3a\uff1a def progress_func(chunk_size, size)\n - [x] chunk_size: \u5df2\u7ecf\u4f20\u8f93\u7684\u5b57\u8282\u6570\n - [x] size: \u603b\u5b57\u8282\u6570\u3002\n - [x] upload_speed_limited: \u4e0a\u4f20\u901f\u5ea6\u9650\u5236\uff0c\u5355\u4f4d\u4e3a\u5b57\u8282\u6bcf\u79d2\u3002\u4e0d\u6307\u5b9a\u8be5\u53c2\u6570\u65f6\uff0c\u5373\u4e0d\u9650\u901f\u3002\n - \u8fd4\u56de\u503c: \u4e0a\u4f20\u6210\u529f\u5219\u8fd4\u56dePutObject\u5bf9\u8c61\uff0c\u5426\u5219\u629b\u51fa\u5f02\u5e38\uff0c\u53ef\u4ee5\u67e5\u770b\u5f02\u5e38\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\n - \u4f7f\u7528\u793a\u4f8b:\n ```python\n\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n //bkt = bucket.Bucket(...);\n\n //\u5bf9\u8c61\u540d\n obj=\"\"\n file=\"\"\n //progress_func\u4e3a\u4e0a\u4f20\u8fdb\u5ea6\u56de\u8c03\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n //upload_speed_limit\u4e3a\u4e0a\u4f20\u901f\u5ea6\u9650\u5236\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n try:\n result = bkt.put_object_from_file(obj, file, progress_callback=progress_func, upload_speed_limited=limit)\n //\u6210\u529f\u5219\u4e0d\u629b\u51fa\u5f02\u5e38\u3002\n except BaseError, err:\n //\u5904\u7406\u5931\u8d25\n\n ``` \n### 4. \u5206\u6bb5\u4e0a\u4f20\u63a5\u53e3\n- \u5206\u6bb5\u4e0a\u4f20\u662f\u4e00\u7ec4\u63a5\u53e3\u534f\u540c\u5de5\u4f5c\n- \u521d\u59cb\u5316\u63a5\u53e3\n - \u539f\u578b\n ```python\n def init_multipart_upload(self, key, headers=None)\n ```\n - \u63a5\u53e3\u8bf4\u660e\n - [x] key: \u5bf9\u8c61\u540d\u79f0\n - [x] headers: \u81ea\u5b9a\u4e49HTTP\u5934\uff0c\u901a\u5e38\u4e0d\u7528\u6307\u5b9a\u3002\n - \u8fd4\u56de\u503c\uff1a \u5982\u679c\u6210\u529f\uff0c\u5219\u8fd4\u56deInitMultipartUpload\u5bf9\u8c61\uff0c\u8be5\u5bf9\u8c61\u5305\u542b\u4e86upload\u7684id\uff0c\u4f5c\u4e3a\u540e\u7eed\u7684\u591a\u6b21\u4e0a\u4f20\u7684\u53c2\u6570\u4f7f\u7528\uff1b\u5982\u679c\u5931\u8d25\uff0c\u5219\u629b\u51fa\u5f02\u5e38\u3002\n - \u4f7f\u7528\u793a\u4f8b: \u89c1\u540e\u9762\u7684\u7edf\u4e00\u793a\u4f8b\n- \u4e0a\u4f20\u63a5\u53e3\n - \u539f\u578b\n ```python\n def upload_part(self, key, upload_id, part_number, data, progress_callback=None, upload_speed_limited=None, headers=None)\n ```\n - \u63a5\u53e3\u8bf4\u660e\n - [x] key: \u5bf9\u8c61\u540d\u79f0quxiao\n - [x] upload_id: \u8c03quxiao\u7684\u8fd4\u56de\u503c\u3002\n - [x] part_number: quxiao\u8303\u56f4\u4e3a[1, 10000]\n - [x] data: \u4e0a\u4f20\u7684quxiao\u662f\u7f13\u51b2\u533a\u6570\u636e\uff0c\u4e5f\u53ef\u4ee5\u662fLimitedReader\u5bf9\u8c61: LimitedReader\u662f\u4e00\u4e2a\u53d7\u9650\u5236\u7684\u8bfb\u53d6\u5668\uff0c\u53ef\u4ee5\u6307\u5b9a\u8bfb\u53d6\u7684\u957f\u5ea6\uff0c\u800c\u4e0d\u662f\u6574\u4e2a\u6587\u4ef6\u957f\u5ea6\u3002\u6bcf\u6b21\u4e0a\u4f20\u7684\u6570\u636e\u6700\u59275GB\uff0c\u9664\u4e86\u6700\u540e\u4e00\u4e2a\u5206\u6bb5\u6570\u636e\u6ca1\u6709\u6700\u5c0f\u9650\u5236\u5916\uff0c\u5176\u4ed6\u5206\u6bb5\u90fd\u5fc5\u987b\u5927\u4e8e\u7b49\u4e8e5MB\u3002\n - [x] progress_callquxiao\u5ea6\u56de\u8c03\uff0c\u539f\u578b\u4e3a\uff1a def progress_func(chunk_size, size)\n - [x] chunk_size:quxiao\u8282\u6570\n - [x] size: \u603b\u5b57quxiao\n - [x] upload_speed_quxiao\u901f\u5ea6\u9650\u5236\uff0c\u5355\u4f4d\u4e3a\u5b57\u8282\u6bcf\u79d2\u3002\u4e0d\u6307\u5b9a\u8be5\u53c2\u6570\u65f6\uff0c\u5373\u4e0d\u9650\u901f\u3002\n - [x] header: \u7528\u6237quxiao\u901a\u5e38\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u5934\uff0c\n - \u8fd4\u56de\u503c\uff1a \u5982\u679c\u6210\u529f\uff0c\u5219\u8fd4\u56dePutObject\u5bf9\u8c61\uff0c\u8be5\u5bf9\u8c61\u5305\u542b\u4e86\u8be5\u5206\u6bb5\u7684ETAG\uff0c\u548cpart_number\u6784\u6210\u4e00\u4e2a\u4e0a\u4f20\u4fe1\u606f\uff0c\u6240\u6709\u7684\u4e0a\u4f20\u4fe1\u606f\u6784\u6210\u4e0a\u4f20\u6570\u7ec4\uff0c\u4f5c\u4e3a\u540e\u7eed\u5b8c\u6210\u4e0a\u4f20\u7684\u53c2\u6570\u4f7f\u7528\uff1b\u5982\u679c\u5931\u8d25\uff0c\u5219\u629b\u51fa\u5f02\u5e38\u3002\n - \u4f7f\u7528\u793a\u4f8b: \u89c1\u540e\u9762\u7684\u7edf\u4e00\u793a\u4f8b\n- \u5b8c\u6210\u4e0a\u4f20\u63a5\u53e3\n - \u539f\u578b\n ```python\n def complete_multipart_upload(self, key, upload_id, parts, headers=None)\n ```\n - \u63a5\u53e3\u8bf4\u660e\n - [x] key: \u5bf9\u8c61\u540d\u79f0\n - [x] upload_id: \u8c03\u7528\u521d\u59cb\u5316\u63a5\u53e3\u7684\u8fd4\u56de\u503c\u3002\n - [x] parts: \u5206\u6bb5\u4e0a\u4f20\u7684\u6570\u7ec4\uff0c\u6570\u7ec4\u5143\u7d20\u4e3a\u5355\u8bcd\u7684\u4e0a\u4f20\u4fe1\u606f\uff0c\u5305\u542bpart_number\u548c\u4e0a\u4f20\u6210\u529f\u8fd4\u56de\u7684ETAG\u3002\n - [x] header: \u7528\u6237\u81ea\u5b9a\u4e49HTTP\u5934\uff0c\u901a\u5e38\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u5934\uff0c\n - \u8fd4\u56de\u503c\uff1a \u5982\u679c\u6210\u529f\uff0c\u5219\u8fd4\u56dePutObject\u5bf9\u8c61\uff1b\u5982\u679c\u5931\u8d25\uff0c\u5219\u629b\u51fa\u5f02\u5e38\u3002\n - **\u8bf4\u660e** \u5206\u6bb5\u4e0a\u4f20\u63a5\u53e3\u8c03\u7528\u540e\uff0c\u5bf9\u8c61\u5b58\u50a8\u5373\u5f00\u59cb\u8ba1\u8d39\uff0c\u5f53\u8c03\u7528\u5b8c\u6210\u6216\u8005\u53d6\u6d88\u63a5\u53e3\u65f6\uff0c\u5206\u6bb5\u5bf9\u8c61\u624d\u5f97\u4ee5\u6d88\u9664\u3002\u6240\u4ee5\u8bf7\u52a1\u5fc5\u8c03\u7528\u5b8c\u6210\u6216\u8005\u53d6\u6d88\u63a5\u53e3\u3002\n - \u4f7f\u7528\u793a\u4f8b: \u89c1\u540e\u9762\u7684\u7edf\u4e00\u793a\u4f8b\n- \u53d6\u6d88\u4e0a\u4f20\u63a5\u53e3\n - \u539f\u578b\n ```python\n def abort_multipart_upload(self, key, upload_id)\n ```\n - \u63a5\u53e3\u8bf4\u660e\n - [x] key: \u5bf9\u8c61\u540d\u79f0\n - [x] upload_id: \u8c03\u7528\u59cb\u5316\u63a5\u53e3\u7684\u8fd4\u56de\u503c\u3002\n - \u8fd4\u56de\u503c: \u6210\u529f\u8fd4\u56deResult\u5bf9\u8c61\uff1b\u5982\u679c\u5931\u8d25\uff0c\u5219\u629b\u51fa\u5f02\u5e38\u3002\n - **\u8bf4\u660e** \u5206\u6bb5\u4e0a\u4f20\u63a5\u53e3\u8c03\u7528\u540e\uff0c\u5bf9\u8c61\u5b58\u50a8\u5373\u5f00\u59cb\u8ba1\u8d39\uff0c\u5f53\u8c03\u7528\u5b8c\u6210\u6216\u8005\u53d6\u6d88\u63a5\u53e3\u65f6\uff0c\u5206\u6bb5\u5bf9\u8c61\u624d\u5f97\u4ee5\u6d88\u9664\u3002\u6240\u4ee5\u8bf7\u52a1\u5fc5\u8c03\u7528\u5b8c\u6210\u6216\u8005\u53d6\u6d88\u63a5\u53e3\u3002\n - \u4f7f\u7528\u793a\u4f8b: \u89c1\u540e\u9762\u7684\u7edf\u4e00\u793a\u4f8b\n- \u7edf\u4e00\u793a\u4f8b:\n ```python\n\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n //bkt = bucket.Bucket(...);\n\n //progress_func\u4e3a\u4e0a\u4f20\u8fdb\u5ea6\u56de\u8c03\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n progress_func=...\n //limit\u4e3a\u4e0a\u4f20\u901f\u5ea6\u9650\u5236\uff0c\u8be5\u53c2\u6570\u53ef\u9009\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u3002\n limit=...\n\n //\u5bf9\u8c61\u540d\n obj=\"\"\n file=\"\"\n\n flen = os.path.getsize(file)\n with open(file, 'rb') as f:\n //\u5206\u7247\u5927\u5c0f\n slice = (1024 * 1024) * 5\n\n //\u5206\u6bb5\u6570\n times = flen // slice\n //\u6700\u540e\u4e00\u6bb5\u7684\u5927\u5c0f\n left = flen % slice\n\n\n uid = None\n //\u5206\u6bb5\u521d\u59cb\u5316\n try: \n result = bkt.init_multipart_upload(obj)\n uid = result.upload_id\n except BaseError, err:\n //\u5904\u7406\u9519\u8bef\n\n parts = []\n number = 1\n while True:\n if times == 0:\n break\n //\u4f7f\u7528\u9650\u5236\u8bfb\u53d6\u5668\uff1a \u9650\u5236\u8bfb\u53d6\u5668\u6301\u6709\u652f\u6301read\u7684\u63a5\u53e3\u7684\u5bf9\u8c61\u3002\u6bcf\u6b21\u6700\u591a\u8bfb\u53d6`slice`\u4e2a\u5b57\u8282\u6570\u636e\u3002 \n reader = LimitedReader(f, slice)\n\n try:\n out = bkt.upload_part(obj, uid, number, reader, progress_callback=progress_func, upload_speed_limited=limit)\n part = PartInfo(number, out.etag)\n parts.append(part)\n except BaseError, err:\n //\u5904\u7406\u9519\u8bef\u6216\u8005\u8c03\u7528\u53d6\u6d88\u63a5\u53e3\u53d6\u6d88\n bkt.abort_multipart_upload(obj, uid)\n exit(-1)\n\n number += 1\n times -= 1\n\n if left > 0:\n reader = LimitedReader(f, left)\n\n out = bkt.upload_part(obj, uid, number, reader, progress_callback=progress_func, upload_speed_limited=limit)\n part = PartInfo(number, out.etag)\n parts.append(part)\n try:\n result = bkt.complete_multipart_upload(obj, uid, parts)\n except BaseError, err:\n //\u5904\u7406\u9519\u8bef\u6216\u8005\u91cd\u8bd5\u591a\u6b21\u76f4\u5230\u6210\u529f\u3002\n\n ```\n### \u751f\u6210\u5bf9\u8c61web\u8bbf\u95eeurl\u63a5\u53e3\n - \u539f\u578b\n ```python\n def sign_url(self, key, expires, method='GET', headers=None, params=None)\n ```\n - \u63a5\u53e3\u8bf4\u660e\n - [x] key: \u5bf9\u8c61\u540d\u79f0\n - [x] expires: \u8fc7\u671f\u65f6\u95f4\uff0c\u4ece\u5f53\u524d\u65f6\u95f4\u5f00\u59cb\u7684\u79d2\u6570\u3002\n - [x] method: \u4f7f\u7528url\u65f6\u7684HTTP\u65b9\u6cd5\uff0c\u9ed8\u8ba4\u4e3aGET\u3002\n - [x] headers: \u81ea\u5b9a\u4e49HTTP\u5934\uff0c\u901a\u5e38\u4e0d\u7528\u6307\u5b9a\u3002\n - [x] params: \u81ea\u5b9a\u4e49HTTP\u53c2\u6570\uff0c\u901a\u5e38\u4e0d\u7528\u6307\u5b9a\u3002\n - \u8fd4\u56de\u503c\uff1a \u8fd4\u56de\u5bf9\u8c61\u7684web\u8bbf\u95eeurl\u5b57\u7b26\u4e32\n - \u4f7f\u7528\u793a\u4f8b\n ```python\n\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n //bkt = bucket.Bucket(...);\n\n obj=\"\"\n expires=3600 // 3600\u79d2 == 1\u5c0f\u65f6\n\n url = bkt.sign_url()\n### \u67e5\u770bbucket\u4e0b\u9762\u7684\u5bf9\u8c61\n- \u63cf\u8ff0\uff0c\u4f7f\u7528\u573a\u666f\n - [x] \u67e5\u8be2bucket\u4e0b\u9762\u7684\u5bf9\u8c61\n - [x] \u901a\u8fc7\u8bbe\u5b9a\u67e5\u8be2\u7684\u524d\u7f00\u6765\u67e5\u8be2\u7279\u5b9a\u524d\u7f00\u7684\u5bf9\u8c61\uff0c\u901a\u5e38\u53ef\u7528\u4e8e\u5c06\u5bf9\u8c61\u540d\u8bbe\u7f6e\u4e3a\u5e26\u76ee\u5f55\u7ed3\u6784\u7684\u5f62\u5f0f\uff0c\u6307\u5b9a\u524d\u7f00\u67e5\u8be2\uff0c\u5c06\u8fd4\u56de\u76ee\u5f55\u4e0b\u9762\u7684\u6587\u4ef6/\u6587\u4ef6\u5939\u3002\n - [x] \u5f53\u5bf9\u8c61\u8f83\u591a\u65f6\uff0c\u4e00\u6b21\u67e5\u8be2\u65e0\u6cd5\u5b8c\u6210\uff0c\u53ef\u4ee5\u50cf\u4f7f\u7528\u8fed\u4ee3\u5668\u4e00\u6837\uff0c\u8fed\u4ee3\u5269\u4f59\u7684\u67e5\u8be2\u7ed3\u679c\u3002\n\n - \u63a5\u53e3\u63cf\u8ff0\u548c\u5b9a\u4e49\n ```python\n def list_objects(self, prefix='', delimiter='', marker='', max_keys=100)\n ```\n - \u53c2\u6570\n - [x] prefix\n - \u67e5\u8be2\u5bf9\u8c61\u65f6\uff0c\u6ee1\u8db3\u6307\u5b9a\u7684\u524d\u7f00\u7684\u5bf9\u8c61\u5c06\u8fd4\u56de\u3002\n - [x] delimiter \n - \u67e5\u8be2\u65f6\u7684\u5206\u9694\u7b26\uff0c\u548cprefix\u7ed3\u5408\u4f7f\u7528\n - [x] marker\n - \u67e5\u8be2\u65f6\uff0c\u4ece`\u6807\u8bb0`\u5904\u5f00\u59cb\uff0c\u8fd4\u56de\u4e4b\u540e\u7684\u5bf9\u8c61\uff0c **\u6ce8\u610f\uff0c\u4e4b\u540e\u6307\u7684\u662f\u5bf9\u8c61\u540d\u6309\u7167\u5b57\u5178\u5e8f\u6392\u5e8f\u4e4b\u540e\u3002**\n - [x] max_keys\n - \u67e5\u8be2\u65f6\uff0c\u6bcf\u6b21\u6700\u591a\u8fd4\u56de\u591a\u5c11\u4e2a\u5bf9\u8c61\uff0c\u5f53\u8fd8\u6709\u5269\u4f59\u5bf9\u8c61\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u7ee7\u7eed\u67e5\u8be2\u3002\u9ed8\u8ba4\u4e3a100\n - \u8fd4\u56de\u503cListObjects\u5b9a\u4e49\n ```python\n class ListObjects(Result):\n def __init__(self, resp):\n super(ListObjects, self).__init__(resp)\n\n self.is_continous = False //\u77e5\u8bc6\u662f\u5426\u6240\u6709\u7684\u5bf9\u8c61\u8fd4\u56de\u4e86\u3002\n self.next_marker = '' //\u5f53\u67e5\u8be2\u5927\u4e8emax_keys\u65f6\uff0c\u4e0b\u6b21\u8c03\u7528\uff0c\u9700\u8981\u4f7f\u7528\u8be5\u503c\u4f5c\u4e3a\u4e0b\u6b21\u8c03\u7528\u7684\u6807\u8bb0\uff0c\u4ee5\u6b64\u6765\u4fdd\u8bc1\u4e0b\u6b21\u8c03\u7528\u7684\u6b63\u786e\u6027\u3002\n self.objects = [] //\u5bf9\u8c61\u5217\u8868\uff0c\u7c7b\u578b\u5982\u4e0bSimplifiedBucketInfo\n self.prefixes = [] //\u76ee\u5f55\u5217\u8868\n\n class SimplifiedBucketInfo(object):\n def __init__(self, name, creation_date):\n #: Bucket\u540d\n self.name = name\n\n #: Bucket\u7684\u521b\u5efa\u65f6\u95f4\uff0c\u7c7b\u578b\u4e3aint\u3002\u53c2\u8003 :ref:`unix_time`\u3002\n self.creation_date = creation_date\n ```\n - **\u63a5\u53e3\u4f7f\u7528\u793a\u4f8b-1**\n \u8c03\u7528\u6b65\u9aa4\uff1a\n - [x] \u51c6\u5907bucket\n ```python\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n bkt = bucket.Bucket(...);\n ...\n ```\n - [x] \u67e5\u8be2\u5bf9\u8c61\n \u5047\u5b9abucket\u5185\u7684\u5bf9\u8c61\u5982\u4e0b\uff1a\n - [x] object-1\n - [x] object-11\n - [x] object-2\n - [x] object-21\n - [x] object-22\n - [x] object-3\n - [x] object-31\n - [x] object-32\n - [x] \u67e5\u8be2\u6240\u6709\u5bf9\u8c61(\u65e0\u4efb\u4f55\u53c2\u6570\u9009\u9879)\n ```python\n objects = bkt.list_objects()\n\n //\u5c06\u8fd4\u56de\u6240\u6709\u5bf9\u8c61\n ```\n - [x] \u67e5\u8be2\uff0c\u6bcf\u6b21\u6700\u591a\u8fd4\u56de3\u4e2a\u5bf9\u8c61\u7ed3\u679c\u3002\n ```python\n // 2. max keys option.\n objects = bkt.list_objects(max_keys = 3)\n //\u5c06\u8fd4\u56de\u524d\u4e09\u4e2a\u5bf9\u8c61\uff0c\u8fd4\u56de\u7684\u5bf9\u8c61\u662f\u6309\u7167\u5bf9\u8c61\u540d\u8fdb\u884c\u5b57\u5178\u5e8f\u6392\u5217\u7684\u3002\n ```\n - [x] \u67e5\u8be2\uff0c\u5e26\u7279\u5b9a\u524d\u7f00\u7684\u5bf9\u8c61\n ```python\n // 3. prefix option.\n objects = bkt.list_objects(prefix = \"object-2\")\n //\u5c06\u8fd4\u56de\u4ee5object-2\u5f00\u5934\u7684\u5bf9\u8c61\uff0c\u5305\u542bobject-2\n ```\n - [x] \u67e5\u8be2\uff0c\u4ece\u7279\u5b9a\u6807\u8bb0\u5f00\u59cb\u4e4b\u540e\u7684\u5bf9\u8c61\n ```python\n // 4. marker option.\n objects = bkt.list_objects(marker = \"object-22\")\n //\u5c06\u8fd4\u56de\u4ee5object-22\u4e3a\u6807\u8bb0\uff0c\u4e4b\u540e\u7684\u5bf9\u8c61\uff0c\u6ce8\u610f\uff0c\u4e4b\u540e\u6307\u7684\u662f\u6309\u7167\u5b57\u5178\u5e8f\u6392\u5e8f\u4e4b\u540e\u3002\n ```\n - [x] \u67e5\u8be2\uff0c\u591a\u6b21\u67e5\u8be2\uff0c\u6bcf\u6b21\u8fd4\u56de\u6700\u591a3\u4e2a\uff1b\u5e76\u8fed\u4ee3\u67e5\u8be2\uff0c\u76f4\u5230\u67e5\u8be2\u7ed3\u675f\u3002\n ```python\n // Case 5: List object with paging. each page has 3 objects\n mark = ''\n while True:\n objs = bkt.list_objects(max_keys = 3, marker = mark)\n\n //\u6536\u96c6\u5bf9\u8c61\n ......\n\n //\u4e0b\u6b21\u7684\u67e5\u8be2\u9700\u8981\u8bbe\u7f6e\u5f53\u524d\u67e5\u8be2\u7684\u8fd4\u56de\u503cNextMarker\u4e3amarker\u53c2\u6570\uff0c\u5e76\u4f5c\u4e3a\u4e0b\u6b21\u8fed\u4ee3\u7684\u5f00\u59cb\u3002\n mark = objs.next_marker\n if !objs.is_continus:\n break\n ```\n - [x] \u67e5\u8be2\uff0c\u4ece\u7279\u5b9a\u6807\u8bb0\u5f00\u59cb\u4e4b\u540e\u7684\u5bf9\u8c61\uff0c\u5e76\u4e14\u6bcf\u6b21\u6700\u591a\u8fd4\u56de3\u4e2a\u5bf9\u8c61\uff1b \u5e76\u8fed\u4ee3\u67e5\u8be2\uff0c\u76f4\u5230\u67e5\u8be2\u7ed3\u675f\u3002\n ```python\n // Case 6: List object with paging , marker and max keys; return 3 items each time.\n mark = \"object-22\"\n while True:\n objs = bkt.list_objects(max_keys = 3, marker = mark)\n\n //\u6536\u96c6\u5bf9\u8c61\n ......\n\n //\u4e0b\u6b21\u7684\u67e5\u8be2\u9700\u8981\u8bbe\u7f6e\u5f53\u524d\u67e5\u8be2\u7684\u8fd4\u56de\u503cNextMarker\u4e3amarker\u53c2\u6570\uff0c\u5e76\u4f5c\u4e3a\u4e0b\u6b21\u8fed\u4ee3\u7684\u5f00\u59cb\u3002\n mark = objs.next_marker\n if !obj.is_continous:\n break\n ```\n - [x] \u67e5\u8be2\uff0c\u7279\u5b9a\u524d\u7f00\u7684\u5bf9\u8c61\uff0c\u5e76\u4e14\u6bcf\u6b21\u6700\u591a\u8fd4\u56de3\u4e2a\u5bf9\u8c61\uff1b \u5e76\u8fed\u4ee3\u67e5\u8be2\uff0c\u76f4\u5230\u67e5\u8be2\u7ed3\u675f\u3002\n ```python\n // Case 7: List object with paging , with prefix and max keys; return 2 items each time.\n pre = \"object-2\"\n mark = \"\"\n while True:\n objs = bkt.list_objects(prefix = pre, marker = mark, max_keys = 3)\n\n //\u6536\u96c6\u5bf9\u8c61\n ......\n\n //\u4e0b\u6b21\u7684\u67e5\u8be2\uff0c \u9700\u8981\u8bbe\u7f6emarker\u4e3a\u5f53\u524d\u67e5\u8be2\u7684\u8fd4\u56de\u503cNextMarker\uff0c\u5e76\u4f5c\u4e3a\u4e0b\u6b21\u8fed\u4ee3\u7684\u5f00\u59cb\u3002\n mark = objs.next_marker\n if !objs.is_continous:\n break\n ```\n- **\u63a5\u53e3\u4f7f\u7528\u793a\u4f8b-2**\n \u8c03\u7528\u6b65\u9aa4\uff1a\n - [x] \u51c6\u5907bucket\n ```python\n //Bucket\u5b9e\u4f8b\u5df2\u7ecf\u6784\u9020\uff0c\u5982\u4e0a\u7684\u6784\u9020\u51fd\u6570\u793a\u4f8b\uff0c\n bkt = bucket.Bucket(...);\n ...\n ```\n - [x] \u67e5\u8be2\u5bf9\u8c61(\u6587\u4ef6\u5939\u4e0b\u9762\u7684\u5bf9\u8c61)\n \u5047\u5b9abucket\u5185\u7684\u5bf9\u8c61\u5982\u4e0b\uff1a\n - [x] movie/readme.txt\n - [x] movie/readme.md\n - [x] movie/love/001.mp4\n - [x] movie/love/002.rmvb\n - [x] movie/war/001.avi\n - [x] movie/war/002.rm\n - [x] \u67e5\u8be2\uff0c\u7279\u5b9a\u76ee\u5f55\u4e0b\u9762\u7684\u6587\u4ef6/\u6587\u4ef6\u5939\n ```python\n\n objs = bkt.list_objects(prefix = \"movie/\", delimiter = \"/\")\n //\u8fd4\u56de\u4ee5`movie/`\u5f00\u5934\uff0c \u5e76\u4e14\u4ee5`/`\u5206\u5272\u7684\u5bf9\u8c61\u6216\u5bf9\u8c61\u524d\u7f00\n // \u8fd4\u56de\u5bf9\u8c61(\u6587\u4ef6) objs.objects\n // 1. movie/readme.txt\n // 2. movie/readme.md\n // \u8fd4\u56de\u5bf9\u8c61\u524d\u7f00(\u6587\u4ef6\u5939) objs.prefixes\n // 1. movie/love/\n // 2. movie/war/\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": "http://dawn.shareurl.facethink.com", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dawn-sdk", "package_url": "https://pypi.org/project/dawn-sdk/", "platform": "", "project_url": "https://pypi.org/project/dawn-sdk/", "project_urls": { "Homepage": "http://dawn.shareurl.facethink.com" }, "release_url": "https://pypi.org/project/dawn-sdk/0.0.9/", "requires_dist": [ "requests (!=2.9.0)", "lxml (>=4.2.3)", "monotonic (>=1.5)" ], "requires_python": "", "summary": "This is the SDK for dawn, which is OSS system. Dawn is honorly presented by TAL's ocean team.", "version": "0.0.9" }, "last_serial": 4142578, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "eaadad78ae8ea391eb56e6b7e79d2b70", "sha256": "b24e057aad1c24bd513125032986ffde1ebd61efe20a0842eaca3f1f2d940760" }, "downloads": -1, "filename": "dawn_sdk-0.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "eaadad78ae8ea391eb56e6b7e79d2b70", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15278, "upload_time": "2018-05-24T08:44:02", "url": "https://files.pythonhosted.org/packages/19/91/ea5be871067f2c1deeab6c526fe3c77837ddf8d8ec989f2381e4a6575eba/dawn_sdk-0.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e08204badf8e5a610afded91328d395", "sha256": "570270ccb67ed71c1193347d0c8128e6a398c791181114fff9647c4c479ea4ed" }, "downloads": -1, "filename": "dawn-sdk-0.0.1.tar.gz", "has_sig": false, "md5_digest": "1e08204badf8e5a610afded91328d395", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11687, "upload_time": "2018-05-24T08:44:03", "url": "https://files.pythonhosted.org/packages/40/c9/1e3bf22275d0cca32738ae1e8fdf4bf5252c6786f55b5b62a228575cc780/dawn-sdk-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e6429eb37c486c9d27842ca968e956f8", "sha256": "a167b27e37dda1a07486b883fd9dd9192f7b3afb2545292cd1be725ce1df50ea" }, "downloads": -1, "filename": "dawn_sdk-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "e6429eb37c486c9d27842ca968e956f8", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15281, "upload_time": "2018-05-24T11:31:19", "url": "https://files.pythonhosted.org/packages/89/80/e71446a195240e9121472b1e35fb51847267f95682352c210ac25d21ec9a/dawn_sdk-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88cb5a3ef2bb2c8df17dc5d87dcb9c93", "sha256": "6ed49165636da407aa7f4ab8a516de7d5d8d5681519bd07aeebb98ebdffd0034" }, "downloads": -1, "filename": "dawn-sdk-0.0.2.tar.gz", "has_sig": false, "md5_digest": "88cb5a3ef2bb2c8df17dc5d87dcb9c93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11690, "upload_time": "2018-05-24T11:31:20", "url": "https://files.pythonhosted.org/packages/61/ec/0be7f70b716f88cfe1ef270581e7ecbca3efa551d99ff8ba953b8e6b25d8/dawn-sdk-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "d110cd72d292347c8407d361287a4270", "sha256": "d32a0dc711238fa360b9829d81d02e388f611207e8629e6fa44e35ed433af19a" }, "downloads": -1, "filename": "dawn_sdk-0.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "d110cd72d292347c8407d361287a4270", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20522, "upload_time": "2018-05-31T13:46:18", "url": "https://files.pythonhosted.org/packages/6c/d6/1cf7d04558907d09151bb5cedaf52b5d81eb5a9bfadd3553a6267640d5e1/dawn_sdk-0.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef624b6784ca9766fcd7dc4e44797b7b", "sha256": "bbd0b0890ed5160193aaee17a8f4c4472c67f05be7cd3452e120d258147975c8" }, "downloads": -1, "filename": "dawn-sdk-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ef624b6784ca9766fcd7dc4e44797b7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15846, "upload_time": "2018-05-31T13:46:19", "url": "https://files.pythonhosted.org/packages/a8/ac/ec6355f5fffaa897c2359fe9026fb93def7135904b3f84008d2d7db0ae7e/dawn-sdk-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8a0cd79e8791cf9daa4cabb4f6cabe94", "sha256": "6b1a7677d9fb55d2f265af4c38ad4ce3efd876bb3ffdfb8b43a4e545ed4c09ef" }, "downloads": -1, "filename": "dawn_sdk-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8a0cd79e8791cf9daa4cabb4f6cabe94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20719, "upload_time": "2018-06-29T03:46:09", "url": "https://files.pythonhosted.org/packages/65/2a/aa1cd9d78510c955dca4a46c2614245f0e9fc024518802c5e9eec5edb4ec/dawn_sdk-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b872442dd8e6e25518c5b97391617757", "sha256": "a7a2f39229dbb885486505ab9ac9363d1866842bfd25492e2d0aad938204e66b" }, "downloads": -1, "filename": "dawn-sdk-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b872442dd8e6e25518c5b97391617757", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16236, "upload_time": "2018-06-29T03:46:11", "url": "https://files.pythonhosted.org/packages/5e/4a/5f01d8f26632a0d5a6a2543eca9c98abeedf469278753b4d6fc24226367e/dawn-sdk-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "4ee636b7857e06035d433269d4f6dc55", "sha256": "0ec14447c475a3408e444ac518add66ad818fd73bf913a68798bff7fba795c84" }, "downloads": -1, "filename": "dawn_sdk-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4ee636b7857e06035d433269d4f6dc55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20734, "upload_time": "2018-06-29T06:01:12", "url": "https://files.pythonhosted.org/packages/c9/de/41be360e0cce89a5d98ee9f75a1d6aae23c86cdd7e4ee97b8d867e4633f5/dawn_sdk-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4338049da1a92e7a33c68f757b4babf5", "sha256": "e7221f6c27134f088fb3b0523f95e3b59b7b1a565c9951ec9279f1919b83b514" }, "downloads": -1, "filename": "dawn-sdk-0.0.5.tar.gz", "has_sig": false, "md5_digest": "4338049da1a92e7a33c68f757b4babf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16243, "upload_time": "2018-06-29T06:01:13", "url": "https://files.pythonhosted.org/packages/52/22/60698f9cfe00f33eb25badecbccb0effcbf1b60532fe6099d4b4a91ac56f/dawn-sdk-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "8d2750ac46bb465a7c0319ec006cbd1a", "sha256": "d7d65cff8ccfc969febd71c2de14c2e88c3798ad9ac03a8a9d8e8f2723dd03ec" }, "downloads": -1, "filename": "dawn_sdk-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "8d2750ac46bb465a7c0319ec006cbd1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20727, "upload_time": "2018-06-29T06:19:34", "url": "https://files.pythonhosted.org/packages/e0/92/418dd81024fdc58b85f68bb1604aea5cf0f3e5e17d95c0a97205c5d82194/dawn_sdk-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c243b75b98765dab0a1c0e0bced84dc0", "sha256": "b6ef2998dd8d70d0b7f8d1e7497b282d9c922d03fdd583cfca32981fadea0319" }, "downloads": -1, "filename": "dawn-sdk-0.0.6.tar.gz", "has_sig": false, "md5_digest": "c243b75b98765dab0a1c0e0bced84dc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16253, "upload_time": "2018-06-29T06:19:36", "url": "https://files.pythonhosted.org/packages/65/22/91ee0a00bd49e45550bcfe28b15b07e4d13a397835c67934a97072899bd3/dawn-sdk-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "1ec2ebd926783918c21c8efe0464c40c", "sha256": "f2725634bd4a177df856ec14df1582a406da9f2b716a5f7ae620262df412d774" }, "downloads": -1, "filename": "dawn_sdk-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "1ec2ebd926783918c21c8efe0464c40c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20751, "upload_time": "2018-06-29T09:02:58", "url": "https://files.pythonhosted.org/packages/a7/80/90487b0e9a3df07977792186a48c68bbbd7cfd68a836b8a0c38831836035/dawn_sdk-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0c77794426ecf04cf230dbec4fb4309", "sha256": "a4c2400c18d2b593e5f9b4a8a7e5386a414666db2a6cc3d56682abb1b7d04e4e" }, "downloads": -1, "filename": "dawn-sdk-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c0c77794426ecf04cf230dbec4fb4309", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16278, "upload_time": "2018-06-29T09:03:00", "url": "https://files.pythonhosted.org/packages/62/12/7e442d2b8938405725f9336c460f51d2806b163985007da42b75507fe306/dawn-sdk-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "19ebf7f30c844a1378c70657fa8b1d1d", "sha256": "d635018f0af2da1928d5f9d22d3bc2bd04e0380fe0b37e09db77cff0d6d25c31" }, "downloads": -1, "filename": "dawn_sdk-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "19ebf7f30c844a1378c70657fa8b1d1d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25205, "upload_time": "2018-08-03T03:23:30", "url": "https://files.pythonhosted.org/packages/7e/f4/f27a2a575c10a518b941eed1c2f2e199269614516f98d0dcba4621c3202a/dawn_sdk-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "472cb3a73e62a86e297841f73ca8428c", "sha256": "a23e8fce0150bcb2c5655ddd53d84afdba1a60160e2362b0e42800a023134be0" }, "downloads": -1, "filename": "dawn-sdk-0.0.8.tar.gz", "has_sig": false, "md5_digest": "472cb3a73e62a86e297841f73ca8428c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24322, "upload_time": "2018-08-03T03:23:33", "url": "https://files.pythonhosted.org/packages/54/74/a6d7accaf6c7029c8652ab7ff40e1505d0e4f7b488e165bbef950d30df6f/dawn-sdk-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "f9714309ecc852e465bce1332cec74c1", "sha256": "f9bfe3ee3cb3e80cdabbcc2f57dc65bf450c39aad7a42783a03588eafbbad801" }, "downloads": -1, "filename": "dawn_sdk-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "f9714309ecc852e465bce1332cec74c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25625, "upload_time": "2018-08-07T02:51:09", "url": "https://files.pythonhosted.org/packages/3b/07/6df9f470a913faf1a27486035bac002bb7a8380ad64c3a9aaab9e49ce43d/dawn_sdk-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8288111163a82ba848b0150752a43d2d", "sha256": "8049195a2124e9b70b109aa5ace9f665d920dc7e18a0fb625221b93b1ef8b575" }, "downloads": -1, "filename": "dawn-sdk-0.0.9.tar.gz", "has_sig": false, "md5_digest": "8288111163a82ba848b0150752a43d2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24700, "upload_time": "2018-08-07T02:51:11", "url": "https://files.pythonhosted.org/packages/a8/e4/e03274d0ff28e66ea8832d324b5421281773ba47191958cf068e6b4df716/dawn-sdk-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9714309ecc852e465bce1332cec74c1", "sha256": "f9bfe3ee3cb3e80cdabbcc2f57dc65bf450c39aad7a42783a03588eafbbad801" }, "downloads": -1, "filename": "dawn_sdk-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "f9714309ecc852e465bce1332cec74c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25625, "upload_time": "2018-08-07T02:51:09", "url": "https://files.pythonhosted.org/packages/3b/07/6df9f470a913faf1a27486035bac002bb7a8380ad64c3a9aaab9e49ce43d/dawn_sdk-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8288111163a82ba848b0150752a43d2d", "sha256": "8049195a2124e9b70b109aa5ace9f665d920dc7e18a0fb625221b93b1ef8b575" }, "downloads": -1, "filename": "dawn-sdk-0.0.9.tar.gz", "has_sig": false, "md5_digest": "8288111163a82ba848b0150752a43d2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24700, "upload_time": "2018-08-07T02:51:11", "url": "https://files.pythonhosted.org/packages/a8/e4/e03274d0ff28e66ea8832d324b5421281773ba47191958cf068e6b4df716/dawn-sdk-0.0.9.tar.gz" } ] }