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
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
|
|
|
| uv/cargo style
|
|
|
| typer/rich-cli style
|
|
|
| REPL style
|
|
|
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
Feature or enhancement
In Python 3.13 we added colour output to the new REPL,
tracebackanddoctest, and in 3.14 tounittest,test.regrtestandcalendar, that can also be controlled with thePYTHON_COLORS,NO_COLORandFORCE_COLORenvironment variables:Let's add colour to
argparsehelp output.Survey
First, here's a survey of some other CLIs that use colour:
Survey
See also: bat, hyperfine, oxipng, zizmor
These fall into four groups:
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
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
argparsehelp #132323