inquirer

Attention

This document is irrelevant if you intend to use the Classic Syntax (PyInquirer).

See also

prompt

This page documents the usage of inquirer.

Servers as another entry point for InquirerPy.

See also

Alternate Syntax.

inquirer directly interact with individual prompt classes. It’s more flexible, easier to customise and also provides IDE type hintings/completions.

An example using inquirer which incorporate multiple different types of prompts:

demo

from InquirerPy import inquirer
from InquirerPy.validator import NumberValidator

age = inquirer.text(
    message="Enter your age:",
    validate=NumberValidator(),
    default="18",
    filter=lambda result: int(result),
    transformer=lambda result: "Adult" if int(result) >= 18 else "Youth",
).execute()

drinks = ["Soda", "Cidr", "Water", "Milk"] if age < 18 else ["Wine", "Beer"]

drink = inquirer.rawlist(
    message="What drinks would you like to buy:", default=2, choices=drinks
).execute()

if drink in {"Wine", "Beer"}:
    bag = inquirer.select(
        message="Would you like a bag:", choices=["Yes", "No"]
    ).execute()

confirm = inquirer.confirm(message="Confirm?", default=True).execute()

Important

The inquirer module serves as an entry point to each prompt classes. Refer to individual prompt documentation for prompt specific usage.

Synchronous execution

Each prompt contains a function execute to start the prompt.

from InquirerPy import inquirer

def main():
  result = inquirer.text(message="Name:").execute()

if __name__ == "__main__":
  main()

Asynchronous execution

Each prompt contains a function execute_async to start the prompt asynchronously.

import asyncio
from InquirerPy import inquirer

async def main():
  result = await inquirer.text(message="Name:").execute_async()

if __name__ == "__main__":
  asyncio.run(main())