mfwarren / python-inquirer

A collection of common interactive command line user interfaces, based on Inquirer.js (https://github.com/SBoudrias/Inquirer.js/)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VERSION DOWNLOADS TESTS COVERAGE
Latest PyPI version Number of PyPI downloads Travis results Coveralls results_

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.

Documentation

Installation

pip install inquirer

Usage example:

import inquirer

questions = [
  inquirer.Text    ('name',     message="What's your name"),
  inquirer.Password('password', message="Add a password"),
  inquirer.Confirm ('correct',  message="Is correct"),
]

answers = inquirer.prompt(questions)

Examples

The examples/ directory contains several examples. Feel free to run them:

python examples/text.py

Objects

The main object is Question, but it should not be instantiated. You must use any of the subclasses, listed below. All of them have the next attributes that can be set in the initialization:

Attribute Type Explanation
name String The key in the hash of answers.
message String|Func To be shown in the prompt to the user. Functions will receive the hash with previous values.
default Any|Function Default value. Functions will receive the hash with previous values.
choices List|Function List of available options. Functions will receive the hash with previous values.
validate Bool|Function If the value set is valid. Functions will receive the hash with previous values and the value set in this question, and should return a boolean.
ignore Bool|Function If the quiestion should be shown. Functions will receive the hash with previous values and should return a boolean.

Prompt types

Text

choices argument is not used.

Example:

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+', x),
                )
]
answers = inquirer.prompt(questions)

Example of Text Question

Password

choices argument is not used.

Example:

import inquirer
questions = [
  inquirer.Password('password', message="What's your password"),
]
answers = inquirer.prompt(questions)

Confirm

choices argument is not used.

Example:

import inquirer
questions = [
  inquirer.Confirm('continue', message="Should I continue"),
  inquirer.Confirm('stop', message="Should I stop", default=True),
]
answers = inquirer.prompt(questions)

Example of Confirm Question

List

Shows a list of choices, and allows the selection of one of them.

Example:

import inquirer
questions = [
  inquirer.List('size',
                message="What size do you need?",
                choices=['Jumbo', 'Large', 'Standard', 'Medium', 'Small', 'Micro'],
            ),
]
answers = inquirer.prompt(questions)

Example of List Question

Checkbox

Shows a list of choices, with multiple selection.

Example:

import inquirer
questions = [
  inquirer.Checkbox('interests',
                    message="What are you interested in?",
                    choices=['Computers', 'Books', 'Science', 'Nature', 'Fantasy', 'History'],
                    ),
]
answers = inquirer.prompt(questions)

Example of Checkbox Question

Advanced usage

Some tips:

Reusing previous answers

Every String argument but name can use any previous answer just putting it in roots:

import inquirer
questions = [
  inquirer.Text('name', message="What's your name?"),
  inquirer.Text('surname', message="{name}, what's your surname?"),
  inquirer.Text('alias', message="What's your Alias"
    default="{name}"),
]
answers = inquirer.prompt(questions)

License

Copyright (c) 2014 Miguel Ángel García (@magmax9), based on Inquirer.js, by Simon Boudrias (@vaxilart)

Licensed under the MIT license.

About

A collection of common interactive command line user interfaces, based on Inquirer.js (https://github.com/SBoudrias/Inquirer.js/)


Languages

Language:Python 100.0%