Inquirer based on Textual for creating interactive command-line user input prompts
Fast API lookup for inquirer-textual. All signatures, parameters, and return types.
def text(
message: str,
shortcuts: list[Shortcut] | None = None,
validators: Validator | Iterable[Validator] | None = None
) -> Result[str]def secret(
message: str,
shortcuts: list[Shortcut] | None = None
) -> Result[str]def number(
message: str,
shortcuts: list[Shortcut] | None = None
) -> Result[str]int(result.value) to convertdef confirm(
message: str,
shortcuts: list[Shortcut] | None = None,
default: bool = False,
mandatory: bool = True
) -> Result[bool]default: True shows (Y/n), False shows (y/N)mandatory: If False, allows Ctrl+C exit (returns command='ctrl+c', value=None)def select(
message: str,
choices: list[str | Choice],
shortcuts: list[Shortcut] | None = None,
default: str | Choice | None = None,
mandatory: bool = True
) -> Result[str | Choice]default: Initial highlighted itemmandatory: If False, allows Ctrl+C exitdef checkbox(
message: str,
choices: list[str | Choice],
shortcuts: list[Shortcut] | None = None,
enabled: list[str | Choice] | None = None
) -> Result[list[str | Choice]]enabled: Pre-checked items (NOT FUNCTIONAL in v0.2.0 - bug)enabled parameterdef multi(
widgets: list[InquirerWidget],
shortcuts: list[Shortcut] | None = None
) -> Result[list[Any]]class Result(Generic[T]):
command: str | None # 'select', 'quit', or custom command
value: T # Typed value from prompt'select': User pressed Enter to confirm'quit': User pressed Ctrl+D'ctrl+c': User pressed Ctrl+C (when allowed)class Choice:
name: str # Display name
data: Any = None # Attached data (any Python object)
command: str = 'select' # Command when selectedclass Shortcut:
key: str # Key or key combination
command: str # Command name to execute
description: str | None = None # Description (auto-defaults to command if None)
show: bool = True # Show in footerclass InquirerText(InquirerWidget):
def __init__(
self,
message: str,
default: str = '',
validators: Validator | Iterable[Validator] | None = None
)
def focus(scroll_visible: bool = True) -> Self
def current_value() -> strclass InquirerSecret(InquirerWidget):
def __init__(self, message: str)
def focus(scroll_visible: bool = True) -> Self
def current_value() -> strclass InquirerNumber(InquirerWidget):
def __init__(self, message: str)
def focus(scroll_visible: bool = True) -> Self
def current_value() -> str # String validated as integerint(value) to convertclass InquirerConfirm(InquirerWidget):
def __init__(
self,
message: str,
confirm_character: str = 'y',
reject_character: str = 'n',
default: bool = False,
mandatory: bool = True
)
def current_value() -> boolclass InquirerSelect(InquirerWidget):
def __init__(
self,
message: str,
choices: list[str | Choice],
default: str | Choice | None = None,
mandatory: bool = True
)
def focus(scroll_visible: bool = True) -> Self
def current_value() -> str | Choice | Noneclass InquirerCheckbox(InquirerWidget):
def __init__(
self,
message: str,
choices: list[str | Choice],
enabled: list[str | Choice] | None = None # NOT FUNCTIONAL in v0.2.0
)
def focus(scroll_visible: bool = True) -> Self
def current_value() -> list[str | Choice]
def action_toggle_selected() # Bound to spacebarenabled parameter does not workclass InquirerMulti(InquirerWidget):
def __init__(self, widgets: list[InquirerWidget])class InquirerWidget(Widget):
def __init__(self, mandatory: bool = True)
def current_value() -> Any # Abstract, implemented by subclasses
class Submit(Message):
value: Any
command: str | None = "select"class InquirerApp(App[Result[T]], Generic[T]):
# Instance attributes
widget: InquirerWidget | None
shortcuts: list[Shortcut] | None
header: str | list[str] | None
show_footer: bool
result: Result[T] | None
inquiry_func: Callable[[InquirerApp[T]], None] | Nonedef run(
*,
headless: bool = False,
inline: bool = False,
inline_no_clear: bool = False,
mouse: bool = True,
size: tuple[int, int] | None = None,
auto_pilot: AutopilotCallbackType | None = None,
loop: AbstractEventLoop | None = None,
inquiry_func: Callable[[InquirerApp[T]], None] | None = None
) -> Result[T]def prompt(
widget: InquirerWidget,
shortcuts: list[Shortcut] | None = None
) -> Result[T]def stop(value: Any = None)def focus_widget()def get_theme_variable_defaults() -> dict[str, str]from textual.validation import Validator, ValidationResult, Function
class Validator:
def validate(self, value: str) -> ValidationResult
def success(self) -> ValidationResult
def failure(self, message: str = "") -> ValidationResultFunction(lambda s: bool, "error message")class CustomValidator(Validator):
def validate(self, value: str) -> ValidationResult:
if valid_condition:
return self.success()
return self.failure("Error message")result = prompts.text("Input:")
if result.command == 'select':
# Safe to use result.value
process(result.value)from inquirer_textual.common.Choice import Choice
choices = [Choice("A", data={"id": 1}), Choice("B", data={"id": 2})]
result = prompts.select("Pick:", choices)
if result.command == 'select':
data = result.value.data # Access attached dataresult = prompts.multi([
InquirerText("Name:"),
InquirerText("Email:")
])
if result.command == 'select':
name, email = result.valuedef flow(app):
r1 = app.prompt(InquirerText("First:"))
if r1.command != 'select':
return
r2 = app.prompt(InquirerText("Second:"))
app.stop((r1.value, r2.value))
app = InquirerApp()
result = app.run(inline=True, inquiry_func=flow)from inquirer_textual import prompts
from inquirer_textual.common.Choice import Choice
# Text result
text_result: Result[str] = prompts.text("Name:")
name: str = text_result.value
# Number result
num_result: Result[str] = prompts.number("Age:")
age: int = int(num_result.value) # Convert to int
# Confirm result
bool_result: Result[bool] = prompts.confirm("OK?")
confirmed: bool = bool_result.value
# Select result
select_result: Result[str | Choice] = prompts.select("Pick:", ["A", "B"])
choice: str | Choice = select_result.value
# Checkbox result
checkbox_result: Result[list[str | Choice]] = prompts.checkbox("Select:", ["X", "Y"])
selected: list[str | Choice] = checkbox_result.value
# Multi result
multi_result: Result[list[Any]] = prompts.multi([...])
values: list[Any] = multi_result.valueInstall with Tessl CLI
npx tessl i tessl/pypi-inquirer-textual