{"id":22371327,"url":"https://github.com/annikav9/lowbar","last_synced_at":"2025-05-15T10:07:04.095Z","repository":{"id":53515393,"uuid":"514781093","full_name":"AnnikaV9/lowbar","owner":"AnnikaV9","description":"The simplest no-nonsense progress bar for python","archived":false,"fork":false,"pushed_at":"2024-10-20T12:19:55.000Z","size":1740,"stargazers_count":382,"open_issues_count":0,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-15T10:06:19.658Z","etag":null,"topics":["command-line","loading-bar","progress-bar","python","terminal"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/lowbar","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnnikaV9.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-17T07:55:41.000Z","updated_at":"2025-04-18T02:06:37.000Z","dependencies_parsed_at":"2024-11-12T12:33:32.894Z","dependency_job_id":"fefefca9-0ba1-4e3f-892a-44977e2f9eab","html_url":"https://github.com/AnnikaV9/lowbar","commit_stats":{"total_commits":155,"total_committers":4,"mean_commits":38.75,"dds":0.01935483870967747,"last_synced_commit":"04504309e31da845c6cb0a1ce4600884a667da76"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnnikaV9%2Flowbar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnnikaV9%2Flowbar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnnikaV9%2Flowbar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnnikaV9%2Flowbar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnnikaV9","download_url":"https://codeload.github.com/AnnikaV9/lowbar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319720,"owners_count":22051073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","loading-bar","progress-bar","python","terminal"],"created_at":"2024-12-04T20:18:57.647Z","updated_at":"2025-05-15T10:06:59.076Z","avatar_url":"https://github.com/AnnikaV9.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# lowbar\nThe simplest no-nonsense progress bar for python.  \n\u003csub\u003eJump to the [API reference](https://github.com/AnnikaV9/lowbar/wiki/Reference)\u003c/sub\u003e\n\n![Preview GIF](https://github.com/user-attachments/assets/335b85ae-5bdf-48cc-9192-d63770aeb17b)\n\nlowbar is a blazing fast module with zero dependencies for displaying a progress bar in the terminal. It has a low number of features and a simple codebase, hence the name lowbar. \n\n#### lowbar has:\n- Automatic resizing\n- Manual progress management\n- Automatic progress management (As an iterable)\n- Text logging\n- Bar styling\n- Low overhead\n- Small size ( \u003c 150 lines)\n\n#### lowbar doesn't have:\n- Nested bars\n- Fancy animations\n- ETA calculations\n\n## Requirements\n- Python 3.7 or above. lowbar may support earlier versions, but this has not been tested.\n- A console that supports line feed `\\n` and carriage return `\\r`.\n\n## Installation\nInstall the latest stable release:\n```\npip install lowbar\n```\nOr the development version:\n```\npip install git+https://github.com/AnnikaV9/lowbar\n```\n\n## Usage\nOnce you have lowbar installed, you can import it like any other module:\n```python3\nfrom lowbar import lowbar\n```\n\nAnd initialize the bar:\n```python3\nbar = lowbar()\n```\n\nTo make the bar visible and set at 0%:\n```python3\nbar.new()\n```\n\nAfter completing some tasks, we can increase the bar's completion percentage:\n```python3\nbar.add(20)\n```\n\nIf we have a known number of tasks, lowbar can automatically calculate the percentage for us:\n```python3\nbar.next(n_tasks)\n```\n\u003e [!NOTE]\n\u003e If you set the number of tasks when initializing lowbar with `lowbar(n_tasks)`, you don't need to pass `n_tasks` to `next()`.\n\nWe can also set the completion percentage instead of adding to it:\n```python3\nbar.update(50)\n```\n\nUsing `print()` or other similar functions will push the bar up, which doesn't look nice. To log messages without affecting the bar:\n```python3\nbar.log(\"Hello World!\")\n```\n\nAnd finally, to clear the bar completely:\n```python3\nbar.clear()\n```\n\nHere's an example usage of the bar:\n```python3\nbar = lowbar(10)\nbar.new()\nfor i in range(10):\n    time.sleep(0.5)  # task\n    bar.log(f\"Task {i+1} completed\")\n    bar.next()\nbar.clear()\n\nprint(\"Tasks complete!\")\n```\n\nYou don't even need a loop:\n```python3\nbar.new()\ntime.sleep(0.5)  # task\nbar.add(10)\ntime.sleep(0.5)  # task\nbar.add(10)\ntime.sleep(0.5)  # task\nbar.update(100)\nbar.clear()\n\nprint(\"Tasks complete!\")\n```\n\nThe bar can also be used with a context manager. It will automatically run `new()` at the start and `clear()` when exiting:\n```python3\nwith lowbar(2) as bar:\n    time.sleep(0.5)  # task\n    bar.next()\n    time.sleep(0.5)  # task\n    bar.next()\n\nprint(\"Tasks complete!\")\n```\n\nTo make things simpler, you can wrap lowbar around `range()` and turn it into an iterable. It will automatically calculate how much to increase the percentage by every loop:\n```python3\nfor i in lowbar(range(100)):\n    time.sleep(0.5)  # task\n```\n\nPass an integer and lowbar will convert it into a range object for you:\n```python3\nfor i in lowbar(100):\n    time.sleep(0.5)  # task\n```\n\u003e [!NOTE]\n\u003e You can't use `log()` when using lowbar as an iterable.\n\nYou can also change the load fill and blank fill chars:\n```python3\nbar = lowbar(load_fill=\"O\", blank_fill=\".\")\n```\n\nOr add a description text to the left side of the bar:\n```python3\nbar = lowbar(desc=\"Downloading...\")\n```\n\u003e [!NOTE]\n\u003e If the console is too small to accommodate both the bar and the description text, the text will be hidden.\n\n\u003cbr\u003e\n\n**See the [API reference](https://github.com/AnnikaV9/lowbar/wiki/Reference)**\n\n## Contributing\nAll contributions are welcome!\n\nIf you wish to report a bug or suggest a feature, open an [issue](https://github.com/AnnikaV9/lowbar/issues).\n\nYou can also make a [pull request](https://github.com/AnnikaV9/lowbar/pulls) directly if you already have the fix for a bug.\n\nSee [CONTRIBUTING.md](https://github.com/AnnikaV9/lowbar/blob/master/docs/CONTRIBUTING.md) for guidelines to follow.\n\nContributors are listed in [CONTRIBUTORS.md](https://github.com/AnnikaV9/lowbar/blob/master/docs/CONTRIBUTORS.md).\n\n## License\nThis project is licensed under the [MIT License](https://github.com/AnnikaV9/lowbar/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannikav9%2Flowbar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fannikav9%2Flowbar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannikav9%2Flowbar/lists"}