CLIオプションプロンプト
エラーを表示するだけでなく、prompt=True
を使用して欠損値を要求することもできます。
import typer
from typing_extensions import Annotated
def main(name: str, lastname: Annotated[str, typer.Option(prompt=True)]):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
ヒント
可能であれば、Annotated
バージョンを使用することをお勧めします。
import typer
def main(name: str, lastname: str = typer.Option(..., prompt=True)):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
その後、プログラムはターミナルでユーザーに値を要求します。
// Call it with the NAME CLI argument
$ python main.py Camila
// It asks for the missing CLI option --lastname
# Lastname: $ Gutiérrez
Hello Camila Gutiérrez
プロンプトのカスタマイズ¶
True
の代わりに使用する文字列を渡して、カスタムプロンプトを設定することもできます。
import typer
from typing_extensions import Annotated
def main(
name: str,
lastname: Annotated[str, typer.Option(prompt="Please tell me your last name")],
):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
ヒント
可能であれば、Annotated
バージョンを使用することをお勧めします。
import typer
def main(
name: str, lastname: str = typer.Option(..., prompt="Please tell me your last name")
):
print(f"Hello {name} {lastname}")
if __name__ == "__main__":
typer.run(main)
その後、プログラムはカスタムプロンプトを使用して値を要求します。
// Call it with the NAME CLI argument
$ python main.py Camila
// It uses the custom prompt
# Please tell me your last name: $ Gutiérrez
Hello Camila Gutiérrez
確認プロンプト¶
場合によっては、何かをプロンプトで要求し、その後、ユーザーに2回入力して確認させることが必要な場合があります。
パラメータconfirmation_prompt=True
を渡して実行できます。
プロジェクトを削除するCLIアプリだとしましょう。
import typer
from typing_extensions import Annotated
def main(
project_name: Annotated[str, typer.Option(prompt=True, confirmation_prompt=True)],
):
print(f"Deleting project {project_name}")
if __name__ == "__main__":
typer.run(main)
ヒント
可能であれば、Annotated
バージョンを使用することをお勧めします。
import typer
def main(project_name: str = typer.Option(..., prompt=True, confirmation_prompt=True)):
print(f"Deleting project {project_name}")
if __name__ == "__main__":
typer.run(main)
そして、ユーザーに値と確認を求めるプロンプトが表示されます。
$ python main.py
// Your app will first prompt for the project name, and then for the confirmation
# Project name: $ Old Project
# Repeat for confirmation: $ Old Project
Deleting project Old Project
// If the user doesn't type the same, receives an error and a new prompt
$ python main.py
# Project name: $ Old Project
# Repeat for confirmation: $ New Spice
Error: The two entered values do not match
# Project name: $ Old Project
# Repeat for confirmation: $ Old Project
Deleting project Old Project
// Now it works 🎉