Позволяет добавлять в скрипты анимированный индикатор загрузки + статусы вроде ✔️ / ✖️ / ⚠️
Что умеет:
💬 Много встроенных спиннеров (например dots, line и т.д.) и выбор своего набора кадров.
💬 Настройка текста, цвета спиннера и даже цвета текста (text_color), положение слева/справа (placement).
💬 Удобные режимы использования: обычный .start()/.stop(), контекст-менеджер with, и даже декоратор.
💬 Статусы: .succeed(), .fail(), .warn(), .info(), плюс stop_and_persist() для своего символа/текста.
⚙️ Простая установка:
pip install halo
Примеры использования:
🟢Базовый сценарий: старт → работа → успех/ошибка
import time
from halo import Halo
spinner = Halo(text="Собираю данные", spinner="dots", color="cyan")
spinner.start()
try:
time.sleep(2) # имитация работы
spinner.succeed("Готово: данные собраны ✔️")
except Exception:
spinner.fail("Упс: что-то пошло не так ✖️")
🟢Динамика: меняем текст/цвет/спиннер по ходу дела
import time
from halo import Halo
spinner = Halo(text="Шаг 1/3", spinner="dots", color="cyan")
spinner.start()
time.sleep(1)
spinner.text = "Шаг 2/3: обработка"
spinner.color = "magenta"
time.sleep(1)
spinner.spinner = "line"
spinner.text = "Шаг 3/3: финализация"
time.sleep(1)
spinner.succeed("Всё готово!")
🟢Свой кастомный спиннер (своими кадрами)
import time
from halo import Halo
my_spinner = {
"interval": 120,
"frames": ["▖", "▘", "▝", "▗"]
}
spinner = Halo(text="Кручу свой спиннер", spinner=my_spinner, color="blue")
spinner.start()
time.sleep(2)
spinner.stop_and_persist(symbol="✅", text="Сделано")
♎️ GitHub/Инструкция
halo особенно хорошо заходит в CLI-утилитах (argparse/typer/click) — спиннер превращает “молчаливую паузу” в понятный прогресс и повышает доверие к инструменту.🙂 Секреты админа | 📲 Max
#python #soft #github
