{ "info": { "author": "David Ohana", "author_email": "davidoha@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "# Scolp\n\n## Introduction\n\nScolp is Streaming Column Printer for Python 3.6 or later.\n\nScolp let you easily pretty-print masses of tabular data in a streaming fashion - each value is printed when available, without waiting for end of data. It is perfect for apps that need to print progress reports in columns.\n\nMain features:\n\n* Auto-adjusting column width according to the largest value so far or column header width.\n\n* Control verbosity of printing by:\n - printing ``1`` of each ``n`` rows\n - printing no more than ``1`` row per ``n`` seconds\n\n* Control format of printed values by:\n - setting global defaults\n - setting defaults per variable type (``int``, ``float``, ``str``, ``datetime``)\n - setting explicit formatting per column\n\n* Control alignment of printed values:\n - left\n - right\n - center\n - auto: numbers to the right, strings or other types to the left.\n\n* Control cosmetics of columns (initial width, padding fill char, alignment, and more..) by:\n - setting global defaults\n - setting explicit formatting per column\n\n* Control column title printing style:\n - Inline in each row\n - As headers, repeating each n rows\n\n* Easily print row count or time since execution started without need to keep track of those values yourself.\n\n## Examples\n\n#### Example 1\n\nLets start with a simple country statistics output using default settings:\n\n```python\nimport scolp\n\nscolper = scolp.Scolp()\nscolper.config.add_columns(\"country\", \"population (mil)\", \"capital city\", \"life expectancy (female)\",\n \"life expectancy (male)\", \"fertility rate\")\nscolper.print(\"Netherlands\", 16.81, \"Amsterdam\", 83, 79, 1.5,\n \"China\", 1350.0, \"Beijing\", 76, 72, 1.8,\n \"Israel\", 7.71, \"Jerusalem\", 84, 80, 2.7,\n \"Nigeria\")\nscolper.print(174.51)\n```\n\nOutput: \n\n(Note how column width is auto adjusting, line breaks are printed automatically after last column, and each value is printed immediately without waiting for end of row)\n\n```\ncountry |population (mil)|capital city|life expectancy (female)|life expectancy (male)|fertility rate\n--------|----------------|------------|------------------------|----------------------|--------------\nNetherlands| 16.810|Amsterdam | 83| 79| 1.500\n\ncountry |population (mil)|capital city|life expectancy (female)|life expectancy (male)|fertility rate\n-----------|----------------|------------|------------------------|----------------------|--------------\nChina | 1,350.000|Beijing | 76| 72| 1.800\nIsrael | 7.710|Jerusalem | 84| 80| 2.700\nNigeria | 174.510|\n```\n\n#### Example 2\n\nLets build a program that find prime numbers. We will print the count of primes\nwe found so far and the last prime found.\n\n```python\nimport datetime, scolp\n\ndef is_prime(num):\n return 2 in [num, 2 ** num % num]\n\nscolper = scolp.Scolp()\nscolper.config.add_columns(\"time\", \"elapsed\", \"inspected_count\", \"prime_count\", \"last\", \"progress %\")\nscolper.config.output_each_n_seconds = 1\n\nprime_count = 0\nlast_prime = None\ni = 9_999_800\ntarget_count = 30\nwhile prime_count < target_count:\n if is_prime(i):\n last_prime = i\n prime_count += 1\n progress = prime_count / target_count * 100\n scolper.print(datetime.datetime.now(), scolper.elapsed_since_init(),\n scolper.row_index + 1, prime_count, last_prime, progress)\n i += 1\n\n```\n\nOutput: \n\n(Note how the header repeats, the column width auto-expanding and the numbers are aligned to the right)\n\n```\ntime |elapsed |inspected_count|prime_count|last |progress %\n--------|--------|---------------|-----------|--------|----------\n2019-06-05 11:49:31.271191|0:00:00 | 1| 0|None | 0.000\n\ntime |elapsed |inspected_count|prime_count|last |progress %\n--------------------------|--------|---------------|-----------|--------|----------\n2019-06-05 11:49:32.306225|0:00:01 | 27| 1|9,999,823| 3.333\n2019-06-05 11:49:33.325694|0:00:02 | 53| 1|9,999,823| 3.333\n2019-06-05 11:49:34.341678|0:00:03 | 79| 3|9,999,877| 10.000\n2019-06-05 11:49:35.378966|0:00:04 | 105| 6|9,999,901| 20.000\n2019-06-05 11:49:36.399298|0:00:05 | 131| 8|9,999,929| 26.667\n2019-06-05 11:49:37.415522|0:00:06 | 157| 11|9,999,943| 36.667\n2019-06-05 11:49:38.450551|0:00:07 | 183| 13|9,999,973| 43.333\n2019-06-05 11:49:39.478987|0:00:08 | 209| 14|9,999,991| 46.667\n2019-06-05 11:49:40.485409|0:00:09 | 233| 15|10,000,019| 50.000\n\ntime |elapsed |inspected_count|prime_count|last |progress %\n--------------------------|--------|---------------|-----------|----------|----------\n2019-06-05 11:49:41.508298|0:00:10 | 259| 15|10,000,019| 50.000\n2019-06-05 11:49:42.543115|0:00:11 | 283| 16|10,000,079| 53.333\n2019-06-05 11:49:43.555733|0:00:12 | 306| 17|10,000,103| 56.667\n2019-06-05 11:49:44.572379|0:00:13 | 328| 18|10,000,121| 60.000\n2019-06-05 11:49:45.574066|0:00:14 | 349| 20|10,000,141| 66.667\n2019-06-05 11:49:46.583462|0:00:15 | 372| 21|10,000,169| 70.000\n2019-06-05 11:49:47.594724|0:00:16 | 396| 22|10,000,189| 73.333\n2019-06-05 11:49:48.639124|0:00:17 | 420| 22|10,000,189| 73.333\n2019-06-05 11:49:49.661211|0:00:18 | 441| 24|10,000,229| 80.000\n2019-06-05 11:49:50.691037|0:00:19 | 463| 27|10,000,261| 90.000\n\ntime |elapsed |inspected_count|prime_count|last |progress %\n--------------------------|--------|---------------|-----------|----------|----------\n2019-06-05 11:49:51.721844|0:00:20 | 487| 28|10,000,271| 93.333\n2019-06-05 11:49:52.733437|0:00:22 | 510| 29|10,000,303| 96.667\n2019-06-05 11:49:53.750463|0:00:23 | 534| 29|10,000,303| 96.667\n```\n\n#### Example 3\n\nNow, lets change the code of the previous example to add a bit of custom formatting:\n\n```python\nscolper = scolp.Scolp()\nscolper.config.add_column(\"time\", width=20)\nscolper.config.add_columns(\"elapsed\",\n \"inspected_count\",\n \"prime_count\")\nscolper.config.add_column(\"last\", width=11)\nscolper.config.add_column(\"progress\", fmt=\"{:.1%}\")\nscolper.config.output_each_n_seconds = 1\nscolper.config.header_repeat_row_count_first = 0\nscolper.config.default_column.column_separator = \" \"\nscolper.config.default_column.type_to_format[datetime.datetime] = \"{:%Y-%m-%d %H:%M:%S}\"\n\nprime_count = 0\nlast_prime = None\ni = 9_999_800\ntarget_count = 30\nwhile prime_count < target_count:\n if is_prime(i):\n last_prime = i\n prime_count += 1\n progress = prime_count / target_count\n scolper.print(datetime.datetime.now(), scolper.elapsed_since_init(),\n scolper.row_index + 1, prime_count, last_prime, progress)\n i += 1\n```\n\nOutput:\n\n```\ntime elapsed inspected_count prime_count last progress\n-------------------- -------- --------------- ----------- ----------- --------\n2019-06-05 11:54:46 0:00:00 1 0 None 0.0%\n2019-06-05 11:54:47 0:00:01 23 0 None 0.0%\n2019-06-05 11:54:48 0:00:02 45 1 9,999,823 3.3%\n2019-06-05 11:54:49 0:00:03 67 2 9,999,863 6.7%\n2019-06-05 11:54:50 0:00:04 90 5 9,999,889 16.7%\n2019-06-05 11:54:51 0:00:05 115 7 9,999,907 23.3%\n2019-06-05 11:54:52 0:00:06 139 10 9,999,937 33.3%\n2019-06-05 11:54:53 0:00:07 164 11 9,999,943 36.7%\n2019-06-05 11:54:54 0:00:08 188 13 9,999,973 43.3%\n2019-06-05 11:54:55 0:00:09 212 14 9,999,991 46.7%\n\ntime elapsed inspected_count prime_count last progress\n-------------------- -------- --------------- ----------- ----------- --------\n2019-06-05 11:54:56 0:00:10 237 15 10,000,019 50.0%\n2019-06-05 11:54:57 0:00:11 261 15 10,000,019 50.0%\n2019-06-05 11:54:58 0:00:12 284 16 10,000,079 53.3%\n2019-06-05 11:54:59 0:00:13 308 17 10,000,103 56.7%\n2019-06-05 11:55:00 0:00:14 331 18 10,000,121 60.0%\n2019-06-05 11:55:01 0:00:15 355 20 10,000,141 66.7%\n2019-06-05 11:55:02 0:00:16 379 21 10,000,169 70.0%\n2019-06-05 11:55:03 0:00:17 403 22 10,000,189 73.3%\n2019-06-05 11:55:04 0:00:18 426 23 10,000,223 76.7%\n2019-06-05 11:55:05 0:00:20 448 25 10,000,247 83.3%\n\ntime elapsed inspected_count prime_count last progress\n-------------------- -------- --------------- ----------- ----------- --------\n2019-06-05 11:55:06 0:00:21 471 27 10,000,261 90.0%\n2019-06-05 11:55:07 0:00:22 493 28 10,000,271 93.3%\n2019-06-05 11:55:08 0:00:23 516 29 10,000,303 96.7%\n2019-06-05 11:55:09 0:00:24 539 29 10,000,303 96.7%\n```\n\n#### Example 4\n\nLets build an HTTP big-file downloader.\n\n```python\nimport datetime, urllib3, scolp\n\nurl = \"http://speedtest.tele2.net/100MB.zip\"\npath = \"downloaded.tmp\"\nchunk_size_bytes = 1000\n\nscolp_cfg = scolp.Config()\nscolp_cfg.add_column(\"time\", fmt=\"{:%H:%M:%S}\")\nscolp_cfg.add_column(\"elapsed\")\nscolp_cfg.add_column(\"downloaded\", width=16, fmt=\"{:,} B\")\nscolp_cfg.add_column(\"speed\", width=14, pad_align=scolp.Alignment.RIGHT, type_to_format={float: \"{:,.1f} kB/s\"})\n\nscolp_cfg.output_each_n_seconds = 1\nscolp_cfg.title_mode = scolp.TitleMode.INLINE\nscolp_cfg.default_column.column_separator = \" | \"\n\nscolper = scolp.Scolp(scolp_cfg)\n\nhttp = urllib3.PoolManager()\nr = http.request('GET', url, preload_content=False)\n\ndl_bytes = 0\n\n\ndef progress_update():\n elapsed_sec = scolper.elapsed_since_init().total_seconds()\n speed_kbps = dl_bytes / elapsed_sec / 1000 if elapsed_sec > 0 else \"unknown\"\n scolper.print(datetime.datetime.now(), scolper.elapsed_since_init(), dl_bytes, speed_kbps)\n\n\nwith open(path, 'wb') as out:\n while True:\n data = r.read(chunk_size_bytes)\n if not data:\n break\n out.write(data)\n dl_bytes += len(data)\n progress_update()\n\nscolper.force_print_next_row()\nprogress_update()\nr.release_conn()\n\n```\n\nOutput:\n\n```\ntime=14:30:11 | elapsed=0:00:00 | downloaded= 1,000 B | speed= unknown\ntime=14:30:12 | elapsed=0:00:01 | downloaded= 801,000 B | speed= 801.0 kB/s\ntime=14:30:13 | elapsed=0:00:02 | downloaded= 1,743,000 B | speed= 871.5 kB/s\ntime=14:30:14 | elapsed=0:00:03 | downloaded= 2,758,000 B | speed= 919.3 kB/s\ntime=14:30:15 | elapsed=0:00:04 | downloaded= 3,779,000 B | speed= 944.8 kB/s\ntime=14:30:16 | elapsed=0:00:05 | downloaded= 4,794,000 B | speed= 958.8 kB/s\ntime=14:30:17 | elapsed=0:00:06 | downloaded= 5,809,000 B | speed= 968.2 kB/s\ntime=14:30:18 | elapsed=0:00:07 | downloaded= 6,824,000 B | speed= 974.9 kB/s\ntime=14:30:19 | elapsed=0:00:08 | downloaded= 7,839,000 B | speed= 979.9 kB/s\ntime=14:30:20 | elapsed=0:00:09 | downloaded= 8,857,000 B | speed= 984.1 kB/s\ntime=14:30:21 | elapsed=0:00:10 | downloaded= 9,799,000 B | speed= 979.9 kB/s\ntime=14:30:22 | elapsed=0:00:11 | downloaded= 10,814,000 B | speed= 983.1 kB/s\ntime=14:30:23 | elapsed=0:00:12 | downloaded= 11,838,000 B | speed= 986.5 kB/s\ntime=14:30:24 | elapsed=0:00:13 | downloaded= 12,855,000 B | speed= 988.8 kB/s\ntime=14:30:25 | elapsed=0:00:14 | downloaded= 13,870,000 B | speed= 990.7 kB/s\ntime=14:30:26 | elapsed=0:00:15 | downloaded= 14,891,000 B | speed= 992.7 kB/s\ntime=14:30:27 | elapsed=0:00:16 | downloaded= 15,906,000 B | speed= 994.1 kB/s\ntime=14:30:28 | elapsed=0:00:18 | downloaded= 25,600,000 B | speed= 1,422.2 kB/s\ntime=14:30:29 | elapsed=0:00:19 | downloaded= 37,146,000 B | speed= 1,955.1 kB/s\ntime=14:30:30 | elapsed=0:00:20 | downloaded= 47,847,000 B | speed= 2,392.3 kB/s\ntime=14:30:31 | elapsed=0:00:21 | downloaded= 60,962,000 B | speed= 2,903.0 kB/s\ntime=14:30:32 | elapsed=0:00:22 | downloaded= 72,931,000 B | speed= 3,315.0 kB/s\ntime=14:30:33 | elapsed=0:00:23 | downloaded= 85,094,000 B | speed= 3,699.7 kB/s\ntime=14:30:34 | elapsed=0:00:24 | downloaded= 104,857,600 B | speed= 4,369.1 kB/s\n```\n\n\n## Requirements\n\nScolp has no 3rd party requirements other than Python 3.6 or later.\n\n\n## Getting Started\n\nScolp is available via PyPi and can be installed using:\n\n```pip install scolp```.\n\n## Todo\n\n* Document public API of the library\n* Support colors\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/davidohana/python-scolp", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "scolp", "package_url": "https://pypi.org/project/scolp/", "platform": "", "project_url": "https://pypi.org/project/scolp/", "project_urls": { "Homepage": "https://github.com/davidohana/python-scolp" }, "release_url": "https://pypi.org/project/scolp/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "Streaming Column Printer", "version": "0.1.5" }, "last_serial": 5540646, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "5a36e2e4c8ccf89988c94d8413c2fe44", "sha256": "fb79fdb3624e295465c5831c932299da2179d18eba7ab2cb7187de70510f155c" }, "downloads": -1, "filename": "scolp-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5a36e2e4c8ccf89988c94d8413c2fe44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5119, "upload_time": "2019-06-05T13:27:45", "url": "https://files.pythonhosted.org/packages/d9/27/7055ed264fd098a5ce90d257e92f57f03d93bbd14dcb7acce7a36e04bb12/scolp-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abb11cf1d03667c5380165bcb8b7e954", "sha256": "cd2336dbdc0b82a7a9cee6ec9725f2a2b9db108c645765a745b0eb19a6cfd4a1" }, "downloads": -1, "filename": "scolp-0.1.tar.gz", "has_sig": false, "md5_digest": "abb11cf1d03667c5380165bcb8b7e954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5088, "upload_time": "2019-06-05T13:27:47", "url": "https://files.pythonhosted.org/packages/11/20/5bf42b03a3b637ba8920c2a32a8be45361509dc6ca64c3c65848c9166783/scolp-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "072d9ddd4a3ac192da2986ae69b4509f", "sha256": "3260425383985e01fd07491721e2d0f57df39105ce7442eacf3fcec5343d1005" }, "downloads": -1, "filename": "scolp-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "072d9ddd4a3ac192da2986ae69b4509f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5166, "upload_time": "2019-06-05T13:33:41", "url": "https://files.pythonhosted.org/packages/99/e1/ce2a44e49200f23672d925d4739c289917802fef6fc67015afaa135894d8/scolp-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "680ce937baa52ab7b580ee4c519bbe5a", "sha256": "f5b6844838acdaf478f1848f1715d1ddbb2c34a71af43984e832d54bd3cab072" }, "downloads": -1, "filename": "scolp-0.1.1.tar.gz", "has_sig": false, "md5_digest": "680ce937baa52ab7b580ee4c519bbe5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5115, "upload_time": "2019-06-05T13:33:43", "url": "https://files.pythonhosted.org/packages/81/26/da60c10d35a344684a31b5830c8943472b9b86957a5c325040f2f0eb9a52/scolp-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "7c20279ebc55d1ea3756836a019b271b", "sha256": "ec88e29170081bdaba76fd60c7ad6c9a767a73281ca5cdf69f7abc1245794542" }, "downloads": -1, "filename": "scolp-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7c20279ebc55d1ea3756836a019b271b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7102, "upload_time": "2019-06-05T14:20:25", "url": "https://files.pythonhosted.org/packages/cd/fe/3ba262d7fcc7645e860b0eb0ce7898b5ba1033eca17a69bfda2e06e383b4/scolp-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6ef9cb6653604cb96496e9eaf136f28", "sha256": "540b8cc7513bbbeaa5a29cc54a0aa5a09426831f71eb354a4232df850a79a064" }, "downloads": -1, "filename": "scolp-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d6ef9cb6653604cb96496e9eaf136f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7826, "upload_time": "2019-06-05T14:20:27", "url": "https://files.pythonhosted.org/packages/c1/a6/16649f9fcb5e31d122ad798928f92e4b1287131f135f49db4ea54c95c4e1/scolp-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9a6bea1ab2dd967c2800c1504181acce", "sha256": "2aaa466b17ec7ccfe2f054ff5582b2f0030cb827cf1d3cd0ddda427a144a6427" }, "downloads": -1, "filename": "scolp-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9a6bea1ab2dd967c2800c1504181acce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7612, "upload_time": "2019-06-06T10:23:20", "url": "https://files.pythonhosted.org/packages/ed/37/fe318a41536bec98a0c9f2591142b87a67702ad812b18972bd547664d0fa/scolp-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e96693b4411cebb70afc61d1706b8f7f", "sha256": "da0b01a0411a1e11b395fa5312d296a268614eb6798b1622934ef6e2b56e497c" }, "downloads": -1, "filename": "scolp-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e96693b4411cebb70afc61d1706b8f7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8603, "upload_time": "2019-06-06T10:23:23", "url": "https://files.pythonhosted.org/packages/d7/a9/154fef3f1813ee94912735540edd38cad67c5106d5b8661953208f1ff477/scolp-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f67685d2621ff4865aadea1af7fae73c", "sha256": "d2c9f1a6b53c1a5b85ec93dd7fe4b4a64aaf58d0b0595dadc9039343e8f8ef9b" }, "downloads": -1, "filename": "scolp-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f67685d2621ff4865aadea1af7fae73c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7616, "upload_time": "2019-06-06T13:33:49", "url": "https://files.pythonhosted.org/packages/f2/af/0dcb46e168cfb0ba80f74d34d8e01c735aabe836c41270af572f07e0f8a8/scolp-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf2a8d3fc5ea22e1a734351a1c2df8c5", "sha256": "eb817820a6cac18c62a0ce4989c64a1dd2ba080dc9df2e4101268b6f8b409f74" }, "downloads": -1, "filename": "scolp-0.1.4.tar.gz", "has_sig": false, "md5_digest": "cf2a8d3fc5ea22e1a734351a1c2df8c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8566, "upload_time": "2019-06-06T13:33:53", "url": "https://files.pythonhosted.org/packages/3f/56/013464ad22d0a853b8708b963c05022100e4c89cc228c6041975a3c0613a/scolp-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2ae4dde53c84d29533d40516bbd7234d", "sha256": "9993ecfcbf180aeef705be78ec84a2a2a46b09ee22a47e4be3feb9cadf2b36b7" }, "downloads": -1, "filename": "scolp-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2ae4dde53c84d29533d40516bbd7234d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7615, "upload_time": "2019-07-16T13:45:08", "url": "https://files.pythonhosted.org/packages/c9/b7/ac1459af7dab984d8406b61251d46ca0ebea2c7d1b8761eb6813ec7a866d/scolp-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9312c6aec38e9efdc7be684cd7f7fbad", "sha256": "657b7aafdc0f70e07a5dd20fbb684912afd09bb4be3cccaf3e25de0f67cd362c" }, "downloads": -1, "filename": "scolp-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9312c6aec38e9efdc7be684cd7f7fbad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8580, "upload_time": "2019-07-16T13:45:14", "url": "https://files.pythonhosted.org/packages/09/ae/7d484e7952b95b51d5301d66d562aff52cb2053144c1f8872760cdd8a285/scolp-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2ae4dde53c84d29533d40516bbd7234d", "sha256": "9993ecfcbf180aeef705be78ec84a2a2a46b09ee22a47e4be3feb9cadf2b36b7" }, "downloads": -1, "filename": "scolp-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2ae4dde53c84d29533d40516bbd7234d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7615, "upload_time": "2019-07-16T13:45:08", "url": "https://files.pythonhosted.org/packages/c9/b7/ac1459af7dab984d8406b61251d46ca0ebea2c7d1b8761eb6813ec7a866d/scolp-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9312c6aec38e9efdc7be684cd7f7fbad", "sha256": "657b7aafdc0f70e07a5dd20fbb684912afd09bb4be3cccaf3e25de0f67cd362c" }, "downloads": -1, "filename": "scolp-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9312c6aec38e9efdc7be684cd7f7fbad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8580, "upload_time": "2019-07-16T13:45:14", "url": "https://files.pythonhosted.org/packages/09/ae/7d484e7952b95b51d5301d66d562aff52cb2053144c1f8872760cdd8a285/scolp-0.1.5.tar.gz" } ] }