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)