{
"info": {
"author": "Marko Ba\u0161tovanovi\u0107",
"author_email": "marko.bast@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.7"
],
"description": "## S3 select\n\n\nExample query run on 10GB of GZIP compressed JSON data (>60GB uncompressed)\n\n### Motivation\n[Amazon S3 select](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference-select.html) is one of the coolest features AWS released in 2018. It's benefits are:\n1) Very fast and low on network utilization as it allows you to return only a subset of the file contents from S3 using limited SQL select query. Since filtering of the data takes place on AWS machine where S3 file resides, network data transfer can be significantly limited depending on query issued.\n2) Is lightweight on the client side because all filtering is done on a machine where the S3 data is located \n4) It's [cheap](https://aws.amazon.com/s3/pricing/#Request_pricing_.28varies_by_region.29) at $0.002 per GB scanned and $0.0007 per GB returned
\nFor more details about S3 select see this [presentation](https://www.youtube.com/watch?v=uxcyoc6uaLM).
\n\nUnfortunately, S3 select API query call is limited to only one file on S3 and syntax is quite cumbersome, making it very impractical for daily usage. These are and more flaws are intended to be fixed with this s3select command. \n\n### Features at a glance\nMost important features:\n 1) Queries all files beneath given S3 prefix(es)\n 2) The whole process is multi-threaded and fast. A scan of 1.1TB of data in stored in 20,000 files takes 5 minutes). Threads don't slow down client much as heavy lifting is done on AWS.\n 3) The compression of the file is automatically inferred for you by picking GZIP or plain text depending on file extension. \n 4) Real-time execution progress display.\n 5) The exact cost of the query returned for each run.\n 6) Ability to only count records matching the filter in a fast and efficient manner.\n 7) You can easily limit the number of results returned while still keeping multi-threaded execution.\n 8) Failed requests are properly handled and repeated if they are retriable (e.g. throttled calls). \n\n### Installation and Upgrade\ns3select is developed in Python and uses [pip](http://www.pip-installer.org/en/latest/).
\n\nThe easiest way to install/upgrade s3select is to use `pip` in a `virtualenv`:\n\n
$ pip install -U s3select\n\nor, if you are not installing in a `virtualenv`, to install/upgrade globally:\n\n
$ sudo pip install -U s3select\n\nor for your user:\n\n
$ pip install --user -U s3select\n\n### Authentication\n\ns3select uses the same authentication and endpoint configuration as [aws-cli](https://github.com/aws/aws-cli#getting-started). If aws command is working on your machine, there is no need for any additional configuration.\n\n### Example usage\nFirst get some help:\n
\n$ s3select -h\nusage: s3select [-h] [-w WHERE] [-d FIELD_DELIMITER] [-D RECORD_DELIMITER]\n [-l LIMIT] [-v] [-c] [-H] [-o OUTPUT_FIELDS] [-t THREAD_COUNT]\n [--profile PROFILE] [-M MAX_RETRIES]\n prefixes [prefixes ...]\n\ns3select makes s3 select querying API much easier and faster\n\npositional arguments:\n prefixes S3 prefix (or more) beneath which all files are\n queried\n\noptional arguments:\n -h, --help show this help message and exit\n -w WHERE, --where WHERE\n WHERE part of the SQL query\n -d FIELD_DELIMITER, --field_delimiter FIELD_DELIMITER\n Field delimiter to be used for CSV files. If specified\n CSV parsing will be used. By default we expect JSON\n input\n -D RECORD_DELIMITER, --record_delimiter RECORD_DELIMITER\n Record delimiter to be used for CSV files. If\n specified CSV parsing will be used. By default we\n expect JSON input\n -l LIMIT, --limit LIMIT\n Maximum number of results to return\n -v, --verbose Be more verbose\n -c, --count Only count records without printing them to stdout\n -H, --with_filename Output s3 path of a filename that contained the match\n -o OUTPUT_FIELDS, --output_fields OUTPUT_FIELDS\n What fields or columns to output\n -t THREAD_COUNT, --thread_count THREAD_COUNT\n How many threads to use when executing s3_select api\n requests. Default of 150 seems to be on safe side. If\n you increase this there is a chance you'll need also\n to increase nr of open files on your OS\n --profile PROFILE Use a specific AWS profile from your credential file.\n -M MAX_RETRIES, --max_retries MAX_RETRIES\n Maximum number of retries per queried S3 object in\n case API request fails\n\n\nIt's always useful to peek at first few lines of input files to figure out contents:\n
\n$ s3select -l 3 s3://testing.bucket/json_example/\n{\"name\":\"Gilbert\",\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n{\"name\":\"Alexa\",\"wins\":[[\"two pair\",\"4\u2660\"],[\"two pair\",\"9\u2660\"]]}\n{\"name\":\"May\",\"wins\":[]}\n\nIt's JSON. Great - that's s3select default format. Let's get a subset of its data\n\n$ s3select -l 3 -w \"s.name LIKE '%Gil%'\" -o \"s.wins\" s3://testing.bucket/json_example\n{\"wins\":[[\"straight\",\"7\u2663\"],[\"one pair\",\"10\u2665\"]]}\n\n\nWhat if the input is not in JSON:\n\n$ s3select -l 3 s3://testing.bucket/csv_example\nException caught when querying csv_example/example.csv: An error occurred (JSONParsingError) when calling the SelectObjectContent operation: Error parsing JSON file. Please check the file and try again.\n\nException means input isn't parsable JSON. Let's switch to CSV file delimited with `,` but you can specify any other delimiter char. Often used is `TAB` specified with `\\\\t` \n
\n$ s3select -l 3 -d , s3://testing.bucket/csv_example\nGilbert,straight,7\u2663,one pair,10\u2665\nAlexa,two pair,4\u2660,two pair,9\u2660\nMay,,,,\n\n\nSince utilising the first line of CSV as a header isn't yet supported we'll select a subset of data using column enumeration: \n
\n$ s3select -l 3 -d , -w \"s._1 LIKE '%i%'\" -o \"s._2\" s3://testing.bucket/csv_example\nstraight\nthree of a kind\n\n\nIf you are interested in pricing for your requests, add `-v` to increase verbosity which will include pricing information at the end:\n
\n$ s3select -v -c s3://testing.bucket/10G_sample\nFiles processed: 77/77 Records matched: 5696395 Bytes scanned: 21 GB\nCost for data scanned: $0.02\nCost for data returned: $0.00\nCost for SELECT requests: $0.00\nTotal cost: $0.02\n\n\n### License\n\nDistributed under the MIT license. See `LICENSE` for more information.\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/marko-bast/s3select", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "s3select", "package_url": "https://pypi.org/project/s3select/", "platform": "", "project_url": "https://pypi.org/project/s3select/", "project_urls": { "Homepage": "https://github.com/marko-bast/s3select" }, "release_url": "https://pypi.org/project/s3select/0.0.14/", "requires_dist": [ "requests[security] (>=2.18.3)", "pyasn1 (>=0.4.2)", "boto3 (>=1.7.79)" ], "requires_python": "", "summary": "S3 select utility package", "version": "0.0.14" }, "last_serial": 5567902, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "334313e729cd5b1a7151d02e005889d8", "sha256": "07d5444ab5d04b4a4c97761dfff7f2b314d68470f79394288aecfde5493dd760" }, "downloads": -1, "filename": "s3select-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "334313e729cd5b1a7151d02e005889d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4837, "upload_time": "2018-11-18T10:03:11", "url": "https://files.pythonhosted.org/packages/99/d4/72653c509add482c24a00dc0d670cc1352824c7bba92287769cc7795820b/s3select-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce19adedd230d13c4989549fc9fd5e22", "sha256": "62a28357abb4da4592f0f359ed81651e734d73f239134d67478a8eb7692877e6" }, "downloads": -1, "filename": "s3select-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ce19adedd230d13c4989549fc9fd5e22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3673, "upload_time": "2018-11-18T10:03:13", "url": "https://files.pythonhosted.org/packages/33/e8/6661dd2ae67b63c918670a12467cd20c949c1521e12cff70051ba93d1e7b/s3select-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "a7e4e69fcb77631a72fc0cf82a27987d", "sha256": "3b043dcac151618bedff90f5071b88f1b983d8eb582dc484cb39c60ed89c16af" }, "downloads": -1, "filename": "s3select-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a7e4e69fcb77631a72fc0cf82a27987d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8387, "upload_time": "2019-02-01T11:11:13", "url": "https://files.pythonhosted.org/packages/26/7d/63b02f7397715a48790d20708e5ae6db3e5b42c8b33b2a8e6452bbc9ead0/s3select-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60787483b893666434010cb76d4e5524", "sha256": "0bbeafb11cf7850474d69a3a12b9ce5ada3a9ef7a8d3609ef835fe62fef20aa0" }, "downloads": -1, "filename": "s3select-0.0.10.tar.gz", "has_sig": false, "md5_digest": "60787483b893666434010cb76d4e5524", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7308, "upload_time": "2019-02-01T11:11:14", "url": "https://files.pythonhosted.org/packages/7a/76/101eaf62517346c37657bfc71644a37182de2d1fc2ff51628b2c5ace99e4/s3select-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "5b51965df9fc338fcf08f99c34b32e10", "sha256": "bc8f5068b3beae14959d9e8ceee3e8ced45533676b9cf9f7f177f7ae9d8cf4c9" }, "downloads": -1, "filename": "s3select-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "5b51965df9fc338fcf08f99c34b32e10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8402, "upload_time": "2019-02-01T11:47:14", "url": "https://files.pythonhosted.org/packages/b4/13/0995b5e7e3794fa3dfb8cd198e7daed79bfaf42778e75fff68340401ac59/s3select-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2565c25354c5ef1f381de0c8782423d", "sha256": "f3f74445b1103a23c13373626ca09ef1c6873a3a019573fe27834569e7e2fdee" }, "downloads": -1, "filename": "s3select-0.0.11.tar.gz", "has_sig": false, "md5_digest": "c2565c25354c5ef1f381de0c8782423d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7324, "upload_time": "2019-02-01T11:47:15", "url": "https://files.pythonhosted.org/packages/fd/47/ec92910d84212842a9c5ad3b470e5a9bd4d7c4aaa90d8c4025564c4f2ec1/s3select-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "40172abd5ce75ee6235c06dd843be265", "sha256": "f64e0849108b5f892a31199ff6bd15a13dd865e945ea5b0f1940daa2e1ce2e65" }, "downloads": -1, "filename": "s3select-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "40172abd5ce75ee6235c06dd843be265", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8547, "upload_time": "2019-02-06T13:59:33", "url": "https://files.pythonhosted.org/packages/fb/ad/48b4807aae39a59a25fe41e420433d0784ccde30e7fa131b36cb9c4dfbca/s3select-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "047458469a9fa4d1acbf6a7b2cc575d2", "sha256": "76da847ec444a779f7fb66bc3afeb5b1c07215c41d671c16ef6d8e89662b1c63" }, "downloads": -1, "filename": "s3select-0.0.12.tar.gz", "has_sig": false, "md5_digest": "047458469a9fa4d1acbf6a7b2cc575d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7461, "upload_time": "2019-02-06T13:59:34", "url": "https://files.pythonhosted.org/packages/75/e6/1bda09df625536e2fcabada8e8ff900fbbc650dd15659f36fd18b22e7d33/s3select-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "bcdeacbbaf885a35f936f00332d0c673", "sha256": "2dc77e42ffef46aaba81099dafdc15f9e0c15c983dbff9982956970b54eb4e4a" }, "downloads": -1, "filename": "s3select-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "bcdeacbbaf885a35f936f00332d0c673", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8704, "upload_time": "2019-02-12T08:54:26", "url": "https://files.pythonhosted.org/packages/71/2b/9dba90ba9060183b20032bab7aaf0427ea607a6a0977b1fee5a487b5145c/s3select-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1791d6d82f152544c286327eda5205b2", "sha256": "65257a312e005f36fde5518a7960c36a361cef9de27c6a464a62a957a7879d38" }, "downloads": -1, "filename": "s3select-0.0.13.tar.gz", "has_sig": false, "md5_digest": "1791d6d82f152544c286327eda5205b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7582, "upload_time": "2019-02-12T08:54:27", "url": "https://files.pythonhosted.org/packages/aa/5a/600b56f5fc190653ed2207ed4940b9ebb484c528a56d9f1b8b69e144cc13/s3select-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "39b82e39acad73d0943b43a331ecc780", "sha256": "52e6bfb46832ea4eae86d0f5caf24feefdacdd46ac5c1cfd6aef7f26d42e3425" }, "downloads": -1, "filename": "s3select-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "39b82e39acad73d0943b43a331ecc780", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8952, "upload_time": "2019-07-22T15:05:15", "url": "https://files.pythonhosted.org/packages/98/a6/bb6ecc46d8d9e771085aa3cc4f296d64f3f8e0f1b0f261359fb6162b7de2/s3select-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce1752536c4cbc47d7a5741cab1059e4", "sha256": "03747b87b44454a59548424ddddf936bbb2ed585a0d0a465c813e5364e014530" }, "downloads": -1, "filename": "s3select-0.0.14.tar.gz", "has_sig": false, "md5_digest": "ce1752536c4cbc47d7a5741cab1059e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8542, "upload_time": "2019-07-22T15:05:17", "url": "https://files.pythonhosted.org/packages/3c/47/0b9794b4612faa8b54c264f0bbbd6483ce2aa3cf96ae296a48a7feccc000/s3select-0.0.14.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "cfc9e6a9113efe107a6b3bbf287db10c", "sha256": "ea927d181668d84b9708bdedc1ed3c6d8c1535cf1b14dffcb0a3c5a3af9e3a99" }, "downloads": -1, "filename": "s3select-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "cfc9e6a9113efe107a6b3bbf287db10c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4979, "upload_time": "2018-11-18T13:39:04", "url": "https://files.pythonhosted.org/packages/99/92/1b4d66bc4d0fc667c7ac88ce1443e23460d83268533cfe46d5624f2459ef/s3select-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ae3b7bed55bce3f39db2304897720d4", "sha256": "824ea9570a1fe346eee2a4234b29870ecf3383e003c688b60ab1811d53e70e68" }, "downloads": -1, "filename": "s3select-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8ae3b7bed55bce3f39db2304897720d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3799, "upload_time": "2018-11-18T13:39:07", "url": "https://files.pythonhosted.org/packages/86/c1/086c0f1583a02ab16300a9ae0fe1a1cbf1447a5921b9b8b435c1d05182fa/s3select-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5c45a5bb2d78ae4c32b30fd130b02613", "sha256": "b1f716071762cc2eca379886660c58c7a4057f4b388ddd2372be452218f309fd" }, "downloads": -1, "filename": "s3select-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5c45a5bb2d78ae4c32b30fd130b02613", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6157, "upload_time": "2018-11-18T19:59:41", "url": "https://files.pythonhosted.org/packages/1f/7e/f05811c824d8567349be71928914324aa998e4ce685dbd4b7078d9aff0d0/s3select-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f83cb54e5d241389e39edb2985c7de2", "sha256": "34bfd42e273569b24edfab0faef2aa854b5e532a309abdb3458eff17b3a769de" }, "downloads": -1, "filename": "s3select-0.0.4.tar.gz", "has_sig": false, "md5_digest": "2f83cb54e5d241389e39edb2985c7de2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5007, "upload_time": "2018-11-18T19:59:42", "url": "https://files.pythonhosted.org/packages/69/e0/1ae97d82676d91cea97d3d5ecff5e8b4d53fbc6d7399f0e29bef9d029115/s3select-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1315ccb7b892830d8e6b634a8dfab7cf", "sha256": "98f541d4c8c66a8c014e2d7c167d9d1cfab3bd9a220efbc09cca336922ce045a" }, "downloads": -1, "filename": "s3select-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1315ccb7b892830d8e6b634a8dfab7cf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6411, "upload_time": "2018-11-19T14:51:13", "url": "https://files.pythonhosted.org/packages/21/a1/89a145d492eee02c629a31c06000b3cd80bb926962b23219622e80e62782/s3select-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75d5dec862b5b36646ca774970580132", "sha256": "2527a1ba07f3bb2aeb35d36f4ec7ef222d8170225a50dbf2e6ce97b5c2812149" }, "downloads": -1, "filename": "s3select-0.0.5.tar.gz", "has_sig": false, "md5_digest": "75d5dec862b5b36646ca774970580132", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5334, "upload_time": "2018-11-19T14:51:14", "url": "https://files.pythonhosted.org/packages/13/56/116a9afbf961f9e588a0103ed9366423db68319bbbc985ffc0b63150ec64/s3select-0.0.5.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "98d54b860c6cb93620164ad4afaec4af", "sha256": "1ba5db362c39e01e4e037fd42df537d1a8e854a36212ceb6bb480b8c4e4cc813" }, "downloads": -1, "filename": "s3select-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "98d54b860c6cb93620164ad4afaec4af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7853, "upload_time": "2018-11-22T15:38:07", "url": "https://files.pythonhosted.org/packages/c6/c2/ef6d9c9e8d8002a1c647daab93394b6793131d1054af272bf5ced6e0b885/s3select-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab47e468e8d3e0ac7d1af89572075381", "sha256": "9e42f391a71a60df0da044180534a0a5d788d59736a5761659c13b21e856887e" }, "downloads": -1, "filename": "s3select-0.0.7.tar.gz", "has_sig": false, "md5_digest": "ab47e468e8d3e0ac7d1af89572075381", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6826, "upload_time": "2018-11-22T15:38:09", "url": "https://files.pythonhosted.org/packages/c0/e8/cba4637db0987fa834435ad91053da14145c10965b1a43f93eeb63f80255/s3select-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d501428362767735f1150a3063128f18", "sha256": "76af6eebbc39f0cac63f20278e04d73f2dfe1b9e8385cb014f9bfd049dc211b6" }, "downloads": -1, "filename": "s3select-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d501428362767735f1150a3063128f18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7915, "upload_time": "2019-01-03T10:59:10", "url": "https://files.pythonhosted.org/packages/54/7e/94925ae4b469c2685e6c72e63f38138a607cfb2c0c2dbfb14dc10779c35a/s3select-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df1f8583aa004cc084c573403c329b64", "sha256": "ba930c6da6c0cf168cfc08f6c6f21d9cc3d71508cc838d0d39dd9019f36a5193" }, "downloads": -1, "filename": "s3select-0.0.8.tar.gz", "has_sig": false, "md5_digest": "df1f8583aa004cc084c573403c329b64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6893, "upload_time": "2019-01-03T10:59:12", "url": "https://files.pythonhosted.org/packages/b8/db/17098c119a3e2361bfd6aeda738966a4b08e92d34d968a1e19496df2d3c5/s3select-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "e5521c7f2e8e3d9cb69bdf3c7442d944", "sha256": "313715aed25a38a0677436b8f94ecb499536ef08a0b5b4b9ce01c5927d39e653" }, "downloads": -1, "filename": "s3select-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "e5521c7f2e8e3d9cb69bdf3c7442d944", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8364, "upload_time": "2019-01-30T10:28:55", "url": "https://files.pythonhosted.org/packages/01/89/684c54cc679a0f1fb9ac8836f9419559c90fea131094a14551e81a171c8a/s3select-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63e828f7013272475ed62d09d09de23e", "sha256": "98679d4195f8ae0561588e6bdf042c9633792ab071e5638387cdbf7ad717db68" }, "downloads": -1, "filename": "s3select-0.0.9.tar.gz", "has_sig": false, "md5_digest": "63e828f7013272475ed62d09d09de23e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7298, "upload_time": "2019-01-30T10:28:56", "url": "https://files.pythonhosted.org/packages/17/87/c62ab1174e3876f1f2c63b41f6f8105f09ba4d5e5086d2d207ee1afdc3c0/s3select-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "39b82e39acad73d0943b43a331ecc780", "sha256": "52e6bfb46832ea4eae86d0f5caf24feefdacdd46ac5c1cfd6aef7f26d42e3425" }, "downloads": -1, "filename": "s3select-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "39b82e39acad73d0943b43a331ecc780", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8952, "upload_time": "2019-07-22T15:05:15", "url": "https://files.pythonhosted.org/packages/98/a6/bb6ecc46d8d9e771085aa3cc4f296d64f3f8e0f1b0f261359fb6162b7de2/s3select-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce1752536c4cbc47d7a5741cab1059e4", "sha256": "03747b87b44454a59548424ddddf936bbb2ed585a0d0a465c813e5364e014530" }, "downloads": -1, "filename": "s3select-0.0.14.tar.gz", "has_sig": false, "md5_digest": "ce1752536c4cbc47d7a5741cab1059e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8542, "upload_time": "2019-07-22T15:05:17", "url": "https://files.pythonhosted.org/packages/3c/47/0b9794b4612faa8b54c264f0bbbd6483ce2aa3cf96ae296a48a7feccc000/s3select-0.0.14.tar.gz" } ] }