Skip to main content

python-rich

Creating beautiful terminal output with Python Rich library

Aller à l'installation

Informations de source

Dépôt
NeuralBlitz/Mito
Dernière activité de la source
22 mars 2026 à 13:29
Langue détectée de SKILL.md
anglais
Étoiles
0
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
python-rich
description
Creating beautiful terminal output with Python Rich library
license
MIT
metadata
{"audience":"python-developers","category":"terminal-output"}
# Skill: Python Rich ## What I do Create rich, formatted terminal output with Python Rich library - including colored text, tables, progress bars, syntax highlighting, and beautiful console applications. ## When to use me When enhancing terminal output with colors, tables, progress bars, Markdown rendering, or building rich CLI applications without a full TUI framework. ## Installation ```bash pip install rich ``` ## Basic Usage ### Simple Colored Output ```python from rich import print as rprint from rich.console import Console from rich.theme import Theme console = Console() # Simple colored text rprint("[red]This is red[/red]") rprint("[bold blue]Bold blue[/bold blue]") rprint("[yellow on black]Yellow on black[/yellow on black]") # Combinations rprint("[bold][italic][underline]All styles[/underline][/italic][/bold]") ``` ### Console Object ```python from rich.console import Console console = Console() # Print with styling console.print("Hello, World!", style="bold green") # Different output streams console_err = Console(stderr=True) # For warnings/errors console_err.print("[red]Error![/red]", stderr=True) # Width control console = Console(width=80) console = Console(force_terminal=True) ``` ## Color Reference ### Named Colors ``` black, red, green, yellow, blue, magenta, cyan, white bright_black (gray), bright_red, bright_green, bright_yellow bright_blue, bright_magenta, bright_cyan, bright_white ``` ### RGB & Hex Colors ```python from rich.color import Color # RGB console.print("[color(255,128,0)]Orange text[/color]") # Hex console.print("[#FF8800]Orange text[/#FF8800]") # With Color class color = Color.from_rgb(255, 128, 0) console.print(f"[{color}]Orange text[/{color}]") ``` ## Text Styles | Style | Description | |-------|-------------| | `bold` | Bold text | | `italic` | Italic text | | `underline` | Underlined | | `strike` | Strikethrough | | `blink` | Blinking text | | `reverse` | Reversed colors | | `dim` | Dimmed text | | `bold not dim` | Bold and not dim | ### Combinations ```python console.print("[bold red]Bold Red[/bold red]") console.print("[bold italic underline]All combined[/bold italic underline]") ``` ## Tables ### Basic Table ```python from rich.console import Console from rich.table import Table console = Console() table = Table(title="Users") table.add_column("Name", style="cyan", no_wrap=True) table.add_column("Email", style="magenta") table.add_column("Role", style="green") table.add_row("Alice", "alice@example.com", "Admin") table.add_row("Bob", "bob@example.com", "User") table.add_row("Charlie", "charlie@example.com", "User") console.print(table) ``` ### Advanced Table ```python from rich.table import Table table = Table( title="Sales Report", show_header=True, header_style="bold magenta", border_style="bright_blue", row_styles=["", "dim"] ) table.add_column("Product", justify="left") table.add_column("Q1", justify="right") table.add_column("Q2", justify="right") table.add_column("Total", justify="right", style="bold green") table.add_row("Widget A", "$10,000", "$12,000", "$22,000") table.add_row("Widget B", "$8,000", "$9,500", "$17,500") table.add_row("Widget C", "$15,000", "$14,000", "$29,000") console.print(table) ``` ## Progress Bars ### Simple Progress ```python from rich.progress import Progress with Progress() as progress: task = progress.add_task("[cyan]Processing...", total=100) for i in range(100): progress.advance(task) # Do work... ``` ### Multiple Tracks ```python from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), BarColumn(), TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), console=console ) as progress: task1 = progress.add_task("[red]Download", total=100) task2 = progress.add_task("[green]Process", total=100) for i in range(100): progress.advance(task1) if i % 2 == 0: progress.advance(task2) ``` ### File Download Simulation ```python from rich.progress import Progress, DownloadColumn, TransferSpeedColumn with Progress( TextColumn("[bold blue]{task.description}"), BarColumn(), DownloadColumn(), TransferSpeedColumn(), console=console ) as progress: task = progress.add_task("Download", total=1000000) for chunk in download_chunks(): progress.advance(task, len(chunk)) ``` ## Syntax Highlighting ### Code Highlighting ```python from rich.syntax import Syntax from rich.console import Console console = Console() code = """ def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) result = fibonacci(10) print(f"Result: {result}") """ syntax = Syntax(code, "python", theme="monokai", line_numbers=True) console.print(syntax) ``` ### Themes ``` monokai, github-dark, dracula, nord, one-dark, vim, etc. ``` ## Panels & Boxes ### Panels ```python from rich.panel import Panel from rich.text import Text console = Console() text = Text("Welcome to my application!", style="bold green") panel = Panel(text, title="Info", border_style="blue") console.print(panel) # Without title console.print(Panel("Simple panel", style="red")) ``` ### Boxes ```python from rich.box import Box, DOUBLE, ROUNDED console.print( "Content in rounded box", box=ROUNDED, border_style="cyan" ) ``` ## Tree View ```python from rich.tree import Tree from rich.console import Console console = Console() tree = Tree("📁 Project", guide_style="bold blue") src = tree.add("📂 src", style="cyan") src.add("📄 main.py") src.add("📂 utils", style="green") src.add("📄 helpers.py") tests = tree.add("📂 tests", style="yellow") tests.add("📄 test_main.py") console.print(tree) ``` ## Markdown Rendering ```python from rich.console import Console from rich.markdown import Markdown console = Console() md = """ # Heading 1 ## Heading 2 This is **bold** and this is *italic*. - List item 1 - List item 2 ```python print("code block") ``` """ console.print(Markdown(md)) ``` ## Logging ```python from rich.logging import RichHandler import logging logging.basicConfig( level=logging.DEBUG, format="%(message)s", handlers=[RichHandler(rich_tracebacks=True)] ) log = logging.getLogger("myapp") log.debug("Debug message") log.info("Info message") log.warning("Warning message") log.error("Error message") ``` ## Live Display ### Dynamic Updates ```python from rich.live import Live from rich.table import Table with Live(build_table(), refresh_per_second=4) as live: for _ in range(10): # Update table live.update(build_table()) ``` ### Status Spinner ```python from rich.console import Console from rich.progress import Progress, SpinnerColumn console = Console() with console.status("[bold green]Working on something..."): time.sleep(2) console.print("[green]Done!") ``` ## Pretty Printing ### Dict/Object Pretty Print ```python from rich.pretty import pprint from rich.console import Console console = Console() data = { "name": "Alice", "age": 30, "skills": ["Python", "JavaScript"], "active": True } pprint(data, console=console, expand_all=True) ``` ## Bar Charts ```python from rich.console import Console from rich.bar import Bar console = Console() console.print(Bar(50, width=30, color="cyan")) ``` ## Column Layout ```python from rich.console import Console from rich.columns import Columns console = Console() columns = Columns([ "[bold]Name[/bold]\nAlice\nBob\nCharlie", "[bold]Role[/bold]\nAdmin\nUser\nUser" ], equal=True, expand=True) console.print(columns) ``` ## Best Practices 1. **Use Console object** for consistent styling 2. **Close tags properly** `[/red]` or use context manager 3. **Test terminal compatibility** - not all terminals support all styles 4. **Respect user preferences** - check `Console.options.no_color` 5. **Width matters** - use `console.width` for responsive layouts 6. **Combine with Click/Typer** for complete CLI applications
Voir sur GitHub