Skip to main content

An updated fork of InquirerPy - Python port of Inquirer.js (A collection of common interactive command-line user interfaces)

Project description

InquirerLib

An updated fork of InquirerPy - see API notice below

Introduction

InquirerPy is a Python port of the famous Inquirer.js (A collection of common interactive command line user interfaces). This project is a re-implementation of the PyInquirer project, with bug fixes of known issues, new prompts, backward compatible APIs as well as more customisation options.

Demo

Motivation

PyInquirer is a great Python port of Inquirer.js, however, the project is slowly reaching to an unmaintained state with various issues left behind and no intention to implement more feature requests. I was heavily relying on this library for other projects but could not proceed due to the limitations.

Some noticeable ones that bother me the most:

  • hard limit on prompt_toolkit version 1.0.3
  • various color issues
  • various cursor issues
  • No options for VI/Emacs navigation key bindings
  • Pagination option doesn't work

This project uses python3.7+ type hinting with focus on resolving above issues while providing greater customisation options.

Requirements

OS

Leveraging prompt_toolkit, InquirerPy works cross platform for all OS. Although Unix platform may have a better experience than Windows.

Python

python >= 3.7

API notice

Some functions are exported directly using from InquirerLib; other functions and all exported objects are within InquirerLib.InquirerPy namespace.

Documentation for InquirerPy applies with these updated imports.

Note that importing from InquirerLib.InquirerPy.inquirer is DEPRECATED, as documented below.

Examples in examples may be helpful.

Getting Started

Install

pip install InquirerLib

Quick Start

Classic Syntax (PyInquirer)

from InquirerLib import prompt

questions = [
    {"type": "input", "message": "What's your name:", "name": "name"},
    {"type": "confirm", "message": "Confirm?", "name": "confirm", "default": True},
]
result = prompt(questions)
name = result["name"]
confirm = result["confirm"]

NOTE: default may be used for any question type.

Alternate Syntax

Using individual constructors:

from InquirerLib.InquirerPy import prompts

name = prompts.InputPrompt(message="What's your name:").execute()
confirm = prompts.ConfirmPrompt(message="Confirm?", default=True).execute()

DEPRECATED API:

from InquirerLib.InquirerPy import inquirer

name = inquirer.text(message="What's your name:").execute()
confirm = inquirer.confirm(message="Confirm?", default=True).execute()

These are deprecated aliases that may be removed or replaced in the future.

Migrating from InquirerPy

Need to update the imports, as described above.

Migrating from PyInquirer

Most APIs from PyInquirer should be compatible with InquirerPy. If you have discovered more incompatible APIs, please create an issue or directly update README via a pull request.

EditorPrompt

InquirerPy does not support editor prompt as of now.

CheckboxPrompt

The following table contains the mapping of incompatible parameters.

PyInquirer InquirerPy
pointer_sign pointer
selected_sign enabled_symbol
unselected_sign disabled_symbol

Style

Every style keys from PyInquirer is present in InquirerPy except the ones in the following table.

PyInquirer InquirerPy
selected pointer

Although InquirerPy support all the keys from PyInquirer, the styling works slightly different. Please refer to the Style documentation for detailed information.

Similar projects

questionary

questionary is a fantastic fork which supports prompt_toolkit 3.0.0+ with performance improvement and more customisation options. It's already a well established and stable library.

Comparing with questionary, InquirerPy offers even more customisation options in styles, UI as well as key bindings. InquirerPy also provides a new and powerful fuzzy prompt.

python-inquirer

python-inquirer is another great Python port of Inquirer.js. Instead of using prompt_toolkit, it leverages the library blessed to implement the UI.

Before implementing InquirerPy, this library came up as an alternative. It's a more stable library comparing to the original PyInquirer, however it has a rather limited customisation options and an older UI which did not solve the issues I was facing described in the Motivation section.

Comparing with python-inquirer, InquirerPy offers a slightly better UI, more customisation options in key bindings and styles, providing pagination as well as more prompts.

Credit

This project is based on the great work done by the following projects & their authors.

License

This project is licensed under MIT.

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

inquirerlib-0.0.1.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

inquirerlib-0.0.1-py3-none-any.whl (69.1 kB view details)

Uploaded Python 3

File details

Details for the file inquirerlib-0.0.1.tar.gz.

File metadata

  • Download URL: inquirerlib-0.0.1.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/22.6.0

File hashes

Hashes for inquirerlib-0.0.1.tar.gz
Algorithm Hash digest
SHA256 313dbb378f04320a8951bdd0b50c05d823126872aba14a01e8491071bb6dcc0f
MD5 ddc3e7b862bc0abb7c73b283c1165cd8
BLAKE2b-256 b818644a4593e8c12079c18526f30e00a68f10d9fb1f85bdffbb38ad7e9d2c34

See more details on using hashes here.

File details

Details for the file inquirerlib-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: inquirerlib-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 69.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/22.6.0

File hashes

Hashes for inquirerlib-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07f9f611c36a6a251adb386f204fcc76a8802d485dd776fef9c245f0af051dfb
MD5 976ef12e4060699d7839924cd4880976
BLAKE2b-256 7172131b30ae299c91f19620bd9bf5477be25d5da7b4282b2624c445ce3d1620

See more details on using hashes here.

Supported by

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