"""Central Rich output helpers. Opinionated: `rich` is a required dependency. This module centralizes Console instances so tables/panels render consistently and so callers can choose stdout vs stderr explicitly (important for pipeline-safe output). """ from __future__ import annotations import sys from typing import Any, TextIO from rich.console import Console _STDOUT_CONSOLE = Console(file=sys.stdout) _STDERR_CONSOLE = Console(file=sys.stderr) def stdout_console() -> Console: return _STDOUT_CONSOLE def stderr_console() -> Console: return _STDERR_CONSOLE def console_for(file: TextIO | None) -> Console: if file is None or file is sys.stdout: return _STDOUT_CONSOLE if file is sys.stderr: return _STDERR_CONSOLE return Console(file=file) def rprint(renderable: Any = "", *, file: TextIO | None = None) -> None: console_for(file).print(renderable)