Collection of common interactive command line user interfaces, based on Inquirer.js.
Goal and Philosophy
Born as a Inquirer.js clone, it shares part of the goals and philosophy.
So, Inquirer should ease the process of asking end user questions, parsing, validating answers, managing hierarchical prompts and providing error feedback.
Python-inquirer supports mainly UNIX-based platforms (eq. Mac OS, Linux, etc.). Windows has experimental support, please let us know if there are any problems!
Documentation has been moved to magmax.org/python-inquirer.
But here you have a couple of usage examples:
import inquirer questions = [ inquirer.Text('name', message="What's your name"), inquirer.Text('surname', message="What's your surname"), inquirer.Text('phone', message="What's your phone number", validate=lambda _, x: re.match('\+?\d[\d ]+\d', x), ) ] answers = inquirer.prompt(questions)
Like a Text question, but used for larger answers. It opens external text editor which is used to collect the answer.
The environment variables $VISUAL and $EDITOR, can be used to specify which editor should be used. If not present inquirer fallbacks to vim -> emacs -> nano in this order based on availability in the system.
External editor handling is done using great library python-editor.
import inquirer questions = [ inquirer.Editor('long_text', message="Provide long text") ] answers = inquirer.prompt(questions)
Shows a list of choices, and allows the selection of one of them.
import inquirer questions = [ inquirer.List('size', message="What size do you need?", choices=['Jumbo', 'Large', 'Standard', 'Medium', 'Small', 'Micro'], ), ] answers = inquirer.prompt(questions)
List questions can take one extra argument
carousel=False. If set to true, the answers will rotate (back to first when pressing down on last choice, and down to last choice when pressing up on first choice)
Shows a list of choices, with multiple selection.
import inquirer questions = [ inquirer.Checkbox('interests', message="What are you interested in?", choices=['Computers', 'Books', 'Science', 'Nature', 'Fantasy', 'History'], ), ] answers = inquirer.prompt(questions)
Like Text question, but with builtin validations for working with paths.
import inquirer questions = [ inquirer.Path('log_file', message="Where logs should be located?", path_type=inquirer.Path.DIRECTORY, ), ] answers = inquirer.prompt(questions)
Licensed under the MIT license.