34.Command-line apps with argparse & Typer
Command-line applications (CLI apps) are programs that are operated via a terminal or command prompt. They are widely used for automation, scripting, and system administration tasks. Python provides powerful libraries such as `argparse` and `Typer` to build robust CLI applications. This lesson explores these libraries, their syntax, use cases, and best practices.
argparse
`argparse` is a standard Python library used to parse command-line arguments. It allows developers to define expected arguments, handle optional and positional parameters, and generate help messages automatically.
Basic Syntax and Example:
Here’s a simple example of using `argparse` to create a CLI that accepts a name and prints a greeting:
import argparse
parser = argparse.ArgumentParser(description=”Greet the user.”)
parser.add_argument(“name”, type=str, help=”Name of the user”)
args = parser.parse_args()
print(f”Hello, {args.name}!”)
Use Cases:
– Scripts that require input parameters
– Automation tools
– Data processing pipelines
Best Practices:
– Always provide clear help messages using the `help` parameter
– Use meaningful argument names
– Validate inputs using `type` and custom validation logic
Common Pitfalls:
– Forgetting to call `parser.parse_args()`
– Not handling missing or incorrect arguments gracefully
– Overcomplicating the argument structure
Typer
`Typer` is a modern library for building CLI applications. It is built on top of `Click` and leverages Python’s type hints to generate user-friendly interfaces and documentation automatically.
Basic Syntax and Example:
Here’s a simple example using `Typer` to create a similar greeting CLI:
import typer
app = typer.Typer()
@app.command()
def greet(name: str):
print(f”Hello, {name}!”)
if __name__ == “__main__”:
app()
Use Cases:
– Building modern CLI tools with minimal boilerplate
– Applications requiring automatic help and completion
– Tools with multiple commands and subcommands
Best Practices:
– Use type hints for all parameters
– Organize commands using subcommands for clarity
– Leverage decorators for clean and readable code
Common Pitfalls:
– Not installing required dependencies (`typer`, `click`)
– Misusing type hints or decorators
– Overcomplicating command structures
Comparison of argparse and Typer
Feature | argparse | Typer |
Library Type | Standard Library | Third-party (built on Click) |
Ease of Use | Requires manual setup | Simpler with decorators and type hints |
Help Generation | Manual | Automatic |
Type Checking | Manual | Automatic via type hints |
Support for Subcommands | Yes, with more setup | Yes, with decorators |
Autocomplete Support | No | Yes |