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.
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.
The optional arguments for prompt
and prompt_async
are now keyword arguments, with raise_keyboard_interrupt
(which defaults to True
) now deprecated. Rationale is to support a possible easier prompt API in the future - see DRAFT RFC PR: https://github.com/brodybits/InquirerLib/pull/3
Documentation for InquirerPy applies with these updated imports and optional arguments for prompt
and prompt_async
as now keyword arguments.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file inquirerlib-0.0.2.tar.gz
.
File metadata
- Download URL: inquirerlib-0.0.2.tar.gz
- Upload date:
- Size: 44.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c04e7a47e4fe4ee670a52bfe66295f09dc418026b27d694eda791e9183e78492 |
|
MD5 | be148324be6a21f8b237b4db9c4d39c0 |
|
BLAKE2b-256 | 53d70a61d5681038318b5f65441811c5d72430113b3b109ce1e9f7e662f9cb9d |
File details
Details for the file inquirerlib-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: inquirerlib-0.0.2-py3-none-any.whl
- Upload date:
- Size: 69.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbdb85601ecc384180a6321bf5154d4fa4b9d0366216bcad05179c292d4746bf |
|
MD5 | ecd433f97b61d87211f1405fca3289b0 |
|
BLAKE2b-256 | 54cc59dfecff66ff9dd3ff2abccee0b0102823aefcadab3178ecc23b205b265a |