Handful of utilities to do printing tricks to the terminal.
Project description
printbuddies
A few utilities to do terminal printing tricks.
Install with:
pip install printbuddies
Contains two classes and three functions: ProgBar, Spinner, print_in_place, ticker, and clear.
ProgBar
ProgBar is a self-incrementing, dynamically sized progress bar.
The progress counter and completion values can be manually overriden if desired.
The width of the progress bar is set according to a ratio of the terminal width
so it will be resized automatically if the terminal width is changed.
from printbuddies import ProgBar total = 100 bar = ProgBar(total=total) for _ in range(total): bar.display() bar.reset() my_list = [bar.display(return_object=i) for i in range(total)]
The display function has a 'return_object' parameter, allowing ProgBar to be used in comprehensions.
bar = ProgBar(10) def square(x: int | float)->int|float: return x * x myList = [bar.display(return_object=square(i)) for i in range(10)] {progress bar gets displayed} print(myList) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
ProgBar also supports being used with a context manager.
PoolBar
A convenience class to integrate concurrent.futures.ThreadPoolExecutor
and concurrent.futures.ProcessPoolExecutor
with ProgBar
.
Constructor takes the pool executor type, a list of functions to execute, and an optional list of args for those functions.
The execute()
method returns a list of whatever those functions return.
execute()
can also take any optional ProgBar
constructor arguments.
def my_func(page: int)->str: return requests.get(f"https://somesite.com/pages/{page}").text pool = PoolBar("thread", [my_func for _ in range(10)], [(i,) for i in range(10)]) pages = pool.execute(width_ratio=0.75)
Spinner
This class will print the next character from a sequence every time it's display
method is called, clearing whatever is currently on the line.
The characters will be cycled through indefinitely.
from printbuddies import Spinner spinner = Spinner() for _ in range(10): spinner.display()
The default character sequence can be overridden:
spinner = Spinner(sequence=["~_~_~_~_~_~_", "_~_~_~_~_~_~"]) for _ in range(10): spinner.display()
When used with a context manager, the last character printed will be cleared from the terminal upon exiting.
print_in_place
'print_in_place' erases the current line in the terminal and then writes the value of
the 'string' param to the terminal.
from printbuddies import print_in_place import time #This will print numbers 0-99 to the terminal with each digit overwriting the last. for i in range(100): print_in_place(i) time.sleep(0.1)
ticker
'ticker' prints a list of strings to the terminal with empty lines above and below
such that previous text in the terminal is no longer visible.
Visually, It functions as a multi-line version of print_in_place.
from printbuddies import ticker import time #This will produce visually the same output as the above example for i in range(100): ticker([i]) time.sleep(0.1)
clear
A call to printbuddies.clear()
simply clears the current line from the terminal.
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
Hashes for printbuddies-1.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4807102043675634d94f79de7e7b0dc95597f24cf44a5e397df079f76d2a42f |
|
MD5 | 61bf3067559638029e815bd1b40ea823 |
|
BLAKE2b-256 | c53b33a14b8300dce7ea362c357e3e4673832803686528c911ca0fc53c58ee29 |