Skip to main content
Latest Version Supported Python versions

koinput

Maximal simplification of Input / Output for text programs.

PyPI for releases | Github for source

What’s new?

0.3.2
  • Minor improvements and bug fixes.

  • Fixed inaccuracies in README file.

0.3.1
  • Added multiple input for int_input and float_input.

0.3.0
  • Added a new ProgressBar function. How to use see below.

  • Added input_suggestion_style for Menu and Inputs.

Installation

Requirements colorama library.

pip install koinput

How to use

Inputs

The library has two types of inputs:

  • int_input

  • float_input

They have the same settings and differ only in the type of output.

Explanation of input parameters

def int_input(input_suggestion: str = '', greater: float or int = float('-inf'), less: float or int = float('inf'),
              console_style: str = Fore.RESET, error_message: str = 'Invalid number format.\n',
              error_message_style: str = Fore.RED, multiple_numbers_in_line: bool = False,
              input_is_greater_than_less_error: str = "The number is greater than acceptable.\n",
              input_is_less_than_greater_error: str = "The number is less than acceptable.\n",
              input_is_less_error_style: str = None, input_is_greater_error_style: str = None,
              strictly_greater: bool = True, strictly_less: bool = True,
              input_suggestion_style: str = None) -> int or list:
input_suggestion=""

Input suggestion that will be displayed when the function is run.

greater=float('-inf'), less=float('inf')

The range in which the entered number should be included.

strictly_greater=True, strictly_less=True

Controlling the mathematical strictly of comparisons.

console_style=colorama.Fore.RESET

