Skip to content

Add colour to argparse help#130645

@hugovk

Description

@hugovk

Feature or enhancement

In Python 3.13 we added colour output to the new REPL, traceback and doctest, and in 3.14 to unittest, test.regrtest and calendar, that can also be controlled with the PYTHON_COLORS, NO_COLOR and FORCE_COLOR environment variables:

Let's add colour to argparse help output.

Survey

First, here's a survey of some other CLIs that use colour:

Survey
uv
ImageImage
cargo
ImageImage
composer
ImageImage
ruff
ImageImage
lsd
ImageImage
fd
ImageImage

See also: bat, hyperfine, oxipng, zizmor

gh
ImageImage
rich-cli
ImageImage
typer
ImageImage

These fall into four groups:

  • uv/cargo: green + cyan
  • composer: yellow + green
  • ruff/lsd/fd/gh: only bold
  • typer/rich-cli: green + cyan + yellow

Prototypes

I've made prototypes of two of these (uv/cargo style, typer/rich-cli style), and another with blue + magenta similar to the 3.13 REPL/traceback.

Prototypes
main
ImageImage
uv/cargo style
ImageImage
typer/rich-cli style
ImageImage
REPL style
ImageImage

I think I prefer the typer/rich-cli style: the extra colour makes it easier to pick out the (green) short options from the (cyan) long options, and from their (green) arguments. And it should also be somewhat familiar to Python users who have used typer-based CLIs.

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancement

    Projects

    Status

    Doc issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions