{"id":2381,"library":"alive-progress","title":"alive-progress","description":"alive-progress is a versatile and highly customizable Python library for creating animated progress bars in the terminal. It provides visual feedback for long-running tasks with real-time throughput, Estimated Time of Arrival (ETA), and a variety of cool animations. Currently at version 3.3.0, the library maintains an active development and release cadence, offering robust features for CLI applications.","status":"active","version":"3.3.0","language":"en","source_language":"en","source_url":"https://github.com/rsalmei/alive-progress","tags":["progress","bar","spinner","terminal","animation","cli","visual","eta","monitoring","python"],"install":[{"cmd":"pip install alive-progress","lang":"bash","label":"Install latest version"}],"dependencies":[],"imports":[{"symbol":"alive_bar","correct":"from alive_progress import alive_bar"},{"note":"A convenient wrapper for iterables, automatically handling bar updates.","symbol":"alive_it","correct":"from alive_progress import alive_it"}],"quickstart":{"code":"import time\nfrom alive_progress import alive_bar\n\nTOTAL_ITEMS = 100\n\nwith alive_bar(TOTAL_ITEMS, title='Processing items') as bar:\n    for i in range(TOTAL_ITEMS):\n        # Simulate a task\n        time.sleep(0.05)\n        bar() # Update the progress bar\n\nprint(\"Task completed!\")","lang":"python","description":"This quickstart demonstrates the most common usage pattern for `alive-progress` using the `alive_bar` context manager. It initializes a progress bar with a total count and updates it in each iteration of a loop."},"warnings":[{"fix":"Use `with alive_bar(total, force_tty=True) as bar:` to explicitly enable the display in such environments.","message":"When running in non-interactive environments like PyCharm consoles, Jupyter notebooks, or shell pipelines, alive-progress might automatically detect a non-TTY environment and only print the final receipt. To force the progress bar display, use the `force_tty=True` argument.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always use the `text='your message'` keyword argument when setting an inline message: `bar(text='current status')`. The `bar()` call without arguments increments the bar.","message":"The method for setting inline messages within the progress bar changed in earlier major versions. Older versions used `bar('message')` to set text while incrementing. Current versions (3.x) use `bar(text='message')` for this purpose. Calling `bar('message')` without the `text=` keyword in 3.x will likely result in an error or unexpected behavior as it would try to interpret 'message' as an increment count.","severity":"breaking","affected_versions":"Likely 2.x to 3.x transitions, 3.x and newer"},{"fix":"If `total` is provided, `bar()` increments. To set a specific percentage, call `bar(fractional_value)` (e.g., `bar(i / total)`). If no `total` is given, it operates in 'unknown' mode with no ETA, and `bar()` simply updates the spinner.","message":"When `alive_bar` is initialized with a `total`, calling `bar()` without arguments increments an internal counter. To manually set the progress by a percentage (e.g., 15%), you must pass the fractional value to `bar()`: `bar(0.15)`. Mixing these approaches or passing a raw count when percentage is expected (or vice-versa) without understanding the mode can lead to incorrect progress display.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your project uses Python 3.9 or newer.","message":"Support for older Python versions has been dropped. The library officially supports Python >=3.9.","severity":"deprecated","affected_versions":"<3.9"}],"env_vars":null,"last_verified":"2026-04-10T00:00:00.000Z","next_check":"2026-07-09T00:00:00.000Z"}