
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
super-bario
Advanced tools
Super Bario: a powerful Python library for multi-bar, multi-layout terminal progress indicators with themes, widgets, and thread-safe updates.
Super Bario is a powerful, layout-aware, multi-bar terminal progress library for Python.
It supports dynamic titles, nested layouts, multiple views per bar, themes, widgets, thread-safe rendering, and responsive terminal resizing.
Think of it as the Super Mario of progress bars: fast, modular, elegant, and fun.
A simple, elegant wrapper over any iterable — with optional counters, themes, spinners, dynamic titles, and context-managed timing.
Bar titles can be static strings or callables:
from super_bario import progress
...
for fname in progress(files, title=lambda p: f"Processing file #{p.index}: {p.value}"):
# ...
Super Bario updates them automatically for every loop iteration.
Every component (bar, percent, counter, time, spinner, rate) is a widget.
You can subclass and create your own:
class MyWidget(Widget):
def render(self, bar):
return f"[{bar.current}/{bar.total}]"
This animation was produced by running the code in
examples/examples.py

Themes define:
Built-ins include: default, minimal, matrix, fire, load, etc.
Super Bario handles:
print() callsNo flicker, no tearing, no overlapping output.
Resize your terminal — Super Bario recalculates widths and reflows layouts correctly.
Bars may optionally be removed once completed, which is useful for log-style or long-running background tasks.
pip install super-bario
If you prefer, you can also use the library directly by importing progress.py.
Below are three core usage modes.
from super_bario import progress
import time
for item in progress(range(100), title="Processing"):
time.sleep(0.01)
for item in progress(
range(5),
title=lambda item: f"Loading item {item.index}: {item.value}",
theme=Theme.fire()
):
time.sleep(0.1)
Super Bario can watch and update a bar based on the size or consumption of a queue-like object.
Below is a minimal setup example for registering watched collections:
from super_bario import Progress
from queue import Queue
queue = Queue()
q = Queue(maxsize=1000)
l = []
Progress.create_row("row_1")
Progress.create_column("col_1", parents=["row_1"])
Progress.create_column("col_2", parents=["row_1"])
Progress.add_watch(q, "Queue", layouts=["col_1"])
Progress.add_watch(l, "List", max=1000, layouts=["col_2"])
from super_bario import Bar, Progress, View, Theme
bar = Bar(total=100, title="Download assets")
view = View(bar, theme=Theme.matrix())
# Bind bar to controller
Progress.add_bar(bar, view)
for i in range(100):
bar.increment()
Progress.display()
from super_bario import Bar, View, Theme, Progress
bar1 = Bar(total=100, title="Core tasks")
bar2 = Bar(total=50, title="Subtasks")
view1 = View(bar1, theme=Theme.fire())
view2 = View(bar2, theme=Theme.minimal())
Progress.create_row("row_1")
Progress.create_column("col_1", parents=["row_1"])
Progress.create_column("col_2", parents=["row_1"])
Progress.create_row("row_2")
Progress.add_bar(bar1, view=view1, layouts=["col_1"])
Progress.add_bar(bar2, view=view2, layouts=["col_2"])
Progress.add_layout("col_1", parents=["row_2"])
Progress.add_layout("col_2", parents=["row_2"])
Progress.display()
from super_bario import View, TitleWidget, BarWidget, PercentageWidget, Theme
custom_view = View(
widgets=[
TitleWidget(),
BarWidget(),
PercentageWidget(),
],
theme=Theme.default(),
)
Views and widgets are entirely composable.
from super_bario import Widget
class SpeedWidget(Widget):
def render(self, bar):
if bar.current == 0:
return "(start)"
return f"{bar.current / bar.elapsed_time():.2f}/s"
Bind it in a view:
from super_bario import View, Bar, Theme
bar = Bar(total=300)
view = View(bar, widgets=[SpeedWidget()], theme=Theme.minimal())
Progress.add_bar(bar, view)
bars = []
bar = Progress.add_custom_bar(
total=100,
title="Custom icons",
indent=0,
remove_on_complete=False,
char_start_incomplete='🏹',
char_start_complete='🏅',
char_end_incomplete='',
char_end_complete='🎯',
char_incomplete=' ',
char_complete=' ',
char_complete_fractions=['➳'],
)
bars.append(bar)
bar = Progress.add_custom_bar(
total=1000,
title="Custom fractions",
indent=0,
remove_on_complete=False,
char_start_incomplete='',
char_end_incomplete='',
char_incomplete=' ',
char_complete='⣿',
char_complete_fractions=['⣀', '⣄', '⣆', '⣇', '⣧', '⣷', '⣿'],
)
bars.append(bar)
with Progress: # another way to manage Progress lifecycle
for bar in bars:
for i in progress(range(1, 100 + 1), bar=bar):
time.sleep(0.02)
Super Bario exposes several global configuration options on the Progress class that control how progress bars are rendered, updated, and cleaned up.
Progress.remove_on_complete: bool
Remove progress bars from the display once all of them are complete.
Default: False
Progress.force_redraw: bool
Clear the entire output before each redraw. This may cause visible flickering, but helps avoid rendering artifacts when using Unicode characters that occupy more than one terminal cell.
Default: False
Progress.stream: TextIO
Output stream used for rendering progress bars.
Default: sys.stderr
Progress.watch_interval: float
How often watched queues are polled, in seconds.
Default: 0.5
Progress.min_update_interval: float
Minimum time (in seconds) between visual updates.
Default: 0.1
Progress.min_update_progress: float
Minimum progress delta required to trigger a redraw.
Default: 0.01 (1%)
Progress.update_on_item_change: bool
Force a redraw on every item update, even if neither the time nor progress thresholds are met.
Default: True
Super Bario uses a synchronized renderer:
When your terminal is resized:
No smearing, no clipping artifacts.
Bars can:
Useful for background logging-style progress displays.
Super Bario is in active development, but already stable in production environments.
Contributions, PRs, and ideas are very welcome.
MIT License
Copyright © 2025 Igor Iatsenko
FAQs
Super Bario: a powerful Python library for multi-bar, multi-layout terminal progress indicators with themes, widgets, and thread-safe updates.
We found that super-bario demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.