Use click for CLI commands
Status: accepted
Deciders: led02, sdruskat
Date: 2022-03-24
Context and Problem Statement
We have the choice between pure Python argparse implementation of CLI commands, setuptools with the command package and third-party libraries, such as click or typer.
Decision Drivers
Be able to use features such as entrypoints
Leverage advanced features such as help creation, subcommands and command classes
Small dependency footprint
Considered Options
argparse
click
typer
Decision Outcome
Chosen option: “click”, because provides advanced features without adding too many dependencies
Positive Consequences
Lots of docs available
Has advanced features
Negative Consequences
Devs need to get acquainted with the library
Pros and Cons of the Options
argparse
Pure Python argparse implementation
Good, because No further dependencies needed
Bad, because Verbose
Bad, because Boilerplate needed
click
Use the click library to implement CLI
Good, because Provides sought-after features
Good, because Colourful output
Good, because Go-to solution for Python CLIs
Bad, because Adds dependencies (itself and colorama)
typer
Wraps click to make it even simpler to write CLIs
Good, because Adds shell auto-completion
Bad, because Unclear what it adds over click apart form auto-completion
Bad, because Adds yet another dependency