Booleans and Flags#

Booleans can either be expected to be explicitly passed in, or, if given a default value, automatically converted to flags.

To turn off conversion, see tyro.conf.FlagConversionOff.

 1import dataclasses
 2
 3import tyro
 4
 5
 6@dataclasses.dataclass
 7class Args:
 8    # Boolean. This expects an explicit "True" or "False".
 9    boolean: bool
10
11    # Optional boolean. Same as above, but can be omitted.
12    optional_boolean: bool | None = None
13
14    # Pass --flag-a in to set this value to True.
15    flag_a: bool = False
16
17    # Pass --no-flag-b in to set this value to False.
18    flag_b: bool = True
19
20
21if __name__ == "__main__":
22    args = tyro.cli(Args)
23    print(args)

python 01_basics/05_flags.py --help
usage: 05_flags.py [-h] [OPTIONS]

╭─ options ────────────────────────────────────────────────────────────────╮
│ -h, --help                                                               │
│     show this help message and exit                                      │
│ --boolean {True,False}                                                   │
│     Boolean. This expects an explicit "True" or "False". (required)      │
│ --optional-boolean {None,True,False}                                     │
│     Optional boolean. Same as above, but can be omitted. (default: None) │
│ --flag-a, --no-flag-a                                                    │
│     Pass --flag-a in to set this value to True. (default: False)         │
│ --flag-b, --no-flag-b                                                    │
│     Pass --no-flag-b in to set this value to False. (default: True)      │
╰──────────────────────────────────────────────────────────────────────────╯

python 01_basics/05_flags.py --boolean True
Args(boolean=True, optional_boolean=None, flag_a=False, flag_b=True)

python 01_basics/05_flags.py --boolean False --flag-a
Args(boolean=False, optional_boolean=None, flag_a=True, flag_b=True)

python 01_basics/05_flags.py --boolean False --no-flag-b
Args(boolean=False, optional_boolean=None, flag_a=False, flag_b=False)