Skip to main content

Collection of common interactive command line user interfaces, based on Inquirer.js

Project description

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)

Changelog

It is maintained in the separated file changes.rst

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|Function

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:

Instantiate from JSON

From version 2.0.2, you can instantiate from JSON strings:

import inquirer
json = """[
  {"name": "name", "kind": "text", "message"="What's your name?"},
  {"name": "surname", "kind": "text", "message"="{name}, what's your surname?"},
  {"name": "alias", "kind": "text", "message"="What's your Alias", "default"="{name}"}
]"""
questions = [inquirer.load_from_json(q) for q in json]
answers = inquirer.prompt(questions)

As you can see, it is mandatory to add the name and kind fields. The rest of fields are the same that was documented.

The JSON version has a problem: As you can imagine, it is not possible to use functions anywhere.

There is a shortcut from version 2.0.3 to load lists of questions, because it is supported from load_from_json directly:

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

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inquirer-2.1.1.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

inquirer-2.1.1-py2-none-any.whl (24.9 kB view details)

Uploaded Python 2

File details

Details for the file inquirer-2.1.1.tar.gz.

File metadata

  • Download URL: inquirer-2.1.1.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for inquirer-2.1.1.tar.gz
Algorithm Hash digest
SHA256 8ea2da5ba0d815c504f53afc4e891d15451f3f32b47bec970ae926138209945e
MD5 f76131d083f513951b8b6adf8f2d2cc0
BLAKE2b-256 93bad98f52b3c0c3c16aee6f580f5e564abe550b60bc590d08251cb526b7a368

See more details on using hashes here.

File details

Details for the file inquirer-2.1.1-py2-none-any.whl.

File metadata

File hashes

Hashes for inquirer-2.1.1-py2-none-any.whl
Algorithm Hash digest
SHA256 65b98c288950940de2c63471acdacd30131d6bc6e0ff9e0d75ef6ef4910de65a
MD5 b11e53eb2ff6440dc770df9b467ffad2
BLAKE2b-256 2769358628c7b96d22a3692fdc40a2cae16e962996d7ea1ceb3162b0498c8ecd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page