{"id":284,"library":"rich","title":"Rich","description":"Rich is a powerful Python library designed for creating rich text and beautiful formatting in the terminal. It provides an intuitive API to add color and style to terminal output, and can render advanced content such as pretty tables, dynamic progress bars, formatted Markdown, syntax-highlighted source code, and enhanced tracebacks. The library is actively maintained by Textualize and works across Linux, macOS, and Windows, requiring Python 3.8 or later.","status":"active","version":"14.3.0","language":"python","source_language":"en","source_url":"https://github.com/Textualize/rich","tags":["cli","terminal","color","style","formatting","progress-bar","tables","markdown","syntax-highlighting","debugging"],"install":[{"cmd":"pip install rich","lang":"bash","label":"Standard installation"},{"cmd":"pip install \"rich[jupyter]\"","lang":"bash","label":"For Jupyter Notebook integration"}],"dependencies":[{"reason":"Used for syntax highlighting of code and tracebacks.","package":"pygments","optional":false}],"imports":[{"note":"Replaces the built-in print() function with a Rich-enhanced version for automatic styling and pretty-printing.","symbol":"print","correct":"from rich import print"},{"note":"Provides fine-grained control over terminal output, including styling, logging, and advanced rendering.","symbol":"Console","correct":"from rich.console import Console"},{"note":"Installs Rich's pretty-printing capabilities into the Python REPL, automatically formatting data structures.","symbol":"install","correct":"from rich.pretty import install"},{"note":"A utility function to generate detailed, color-coded reports on any Python object, useful for debugging.","symbol":"inspect","correct":"from rich import inspect"},{"symbol":"Table","correct":"from rich.table import Table"},{"symbol":"Progress","correct":"from rich.progress import Progress"},{"symbol":"Markdown","correct":"from rich.markdown import Markdown"},{"symbol":"Syntax","correct":"from rich.syntax import Syntax"}],"quickstart":{"code":"from rich import print\nfrom rich.console import Console\nfrom rich.table import Table\n\n# Using rich.print as a drop-in replacement\nprint(\"[bold magenta]Hello[/bold magenta] [green]Rich[/green] World!\")\n\n# Using Console for more control\nconsole = Console()\nconsole.log(\"This is a log message with [blue]timestamp[/blue] and file info.\")\n\n# Creating a simple table\ntable = Table(title=\"Example Table\")\ntable.add_column(\"Header 1\", style=\"cyan\", no_wrap=True)\ntable.add_column(\"Header 2\", style=\"magenta\")\ntable.add_row(\"Row 1, Cell 1\", \"Row 1, Cell 2\")\ntable.add_row(\"Row 2, Cell 1\", \"Row 2, Cell 2\")\nconsole.print(table)","lang":"python","description":"This quickstart demonstrates the two primary ways to use Rich: by importing its enhanced `print` function as a direct replacement for Python's built-in `print` for easy styling with console markup, and by instantiating a `Console` object for more advanced features like logging and rendering complex structures such as tables."},"warnings":[{"fix":"Review and update console markup strings according to the new syntax outlined in the Rich documentation, particularly regarding bracket usage and color specification.","message":"Console markup syntax was significantly updated in versions leading up to 13.0.0. Python structures like `[1,2,3]` are no longer parsed as markup, and standard color numbers syntax changed from `[5]` to `color(<number>)`. The markup escape method changed from double brackets (e.g., `foo[[]]`) to preceding with a backslash (e.g., `foo\\[bar]`).","severity":"breaking","affected_versions":"Prior to 13.0.0"},{"fix":"Ensure your project runs on Python 3.8 or a newer version.","message":"Version 12.0.0 dropped support for Python 3.7. Rich now officially requires Python 3.8 or later.","severity":"breaking","affected_versions":"12.0.0 and above"},{"fix":"If relying on these environment variables for color control, ensure they are set to appropriate values (e.g., `1` for `FORCE_COLOR` to force color, or `0` for `NO_COLOR` to disable it) rather than being empty.","message":"As of Rich 14.0.0, empty `NO_COLOR` and `FORCE_COLOR` environment variables are now considered disabled, impacting how Rich decides to render colored output.","severity":"breaking","affected_versions":"14.0.0 and above"},{"fix":"Pass `highlight=False` to the `console.print()` method (e.g., `console.print('[[green]1[/green]] Create new password', highlight=False)`).","message":"Rich's `Console.print()` method (and `rich.print`) automatically highlights Python data structures and syntax. If this automatic highlighting of elements like braces, commas, or numbers is undesired (e.g., when trying to achieve a very specific plain style), it needs to be explicitly disabled.","severity":"gotcha","affected_versions":"All versions"},{"fix":"In PyCharm, enable the 'Emulate terminal in output console' option in your run/debug configurations for projects using Rich.","message":"PyCharm's default run console often does not fully emulate a terminal, which can prevent Rich from rendering styled output correctly.","severity":"gotcha","affected_versions":"All versions (PyCharm specific)"}],"env_vars":null,"last_verified":"2026-05-12T12:50:45.035Z","next_check":"2026-06-26T00:00:00.000Z","problems":[],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.4,"disk_size":"83.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.4,"disk_size":"30.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":5.4,"disk_size":"30.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":4.4,"disk_size":"83M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":4.4,"disk_size":"30M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":5.4,"disk_size":"30M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":4.7,"disk_size":"87.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":4.7,"disk_size":"33.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.27,"mem_mb":5.8,"disk_size":"32.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.7,"disk_size":"88M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.7,"disk_size":"33M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.22,"mem_mb":5.8,"disk_size":"33M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.2,"disk_size":"78.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.2,"disk_size":"24.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.22,"mem_mb":5.6,"disk_size":"24.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":4.2,"disk_size":"79M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.2,"disk_size":"25M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.22,"mem_mb":5.6,"disk_size":"25M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.6,"disk_size":"78.2M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.6,"disk_size":"24.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.22,"mem_mb":6,"disk_size":"24.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.6,"disk_size":"79M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4.6,"disk_size":"25M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":6,"disk_size":"25M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4,"disk_size":"58.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":4,"disk_size":"29.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":5.3,"disk_size":"29.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"jupyter","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":4.5,"disk_size":"59M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":4.5,"disk_size":"30M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.1,"mem_mb":5.3,"disk_size":"30M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}