Laboratório de Programação — Ciência da Computação • UFPI
Console, estilos, tabelas, painéis, árvores, progresso, live, markdown, syntax, status/spinners e mais — com syntax highlighting
rich?pip install rich
from rich.console import Console
console = Console()
console.print("[bold magenta]Olá[/] [green]mundo[/]! :snake:")
console.print("Erros em [bold red]vermelho[/], avisos em [yellow]amarelo[/].")
[bold], [italic], [color], [/].:snake:, :rocket:…Console(markup=False).from rich import pretty, inspect
pretty.install() # ativa formatação bonita do print()
dados = {"curso": "Lab CC", "alunos": ["Ana", "João"], "ativo": True}
print(dados) # agora colorido e identado
inspect(dados, methods=True)
from rich.console import Console
from rich.rule import Rule
from rich.align import Align
console = Console()
console.print(Rule("[bold blue]Seção 1"))
console.print(Align("Centralizado", align="center"))
from rich.console import Console
from rich.panel import Panel
console = Console()
console.print(Panel.fit(
"[bold green]Sucesso![/]\nOperação concluída.",
title="Status", border_style="green"
))
from rich.console import Console
from rich.table import Table
table = Table(title="Alunos")
table.add_column("Nome", style="cyan", no_wrap=True)
table.add_column("Média", justify="right")
table.add_row("Ana", "9.2")
table.add_row("João", "8.7")
Console().print(table)
from rich.console import Console
from rich.tree import Tree
raiz = Tree("Projeto")
src = raiz.add("[bold]src[/]")
src.add("main.py")
src.add("utils.py")
raiz.add("README.md")
Console().print(raiz)
from rich.console import Console
from rich.columns import Columns
itens = [f"[cyan]Item {i}[/]" for i in range(1, 7)]
Console().print(Columns(itens, equal=True, expand=True))
import time
from rich.progress import Progress
with Progress() as progress:
tarefa = progress.add_task("[green]Baixando...", total=100)
while not progress.finished:
progress.update(tarefa, advance=5)
time.sleep(0.05)
import time
from rich.console import Console
console = Console()
with console.status("[bold blue]Processando..."):
time.sleep(2) # seu trabalho aqui
console.print("[green]Pronto![/]")
import time
from rich.live import Live
from rich.table import Table
def tabela(tick):
tb = Table(title=f"Tick {tick}")
tb.add_column("Item"); tb.add_column("Valor", justify="right")
for i in range(3):
tb.add_row(f"X{i}", str(tick * (i + 1)))
return tb
with Live(tabela(0), refresh_per_second=4) as live:
for n in range(1, 6):
time.sleep(0.5)
live.update(tabela(n))
Útil para dashboards de CLI, monitores, scraping, etc.
from rich.console import Console
from rich.syntax import Syntax
code = "def soma(a, b):\n return a + b\n"
syntax = Syntax(code, "python", theme="monokai", line_numbers=True)
Console().print(syntax)
from rich.console import Console
from rich.markdown import Markdown
md = Markdown("# Título\n*Itálico* **Negrito**\n- Lista 1\n- Lista 2")
Console().print(md)
from rich.traceback import install
install(show_locals=True) # melhora tracebacks globais
def falha():
x = 1 / 0
falha()
import logging
from rich.logging import RichHandler
logging.basicConfig(
level="INFO",
format="%(message)s",
handlers=[RichHandler(rich_tracebacks=True)]
)
log = logging.getLogger("app")
log.info("Servidor iniciado")
from rich.prompt import Prompt, Confirm
nome = Prompt.ask("Seu nome", default="Aluno")
ok = Confirm.ask("Deseja continuar?", default=True)
print(nome, ok)
import time
from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
BarColumn(),
TextColumn("{task.percentage:>3.0f}%"),
) as progress:
t1 = progress.add_task("Tarefa A", total=60)
t2 = progress.add_task("Tarefa B", total=90)
while not progress.finished:
progress.update(t1, advance=2)
progress.update(t2, advance=3)
time.sleep(0.05)
Console() compartilhado.print() e console.print() em CLIs complexas.from rich.console import Console
from rich.table import Table
from rich.panel import Panel
from rich.progress import Progress
from rich.syntax import Syntax
console = Console()
console.print("[bold green]OK[/]")
tb = Table(); tb.add_column("A"); tb.add_row("1"); console.print(tb)
console.print(Panel("Mensagem", title="Info"))
with Progress() as p:
t = p.add_task("Baixando", total=100)
p.update(t, advance=100)
console.print(Syntax("print('hi')", "python"))
rich eleva a experiência de CLIs: legibilidade, feedback e estética.logging, tracebacks e prompts para fluxo completo.