CLI Parameter Types Intro

You can use several data types for the CLI options and CLI arguments, and you can add data validation requirements too.

Data conversion

When you declare a CLI parameter with some type Typer will convert the data received in the command line to that data type.

For example:

import typer


def main(
    name: str, age: int = 20, height_meters: float = 1.89, female: bool = True,
):
    typer.echo(f"NAME is {name}, of type: {type(name)}")
    typer.echo(f"--age is {age}, of type: {type(age)}")
    typer.echo(f"--height-meters is {height_meters}, of type: {type(height_meters)}")
    typer.echo(f"--female is {female}, of type: {type(female)}")


if __name__ == "__main__":
    typer.run(main)

In this example, the value received for the CLI argument NAME will be treated as str.

The value for the CLI option --age will be converted to an int and --height-meters will be converted to a float.

And as female is a bool CLI option, Typer will convert it to a "flag" --female and the counterpart --no-female.

And here's how it looks like:

$ python main.py --help

// Notice how --age is an INTEGER and --height-meters is a FLOAT
Usage: main.py [OPTIONS] NAME

Options:
  --age INTEGER
  --height-meters FLOAT
  --female / --no-female
  --install-completion    Install completion for the current shell.
  --show-completion       Show completion for the current shell, to copy it or customize the installation.
  --help                  Show this message and exit.

// Call it with CLI parameters
$ python main.py Camila --age 15 --height-meters 1.70 --female

// All the data has the correct Python type
NAME is Camila, of type: class 'str'
--age is 15, of type: class 'int'
--height-meters is 1.7, of type: class 'float'
--female is True, of type: class 'bool'

// And if you pass an incorrect type
$ python main.py Camila --age 15.3

Usage: main.py [OPTIONS] NAME
Try "main.py --help" for help.

Error: Invalid value for "--age": 15.3 is not a valid integer

// Because 15.3 is not an INTEGER (it's a float)

Watch next

See more about specific types and validations in the next sections...

Technical Details

All the types you will see in the next sections are handled underneath by Click's Parameter Types.