{ "info": { "author": "Thomas Einsporn, Manuel Barkhau", "author_email": "te@nexttuesday.de, mb@nexttuesday.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Software Development :: Libraries" ], "description": "python-propeller\n================\n\nPretty progress and load indicators.\n\nInstallation:\n\n pip install python-propeller\n\n $ python\n >>> from propeller import demo, propeller\n >>> demo()\n\nUsage as spinner:\n\n with propeller(\"spinning propeller\") as p:\n # do something\n p.spin()\n\n # do more\n p.spin()\n\n # print to console\n p.println(\"without messing up the spinner\")\n\n # replace \"spinning propeller\"\n p.msg(\"spinner\")\n\n ...\n\n\nUsage with progress indicator:\n\n with propeller(\"progress propeller\") as p:\n n = 1000\n for i in range(n):\n # do something\n p.progress(i, n)\n\n\nProcess a collections:\n\n def preprocessor(item):\n # preprocess\n\n def finalizer(item):\n # finalize\n\n pre_processed = propeller(\"preprocessing\").map(preprocess, in_list)\n propeller(\"finalizing\").process(finalizer, pre_processed)\n\n\nIf the length of your collections can be determined, a progress bar will be\ndisplayed. If iterables are given, a spinner will be displayed. If you know\nthe size of your iterables, you can explicitly specify it with the `n`\nkeyword argument:\n\n def doit(item):\n # work\n\n propeller().process(doit, a_iterable, b_iterable, n=42)\n\n\n`python-propeller` uses threading and needs to be ended cleanly. This can be\ndone by using `process`, `map` or `imap` functions, using the `with` statement\nor explicitly calling the `end` method when you are finished.\n\n p = propeller()\n try:\n # do something\n finally:\n p.end()\n\n\nVarious measurements are optional:\n\n with propeller(eta=False, ops=False, eta=False, percent=False) as plain_p:\n plain_p.spin()\n\n\nCustomization\n-------------\n\nThe classic propeller can be made like so:\n\n from time import sleep\n\n def noop(item):\n sleep(0.01)\n\n propeller(spinner=\"|/-\\\\\").process(noop, iter(range(300)))\n\n\nBut this is also one of the many preconfigured styles:\n\n propeller(spinner='lines').process(noop, iter(range(300)))\n\n\nWith progress bars the first character of the string is used for the unfilled\nportion of the bar and the last character for the filled portion:\n\n propeller(bar=' -+=').process(noop, range(300))\n\n # produces something like this:\n ========- [ops: 99][eta: 2s][23%]\n\n\nIncluded styles for both spinners and progress bars:\n\n `shades` \u2504\u2591\u2592\u2593\u2588 (default)\n `hbar` \u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\n `vbar` \u258f\u258e\u258d\u258c\u258b\u258a\u2589\u2588\n `dots` \u2800\u2801\u2803\u2807\u2847\u28c7\u28e7\u28f7\u28ff\n\n # print all spinner and progress bar styles\n from propeller import print_styles\n print_styles()", "description_content_type": null, "docs_url": null, "download_url": "https://github.org/mbarkhau/python-propeller/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mbarkhau/python-propeller", "keywords": "progress loading indicator propeller", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "python-propeller", "package_url": "https://pypi.org/project/python-propeller/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/python-propeller/", "project_urls": { "Download": "https://github.org/mbarkhau/python-propeller/", "Homepage": "https://github.com/mbarkhau/python-propeller" }, "release_url": "https://pypi.org/project/python-propeller/0.2.6/", "requires_dist": null, "requires_python": null, "summary": "Pretty progress and load indicators", "version": "0.2.6" }, "last_serial": 808420, "releases": { "0.2.0": [], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9b92ecf1bc9d08c3e7b851771663aafe", "sha256": "cdfd852a1049668372984f5335bbe07a053ef9ddf8a2f131fc1911c96ea23f7a" }, "downloads": -1, "filename": "python-propeller-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9b92ecf1bc9d08c3e7b851771663aafe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5525, "upload_time": "2013-06-17T01:32:37", "url": "https://files.pythonhosted.org/packages/f6/19/f602bbbae685dd19aa248be2b94b77c39e685126d67dbf875cac3c5e170c/python-propeller-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "397ed026caed399da16c40e08d8ace4a", "sha256": "43f318d52c25d25b92e52a74a72591f2c774a385224cabd69569cc0ecde67fa8" }, "downloads": -1, "filename": "python-propeller-0.2.2.tar.gz", "has_sig": false, "md5_digest": "397ed026caed399da16c40e08d8ace4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5831, "upload_time": "2013-06-17T01:38:38", "url": "https://files.pythonhosted.org/packages/7c/7a/f97d285d609ecdc7b63ecbb84dd727c1cf840c0d7f20c46ecedc1c74035b/python-propeller-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "b4c8227b671b45a5002e27a92ca31a20", "sha256": "7472ef937ad02300116f8f29fa2908942c9f48c663d8787679329d6c982288ae" }, "downloads": -1, "filename": "python-propeller-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b4c8227b671b45a5002e27a92ca31a20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5885, "upload_time": "2013-06-17T01:41:51", "url": "https://files.pythonhosted.org/packages/f5/60/147e1ef7e54c56da2218f16e85579ff8245a27739b5e64d506019f161054/python-propeller-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "7da7bf89db83b7b0987e3415954f02b8", "sha256": "43d43c18c17a649418cc9da9f0b3b1c6a11162549891e05e0e6e34b74e43db9f" }, "downloads": -1, "filename": "python-propeller-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7da7bf89db83b7b0987e3415954f02b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5970, "upload_time": "2013-06-30T20:42:32", "url": "https://files.pythonhosted.org/packages/e2/db/94cf8f813cefca113f80bb9b3a54fb8b9093e2f93f2aa77ef0e15af6874a/python-propeller-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "01712600a738ce5e5abc6e7a9ed1892c", "sha256": "7be13c2c3d0a7c52eda1f26e8e2fce4a633c77acbae2d850a26581eeb3842a62" }, "downloads": -1, "filename": "python-propeller-0.2.5.tar.gz", "has_sig": false, "md5_digest": "01712600a738ce5e5abc6e7a9ed1892c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6024, "upload_time": "2013-06-30T20:59:07", "url": "https://files.pythonhosted.org/packages/ed/8b/6a666449377c9717b80fbd3cc41dee62c93dbdc559a1ba62fc5c167a3e4d/python-propeller-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "95cbd17b658e10f9e07d4c3b7e99dc6b", "sha256": "a38d47bbf547341b544085b67425fb5b5fdd4d534f1e82e1741fa8a9cfa1bdc7" }, "downloads": -1, "filename": "python-propeller-0.2.6.tar.gz", "has_sig": false, "md5_digest": "95cbd17b658e10f9e07d4c3b7e99dc6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6044, "upload_time": "2013-07-04T21:39:12", "url": "https://files.pythonhosted.org/packages/0d/b1/211c1f3141aa5bca2b75a293a143a77c23a1666960110677c87896ea40d9/python-propeller-0.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95cbd17b658e10f9e07d4c3b7e99dc6b", "sha256": "a38d47bbf547341b544085b67425fb5b5fdd4d534f1e82e1741fa8a9cfa1bdc7" }, "downloads": -1, "filename": "python-propeller-0.2.6.tar.gz", "has_sig": false, "md5_digest": "95cbd17b658e10f9e07d4c3b7e99dc6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6044, "upload_time": "2013-07-04T21:39:12", "url": "https://files.pythonhosted.org/packages/0d/b1/211c1f3141aa5bca2b75a293a143a77c23a1666960110677c87896ea40d9/python-propeller-0.2.6.tar.gz" } ] }