Home
Richly rendered command line interfaces in click.
Documentation  ยท  Source Code  ยท  Changelog
rich-click is a shim around Click that renders help output nicely using Rich.
- Click is a "Python package for creating beautiful command line interfaces".
- Rich is a "Python library for rich text and beautiful formatting in the terminal".
The intention of rich-click
is to provide attractive help output from
Click, formatted with Rich, with minimal customisation required.
Features¶
- ๐ Rich command-line formatting of click help and error messages
- ๐ Same API as Click: usage is simply
import rich_click as click
- ๐ซ Nice styles by default
- ๐ป CLI tool to run on other people's tools (prefix the command with
rich-click
) - ๐ฆ Export help text as HTML or SVG
- ๐ Group commands and options into named panels
- โ Well formatted error messages
- ๐ข Easily give custom sort order for options and commands
- ๐จ Extensive customisation of styling and behaviour possible
Installation¶
pip install rich-click
uv pip install rich-click
rye add rich-click
rye sync
poetry add rich-click
pipenv install rich-click
conda install rich-click
Note
rich-click is available via the conda-forge channel (see docs).
sudo port install py-rich-click
Depreciated
This installation method is not officially supported, and is not guaranteed to be up to date.
Examples¶
Simple example¶
To use rich-click in your code, replace import click
with import rich_click as click
in your existing click CLI:
import rich_click as click
@click.command()
@click.option("--count", default=1, help="Number of greetings.")
@click.option("--name", prompt="Your name", help="The person to greet.")
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for _ in range(count):
click.echo(f"Hello, {name}!")
if __name__ == '__main__':
hello()
More complex example¶
rich-click has a ton of customisation options that let you compose help text however you'd like. Below is a more complex example of what rich-click is capable of:
Usage¶
There are a couple of ways to begin using rich-click:
Import rich_click
as click
¶
Switch out your normal click
import with rich_click
, using the same namespace:
import rich_click as click
That's it! โจ Then continue to use Click as you would normally.
See
examples/01_simple.py
for an example.
Declarative¶
If you prefer, you can use RichGroup
or RichCommand
with the cls
argument in your click usage instead.
This means that you can continue to use the unmodified click
package in parallel.
import click
from rich_click import RichCommand
@click.command(cls=RichCommand)
def main():
"""My amazing tool does all the things."""
See
examples/02_declarative.py
for an example.
rich-click
CLI tool¶
rich-click comes with a CLI tool that allows you to format the Click help output from any package that uses Click.
To use, prefix rich-click
to your normal command.
For example, to get richified Click help text from a package called awesometool
, you could run:
$ rich-click awesometool --help
Usage: awesometool [OPTIONS]
..more richified output below..
License¶
This project is licensed under the MIT license.