Toolkit for writing Command-Line Interface applications and a Text User Interface framework for Python.
Project description
Forever Scalable
Quo is a toolkit for writing Command-Line Interface(CLI) applications and a TUI (Text User Interface) framework for Python.
Quo is making headway towards composing speedy and orderly CLI and TUI applications while forestalling any disappointments brought about by the failure to execute a python application. Simple to code, easy to learn, and does not come with needless baggage.
Compatibility
Quo works flawlessly with Linux, OSX, and Windows.
Quo requires Python 3.8
or later.
Features
- Support for Ansi, RGB and Hex color models
- Support for tabular presentation of data
- Intuitive progressbars
- Code completions
- Nesting of commands
- Customizable Text User Interface (TUI) dialogs.
- Automatic help page generation
- Syntax highlighting
- Autosuggestions
- Key Binders
Getting Started
Installation
You can install quo via the Python Package Index (PyPI)
pip install -U quo
In order to check your installation you can use
python -m pip show quo
Run the following to test Quo output on your terminal:
python -m quo
Quo echo
To output formatted text to your terminal you can import the echo method. Try this:
Example 1
from quo import echo
echo("Hello, World!", fg="red", italic=True, bold=True)
Example 2
from quo import echo
echo("Quo is ", nl=False)
echo("scalable", bg="red", fg="black")
Alternatively, you can import print
from quo import print
print('<b>This is bold</b>')
print('<i>This is italic</i>')
print('<u>This is underlined</u>')
# Colors from the ANSI palette.
print('<red>This is red</red>')
print('<style fg="green" bg="red">Green on red background</stlye>')
Quo prompt
- Using
quo.prompt
method.
from quo import prompt
prompt("What is your name?")
- Using
quo.prompt.Prompt
object
from quo.prompt import Prompt
session = Prompt()
session.prompt("Type something:")
Read more on Prompt
Quo Library
Quo contains a number of builtin features you can use to create elegant output in your CLI.
Click the following headings for details:»
Console
For more control over quo terminal content, import and construct a `Console` object.
from quo.console import Console
console = Console()
Launching Applications
Quo supports launching applications through Console.launch
. This can be used to open the default application associated with a URL or filetype.
from quo.console import Console
console = Console()
console.launch("https://quo.rtfd.io/")
Read more on Console
Completion
Autocompletion
Press [Tab] to autocomplete
from quo.prompt import Prompt
from quo.completion import WordCompleter
example = WordCompleter(['USA', 'UK', 'Canada', 'Kenya'])
session = Prompt(completer=example)
session.prompt('Which country are you from?: ')
Autosuggestion
Auto suggestion is a way to propose some input completions to the user. Usually, the input is compared to the history and when there is another entry starting with the given text, the completion will be shown as gray text behind the current input. Pressing the right arrow → or ctrl-e will insert this suggestion, alt-f willinsert the first word of the suggestion.
from quo.history import MemoryHistory
from quo.prompt import Prompt
MemoryHistory.append("import os")
MemoryHistory.append('print("hello")')
MemoryHistory.append('print("world")')
MemoryHistory.append("import path")
session = Prompt(history=MemoryHistory, suggest="history")
while True:
session.prompt('> ')
Read more on Completions
Documenting Scripts
Quo automatically generates help pages for your command-line tools. from quo import print
from quo.console import command
from quo.console import app
@command()
@app('--count', default=1, help='number of greetings')
@app('--name', prompt="What is your name?", help="The person to greet")
def hello(count: int, name: str):
"""This script prints hello NAME COUNT times."""
for x in range(count):
print(f"Hello {name}!")
if __name__ == "__main__:
hello()
And what it looks like:
Progress
Creating a new progress bar can be done by calling the class **ProgressBar** The progress can be displayed for any iterable. This works by wrapping the iterable (like ``range``) with the class **ProgressBar** import time
from quo.progress import ProgressBar
with ProgressBar() as pb:
for i in pb(range(800)):
time.sleep(.01)
Read more on Progress
Key Binding
A key binding is an association between a physical key on a keyboard and a parameter.
from quo import echo
from quo.keys import bind
from quo.prompt import Prompt
session = Prompt()
# Print "Hello world" when ctrl-h is pressed
@bind.add("ctrl-h")
def _(event):
echo("Hello, World!")
session.prompt(">> ")
Read more on Key bindings
Dialog
High level API for displaying dialog boxes to the user for informational purposes, or get input fromthe user.- Example of a message box dialog.
from quo.dialog import MessageBox
MessageBox(
title="Message pop up window",
text="Do you want to continue?\nPress ENTER to quit.")
The above produces the following output
- Example of a prompt box dialog
from quo.dialog import InputBox
InputBox(
title="InputBox shenanigans",
text="What Country are you from?:")
Read more on Dialogs
Table
Function Table offers a number of configuration options to set the look and feel of the table, including how borders are rendered and the style and alignment of the columns.
Example
from quo.table import Table
data = [
["Name", "Gender", "Age"],
["Alice", "F", 24],
["Bob", "M", 19],
["Dave", "M", 24]
]
Table(data)
Widgets
A collection of reusable components for building full screen applications.Label
Widget that displays the given text. It is not editable or focusable.
from quo import container
from quo.widget import Label
content = Label("Hello, World", style="fg:black bg:red")
# Press Ctrl-C to exit
container(content, bind=True, full_screen=True)
Read more on Widgets
For more intricate examples, have a look in the examples directory and the documentation.
Donate🎁
In order to for us to maintain this project and grow our community of contributors. Donate
Quo is...
Simple If you know Python you can easily use quo and it can integrate with just about anything.
Getting Help
Community
For discussions about the usage, development, and the future of quo, please join our Google community
Resources
Bug tracker
If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at Bug tracker or send an email to:
Blogs💻
→ How to build CLIs using quo
License📑
This software is licensed under the MIT License
. See the License file in the top distribution directory for the full license text.
Code of Conduct
Code of Conduct is adapted from the Contributor Covenant, version 1.2.0 available at Code of Conduct
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.