Skip to main content

rich-terminal-output

Create beautiful terminal output with Rich library including tables, progress bars, panels, and syntax highlighting. Use when building CLI applications or enhancing terminal output in Python.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
AutumnsGrove/Lattice
آخر نشاط في المصدر
٢٥ ديسمبر ٢٠٢٥ في ١٧:١٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٦
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
rich-terminal-output
description
Create beautiful terminal output with Rich library including tables, progress bars, panels, and syntax highlighting. Use when building CLI applications or enhancing terminal output in Python.
# Rich Terminal Output Skill ## When to Activate Activate this skill when: - Building CLI applications - Displaying structured data (tables) - Showing progress for long operations - Creating error/status panels - Pretty-printing objects for debugging - Enhancing logging output ## Installation ```bash uv add rich # Quick test python -c "from rich import print; print('[bold green]Rich working![/]')" ``` ## Core Concepts ### Console Object ```python from rich.console import Console console = Console() # Basic output console.print("Hello, World!") # Styled output console.print("[bold red]Error:[/] Something went wrong") console.print("[green]Success![/] Operation completed") ``` ### Markup Syntax ```python "[bold]Bold[/]" "[italic]Italic[/]" "[red]Red text[/]" "[blue on white]Blue on white background[/]" "[bold red]Combined styles[/]" "[link=https://example.com]Click here[/]" ``` ### Drop-in Print Replacement ```python from rich import print print("[bold cyan]Styled text[/]") print({"key": "value"}) # Auto-pretty-prints ``` ## Tables ```python from rich.console import Console from rich.table import Table console = Console() table = Table(title="User List") table.add_column("ID", style="cyan", justify="right") table.add_column("Name", style="magenta") table.add_column("Email", style="green") table.add_column("Status", justify="center") table.add_row("1", "Alice", "alice@example.com", "✓ Active") table.add_row("2", "Bob", "bob@example.com", "✓ Active") table.add_row("3", "Charlie", "charlie@example.com", "✗ Inactive") console.print(table) ``` ## Panels ```python from rich.console import Console from rich.panel import Panel console = Console() # Simple panel console.print(Panel("Operation completed!")) # Styled panel console.print(Panel( "[green]All tests passed![/]\n\n" "Total: 42 tests\n" "Time: 3.2s", title="Test Results", border_style="green" )) # Error panel console.print(Panel( "[red]Connection refused[/]\n\n" "Host: localhost:5432", title="[bold red]Error[/]", border_style="red" )) ``` ## Progress Bars ### Simple Progress ```python from rich.progress import track import time for item in track(range(100), description="Processing..."): time.sleep(0.01) ``` ### Multiple Tasks ```python from rich.progress import Progress with Progress() as progress: task1 = progress.add_task("[red]Downloading...", total=100) task2 = progress.add_task("[green]Processing...", total=100) while not progress.finished: progress.update(task1, advance=0.9) progress.update(task2, advance=0.6) time.sleep(0.02) ``` ## Syntax Highlighting ```python from rich.console import Console from rich.syntax import Syntax console = Console() code = ''' def hello(): print("Hello, World!") ''' syntax = Syntax(code, "python", theme="monokai", line_numbers=True) console.print(syntax) ``` ## Tree Displays ```python from rich.console import Console from rich.tree import Tree console = Console() tree = Tree("[bold blue]MyProject/[/]") src = tree.add("[bold]src/[/]") src.add("main.py") src.add("config.py") tests = tree.add("[bold]tests/[/]") tests.add("test_main.py") console.print(tree) ``` ## Logging Integration ```python import logging from rich.logging import RichHandler logging.basicConfig( level=logging.INFO, format="%(message)s", handlers=[RichHandler(rich_tracebacks=True)] ) logger = logging.getLogger("myapp") logger.info("Application started") logger.error("Connection failed") ``` ## Pretty Tracebacks ```python from rich.traceback import install # Call once at startup install(show_locals=True) # All exceptions now have beautiful tracebacks ``` ## Common Pitfalls ### Reuse Console Instance ```python # ❌ Bad def show(msg): Console().print(msg) # Creates new instance each time # ✅ Good console = Console() def show(msg): console.print(msg) ``` ### Escape User Input ```python from rich.markup import escape username = "user[admin]" # ❌ Bad - brackets break markup console.print(f"[blue]{username}[/]") # ✅ Good console.print(f"[blue]{escape(username)}[/]") ``` ### Handle Non-TTY ```python import sys console = Console(force_terminal=sys.stdout.isatty()) ``` ## CLI Application Pattern ```python import click from rich.console import Console from rich.panel import Panel console = Console() @click.command() @click.argument('filename') def process(filename): console.print(f"[bold]Processing:[/] {filename}") with console.status("[bold green]Working..."): result = do_work(filename) if result.success: console.print(Panel( f"[green]Processed {result.count} items[/]", title="Success" )) else: console.print(f"[red]Error:[/] {result.error}") ``` ## When NOT to Use Rich - Non-interactive scripts (output piped) - Server-side logging - Performance-critical loops - Minimal dependency requirements ## Related Resources See `AgentUsage/rich_formatting.md` for complete documentation including: - Advanced table customization - Spinner and status displays - Console recording - Integration patterns
عرض على GitHub