rich-click
Format click help output nicely with 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.
Screenshots
| Native click help | With rich-click |
|---|---|
Installation
You can install rich-click from the Python Package Index (PyPI) with pip or equivalent.
python -m pip install rich-click
Usage
There are two main ways to set up rich-click formatting for your tool.
Which you choose will depend on your use-case and your personal disposition:
The path of least typing
Monkey patching is probably bad and you should only use this method if you are a Responsible Developer. It's also good if you're lazy, as it requires very little typing. In fact, the whole thing can be done in just four lines:
import click
import rich_click
click.Group.format_help = rich_click.rich_format_help
click.Command.format_help = rich_click.rich_format_help
This overwrites the default click methods with those from the rich-click package.
As such, no other changes are needed - just continue to use click as you would
normally and it will use these custom methods to print your help output.
The good and proper way
If using monkey-patching in your project makes your palms sweaty and your pulse race,
then you'll be pleased to know that you can also use rich-click in a nicely
declarative and verbose manner:
import click
import rich_click
class RichClickGroup(click.Group):
def format_help(self, ctx, formatter):
rich_click.rich_format_help(self, ctx, formatter)
class RichClickCommand(click.Command):
def format_help(self, ctx, formatter):
rich_click.rich_format_help(self, ctx, formatter)
@click.group(cls=RichClickGroup)
@click.option('--debug/--no-debug', default=False)
def cli(debug):
click.echo(f"Debug mode is {'on' if debug else 'off'}")
@cli.command(cls=RichClickCommand)
def sync():
click.echo('Syncing')
(example based on the click docs)
Here we are making new Group and Command child classes that are based on click.
We define our custom format_help() functions and then tell click to to use these classes with the cls argument.
Customisation
There isn't really much you can customise yet, but this is planned. I'm thinking:
- Colours
- Whether to print positional arguments or not
- Could maybe provide custom args to give help text to these
- The ability to break up commands and options into multiple named panels
Contributing
Contributions and suggestions for new features are welcome, as are bug reports! Please create a new issue or better still, dive right in with a pull-request.
Credits
This package was put together hastily by Phil Ewels (@ewels), but the hard work was really done by Will McGugan (@willmcgugan) who not only is the author of Rich but also wrote the original code that this package is based on.
Metadata
Release files for rich-click 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rich-click-0.1.2.tar.gz | 5.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rich_click-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.5 kB
Release files / rich-click-0.1.2.tar.gz
| Download URL | rich-click-0.1.2.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5e298c506d0b7c623e2dbbb51c06c01bd77a30d8705aa3227d7f09ed43010de
|
|
BLAKE2b-256 checksum How to use checksums |
ed712e3bf92884524e66cb4ed8fcfcb6a7e0153e2b60838e2113f6286bee0d42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
|
Release files / rich_click-0.1.2-py3-none-any.whl
| Download URL | rich_click-0.1.2-py3-none-any.whl |
|---|---|
| Size | 6.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a91fc2760b0238fc4c84f5009ea706a7b093824f0e78db27f6511a018850d130
|
|
BLAKE2b-256 checksum How to use checksums |
c6925385015b343d2399b0b9526eb3f43f73a7404e72c6aa41b852cc352b073f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
|