# tyro |coverage| |nbsp| |downloads| |nbsp| |versions| :func:`tyro.cli()` is a tool for generating CLI interfaces from type-annotated Python. We can define configurable scripts using functions:
# Write standard Python
from typing import Literal
def main(
name: str,
greet: Literal["Hello", "Hi"] = "Hi",
) -> None:
"""Print a greeting."""
print(f"{greet}, {name}!")
# Call tyro.cli()
if __name__ == "__main__":
import tyro
tyro.cli(main)
# tyro CLI $ python script.py --help usage: script.py [-h] [OPTIONS] Print a greeting. ╭─ options ──────────────────────────────╮ │ -h, --help show help message │ │ --name STR (required) │ │ --greet {Hello,Hi} (default: Hi) │ ╰────────────────────────────────────────╯ $ python script.py --name World Hi, World!
# Write standard Python
from dataclasses import dataclass
from typing import Literal
@dataclass
class Args:
"""Configure a greeting."""
name: str
greet: Literal["Hello", "Hi"] = "Hi"
# Call tyro.cli()
if __name__ == "__main__":
import tyro
args = tyro.cli(Args)
print(f"{args.greet}, {args.name}!")
# tyro CLI $ python script.py --help usage: script.py [-h] [OPTIONS] Configure a greeting. ╭─ options ──────────────────────────────╮ │ -h, --help show help message │ │ --name STR (required) │ │ --greet {Hello,Hi} (default: Hi) │ ╰────────────────────────────────────────╯ $ python script.py --name World Hi, World!