A Python progress bar with real-time throughput, ETA, cool animations, and unique features like pausing and skipping.
alive-progress is a Python library that displays animated progress bars with real-time throughput, ETA, and interactive features like pausing and skipping. It solves the problem of monitoring long-running processes in terminals by providing visual feedback that indicates activity hasn't stalled or crashed.
Python developers working on CLI applications, data processing scripts, or any long-running tasks where progress visualization improves user experience and debugging.
Developers choose alive-progress for its unique pause/resume capability, accurate ETA with skip tracking, and highly customizable animations that react to actual processing speed, offering both functionality and aesthetic appeal.
A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows suspending processing to interact at the Python prompt and resume seamlessly, a unique feature not found in other progress bar libraries, as highlighted in the 'Pause Mechanism' section.
Uses exponential smoothing for predictions and supports marking skipped items to maintain throughput accuracy, preventing ETA distortion in batch jobs with pre-processed data.
Live spinner adjusts speed based on real-time throughput, clearly indicating activity and reducing false alarms about crashes or freezes, as demonstrated in the demo gifs.
Automatic hooks enrich print() and logging output with current progress position without disrupting bar animations, making debugging easier in long-running tasks.
Requires libraries like graphemeu for Unicode support, adding bloat and potential issues in constrained environments, and major version updates (e.g., 2.0 to 3.0) can introduce breaking changes.
With numerous options for styles, calibration, and widgets, initial setup can be overwhelming for simple use cases, and custom animation creation involves a steep learning curve using spinner factories.
Animations rely on terminal capabilities and may not work out-of-the-box in IDEs like PyCharm or Jupyter without manual force_tty tweaks, as admitted in the 'Forcing animations' section.