rich — Python-библиотека для форматированного вывода в терминал. Цвета, таблицы, панели, markdown, прогресс-бары, спиннеры — всё через один простой API. Разработана Will McGugan и активно развивается.
Установка
uv add rich
Console — основа всего
from rich.console import Console
console = Console()
console.print("Обычный текст")
console.print("[bold red]Ошибка![/bold red]")
console.print("[green]Успех[/green]")
console.print("[bold blue]Заголовок[/bold blue]")
console.print("[dim]Вторичный текст[/dim]")
Стили обрамляются в [стиль]текст[/стиль].
Markdown
from rich.markdown import Markdown
text = "# Заголовок\n\nПараграф с **жирным** текстом.\n\n```python\nprint('hello')\n```"
console.print(Markdown(text))
Идеально для вывода ответов Claude — модель часто отвечает в markdown-формате.
Panel
from rich.panel import Panel
console.print(Panel(
"Текст сообщения",
title="Заголовок",
border_style="blue"
))
console.print(Panel(
"[bold]Важное сообщение[/bold]",
title="[red]Ошибка[/red]",
border_style="red",
padding=(1, 2),
))
Status (спиннер)
import time
with console.status("[bold green]Думаю...[/]", spinner="dots"):
time.sleep(2) # долгая операция
# спиннер останавливается автоматически при выходе из with
Встроенные спиннеры: dots, dots2, line, arc, bouncingBall, clock.
Input с подсказкой
user_input = console.input("[bold blue]Ты:[/] ")
Поддерживает те же цветовые теги что и console.print().
Таблица
from rich.table import Table
table = Table(title="Статистика токенов")
table.add_column("Тип", style="cyan", no_wrap=True)
table.add_column("Количество", justify="right", style="green")
table.add_column("Стоимость", justify="right", style="yellow")
table.add_row("Input", "1 234", "$0.0037")
table.add_row("Output", "567", "$0.0085")
console.print(table)
Цветовые стили шпаргалка
| Стиль | Применение |
|---|---|
[bold] |
важные части |
[italic] |
термины, акценты |
[dim] |
вторичная информация |
[red] / [green] |
ошибки / успех |
[blue] / [cyan] |
метки пользователя / кода |
[yellow] |
предупреждения, стоимость |
[bold green]Claude[/bold green] |
составные стили |
Важно: highlight=False при стриминге
При выводе текста по чанкам всегда отключай автоподсветку:
# При стриминге:
console.print(chunk, end="", highlight=False)
# При обычном выводе можно без флага:
console.print(response_text)
Без highlight=False rich пытается применить синтаксическую подсветку к каждому чанку отдельно — это ломает форматирование при потоковом выводе.
Rule (разделитель)
from rich.rule import Rule
console.print(Rule("[dim]новый диалог[/dim]"))
Выводит горизонтальную линию на всю ширину терминала — удобно для разделения блоков вывода.
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!