@@ -449,22 +449,28 @@ def read_password() -> str:
449449 return getpass .getpass (prompt = "" )
450450
451451
452- def ask_string (question : str , default : Optional [str ] = None ) -> Optional [str ]:
452+ def get_ask_tokens (tokens : Sequence [Token ]) -> List [Token ]:
453+ return [green , "::" , reset ] + list (tokens ) + [reset ] # type: ignore
454+
455+
456+ def ask_string (* question : Token , default : Optional [str ] = None ) -> Optional [str ]:
453457 """Ask the user to enter a string.
454458 """
459+ tokens = get_ask_tokens (question )
455460 if default :
456- question += " (%s)" % default
457- info (green , "::" , reset , question )
461+ tokens . append ( " (%s)" % default )
462+ info (* tokens )
458463 answer = read_input ()
459464 if not answer :
460465 return default
461466 return answer
462467
463468
464- def ask_password (question : str ) -> str :
469+ def ask_password (* question : Token ) -> str :
465470 """Ask the user to enter a password.
466471 """
467- info (green , "::" , reset , question )
472+ tokens = get_ask_tokens (question )
473+ info (* tokens )
468474 answer = read_password ()
469475 return answer
470476
@@ -473,7 +479,7 @@ def ask_password(question: str) -> str:
473479
474480
475481def ask_choice (
476- input_text : str , choices : List [Any ], * , func_desc : Optional [FuncDesc ] = None
482+ * prompt : Token , choices : List [Any ], func_desc : Optional [FuncDesc ] = None
477483) -> Any :
478484 """Ask the user to choose from a list of choices.
479485
@@ -492,7 +498,8 @@ def ask_choice(
492498 """
493499 if func_desc is None :
494500 func_desc = lambda x : str (x )
495- info (green , "::" , reset , input_text )
501+ tokens = get_ask_tokens (prompt )
502+ info (* tokens )
496503 choices .sort (key = func_desc )
497504 for i , choice in enumerate (choices , start = 1 ):
498505 choice_desc = func_desc (choice )
@@ -517,13 +524,15 @@ def ask_choice(
517524 return res
518525
519526
520- def ask_yes_no (question : str , default : bool = False ) -> bool :
527+ def ask_yes_no (* question : Token , default : bool = False ) -> bool :
521528 """Ask the user to answer by yes or no"""
522529 while True :
530+ tokens = [green , "::" , reset ] + list (question ) + [reset ]
523531 if default :
524- info ( green , "::" , reset , question , "(Y/n)" )
532+ tokens . append ( "(Y/n)" )
525533 else :
526- info (green , "::" , reset , question , "(y/N)" )
534+ tokens .append ("(y/N)" )
535+ info (* tokens ) # type: ignore
527536 answer = read_input ()
528537 if answer .lower () in ["y" , "yes" ]:
529538 return True
@@ -639,7 +648,7 @@ def new_message(*args: Any, **kwargs: Any) -> None:
639648 # stop monkey patching
640649 message = old_message
641650 fruits = ["apple" , "orange" , "banana" ]
642- answer = ask_choice ("Choose a fruit" , fruits )
651+ answer = ask_choice ("Choose a fruit" , choices = fruits )
643652 info ("You chose:" , answer )
644653
645654
0 commit comments