Sets the base display style for the terminal. I recommend using the colorama library for easier style customization. You can also use standard sequences (example: “x1b[39m”).

error_message='Invalid number format.\n'

Error message when converting input to number.

error_message_style=colorama.Fore.RED

Error message style.

input_is_greater_than_less_error="The number is greater than acceptable.\n"

The message issued when the number is greater than allowed.

input_is_less_than_greater_error="The number is less than acceptable.\n"

The message issued when the number is less than allowed.

input_is_less_error_style=None, input_is_greater_error_style=None

Out of range error styles.

input_suggestion_style=None

Input suggestion style.

multiple_numbers_in_line=False

If True the function will return a list of numbers entered in one line.

Usage example

def area_triangle(base, height):
    return 0.5 * base * height

print(area_triangle(float_input(input_suggestion='Enter the base of the triangle: '),
                    float_input(input_suggestion='Введите высоту треугольника: ')))
mas = [randint(0, 999) for i in range(int_input(input_suggestion="Enter the size of the array: "))]

Menu

The menu class is used to quickly create a text menu based on existing functions.

First, you need to create an instance of the class:

from koinput import Menu

menu = Menu()

The next step is to add function calls to the menu. This can be done in 2 ways: using a decorator or a function.

@menu.add_to_menu_dec('Name shown in the menu', *arguments_passed_to_the_function)
def z2(a, b, c):
    def area_circle(radius):
        return math.pi * radius ** 2
    print(area_circle(float_input(input_suggestion='Введите радиус круга: ')))

OR

def z2(a, b, c):
    def area_circle(radius):
        return math.pi * radius ** 2
    print(area_circle(float_input(input_suggestion='Введите радиус круга: ')))

menu.add_to_menu('Name shown in the menu', z2, *arguments_passed_to_the_function)

Use the show_menu command to display the menu.

def show_menu(self, title: str = None, title_style: str = None, number_of_leading_spaces_title: int = 2,
              console_style: str = Fore.RESET, order_of_items: tuple = None, number_of_leading_spaces: int = 4,
              separator: str = ' - ', items_style: str = None, input_suggestion: str = 'Select a menu item: ',
              enable_menu_item_exit: bool = True, menu_item_exit: str = 'Exit',
              exit_offer: str = 'Press Enter to exit...', input_suggestion_style: str = None):
title=None

Menu title.

title_style=None

Sets the title display style. I recommend using the colorama library for easier style customization. You can also use standard sequences (example: “x1b[39m”).

number_of_leading_spaces_title=2

Sets the number of spaces before the menu title.

console_style=Fore.RESET

Sets the base display style for the terminal. I recommend using the colorama library for easier style customization. You can also use standard sequences (example: “x1b[39m”).

number_of_leading_spaces=4

Sets the number of spaces before the menu items.

separator=' - '

Separator between number and menu item name.

items_style=None

Sets the menu item display style.

input_suggestion='Select a menu item: '

Input suggestion at the end of the menu.

input_suggestion_style=None

Input suggestion style.

enable_menu_item_exit=True

Enabling the menu item exit. If False, then after selecting one of the items the menu will close.

menu_item_exit='Exit'

The name of the menu exit item.

exit_offer='Press Enter to exit...'

Exit message.

order_of_items=None

Custom order of issuing menu items. It is either a tuple of int or a tuple of str. A tuple of int must contain the ordinal numbers of items starting from 0 (the numbers are given in the order in which they are declared). The str tuple must contain the names of the menu items in the order they appear.

Change the function of output from the menu.

This is necessary when you do not need an exit confirmation or when you exit you need to launch another menu or some function.

Example with disabling the exit confirmation:

@menu.reassign_menu_exit()
def menu_exit(exit_offer):
    def f():
        pass
    return f

Example with displaying another menu:

@menu.reassign_menu_exit()
def menu_exit(exit_offer):
    def f():
        menu2.show_menu(title='MENU', title_colour=colorama.Fore.BLUE, enable_menu_item_exit=False)
    return f

Usage example

import math
from koinput import float_input, Menu
import colorama

menu = Menu()


@menu.add_to_menu_dec('Площадь треугольника')
def z1():
    def area_triangle(base, height):
        return 0.5 * base * height
    print(area_triangle(float_input(input_suggestion='Введите основание треугольника: '),
                        float_input(input_suggestion='Введите высоту треугольника: ')))


@menu.add_to_menu_dec('Площадь круга')
    def z2():
        def area_circle(radius):
            return math.pi * radius ** 2
    print(area_circle(float_input(input_suggestion='Введите радиус круга: ')))


@menu.add_to_menu_dec('Расстояние от точки до точки')
def z3():
    def distance(x1, y1, x2, y2):
        return math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
    print(distance(float_input(input_suggestion='Введите X первой точки: '),
                   float_input(input_suggestion='Введите Y первой точки: '),
                   float_input(input_suggestion='Введите X второй точки: '),
                   float_input(input_suggestion='Введите Y второй точки: ')))


def z4():
    def capitalize_word(word):
        return word[0].upper() + word[1::]

    def capitalize_string(s):
        ss = s.split()
        for word in ss:
            s = s.replace(word, capitalize_word(word))
        return s
    print('Введите строку для изменения: ')
    print(capitalize_string(input()))


@menu.reassign_menu_exit()
def menu_exit(exit_offer):
    def f():
        pass
    return f


def main():
    menu.add_to_menu('Capitalize', z4)
    menu.show_menu(title='МЕНЮ', title_colour=colorama.Fore.BLUE)


if __name__ == '__main__':
    main()

ProgressBar

The progress bar is designed to show the progress of long-running tasks.

First, we import the ProgressBar class.

from koinput import ProgressBar

The class has properties:

ProgressBar.max_value: int or float = 100

The maximum value from which the percentage is calculated or indicated in the counter mode.

ProgressBar.counter: bool = False

Enables counter mode. It displays not percentages, but value from max_value.

ProgressBar.string: str = "[########################################] @@@%"

Indicates the view of the Progress Bar.

ProgressBar.progressbar_symbol: str = "#"

A symbol indicating the placement of a progress bar.

ProgressBar.percent_symbol: str = "@"

The symbol indicating the placement of percent (as well as the number of decimal places) or in counter mode only indicates its location.

ProgressBar.counter_separator: str = '/'

A character or string to be displayed between value and max_value in counter mode.

To display the progress bar, use the show function.

ProgressBar.show(value: int or float, text: str = None)
value

The current value of the progress bar.

text=None

Comment for the current operation.

Usage example

from koinput import ProgressBar
from time import sleep

ProgressBar.max_value = 123
for i in range(124):
    ProgressBar.show(i)
    sleep(0.07)

ProgressBar.max_value = 10
ProgressBar.counter = True
ProgressBar.string = "|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&| {*}"
ProgressBar.progressbar_symbol = "&"
ProgressBar.percent_symbol = "*"
ProgressBar.counter_separator = ' element of '
for i in range(11):
    ProgressBar.show(i, f"Element {i}")
    sleep(0.7)

Metadata

Release files for koinput 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for koinput 0.3.2
File Size Uploaded Provenance
koinput-0.3.2.tar.gz 11.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for koinput 0.3.2
File Interpreter ABI Platform
koinput-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.3 kB

Release files / koinput-0.3.2.tar.gz

Download URL koinput-0.3.2.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d7791a95894faf38dbb5128163700f3e286b830522254ac038a371d590bf88f1
BLAKE2b-256 checksum
How to use checksums
0b3e222cf4250e7afb6d37886493a3cbe5bee3263d215dc2fe70ad0cc595ec8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.8.5 Linux/5.4.0-1040-azure

Release files / koinput-0.3.2-py3-none-any.whl

Download URL koinput-0.3.2-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
850fb33f1970867629957b3f4b9a3bae0c2be2149d593793d4a7c473b2ceb26a
BLAKE2b-256 checksum
How to use checksums
beddd84687c924909edd1615a8098a6a13116e3166d6271f68b784b837c2b969
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.8.5 Linux/5.4.0-1040-azure

Security for koinput 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page