Metadata-Version: 2.1
Name: cutie
Version: 0.0.4
Summary: Commandline User Tools for Input Easification
Home-page: https://github.com/kamik423/cutie
Author: Hans
Author-email: contact.kamik423@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: colorama
Requires-Dist: readchar

# CUTIE

*Commandline User Tools for Input Easification*

A tool for handling common user input functions in an elegant way so you don't have to write them yourself once a week.

![example](https://github.com/Kamik423/cutie/blob/master/example.gif?raw=true)

[![PRs Welcome](https://img.shields.io/badge/Homepage-GitHub-green.svg)](https://github.com/kamik423/cutie)
[![PyPI version](https://badge.fury.io/py/cutie.svg)](https://badge.fury.io/py/cutie)
[![PyPI license](https://img.shields.io/pypi/l/cutie.svg)](https://pypi.python.org/pypi/cutie/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/cutie.svg)](https://pypi.python.org/pypi/cutie/)
[![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/)

## Usage

These are the main functions of cutie:

```python
import cutie

if cutie.prompt_yes_or_no('Are you brave enough to continue?'):
    names = [
        'Arthur, King of the Britons',
        'Sir Lancelot the Brave',
        'Sir Robin the Not-Quite-So-Brave-as-Sir-Lancelot',
        'Sir Bedevere the Wise',
        'Sir Galahad the Pure',
        'Møøse']
    name = names[cutie.select(names, selected_index=5)]
    print(f'Welcome, {name}')
    age = cutie.get_number(
        'What is your age?',
        min_value=0,
        allow_float=False)
    quest = cutie.secure_input('What is your quest?')
    print(f'{name}\'s quest (who is {age}) is {quest}.')
```

```
Are you brave enough to continue? (Y/N) Yes
[ ] Arthur, King of the Britons
[ ] Sir Lancelot the Brave
[x] Sir Robin the Not-Quite-So-Brave-as-Sir-Lancelot
[ ] Sir Bedevere the Wise
[ ] Sir Galahad the Pure
[ ] Møøse
Welcome, Sir Robin the Not-Quite-So-Brave-as-Sir-Lancelot
What is your age? 31
What is your quest?
Sir Robin the Not-Quite-So-Brave-as-Sir-Lancelot's quest (who is 31) is to seek the holy grail.
```

## Installation

```bash
pip3 install cutie
```

## Documentation

### get\_number

Get a number from user input.
If an invalid number is entered the user will be prompted again.

#### Arguments

| argument    | type            | default    | description                          |
|:------------|:----------------|:-----------|:-------------------------------------|
| prompt      | str             |            | The prompt asking the user to input. |
| min_value   | float, optional | - infinity | The [inclusive] minimum value.       |
| max_value   | float, optional | infinity   | The [inclusive] maximum value.       |
| allow_float | bool, optional  | True       | Allow floats or force integers.      |

#### Returns

The number input by the user.

### secure\_input

Get secure input without showing it in the command line.

#### Arguments

| argument | type | description                          |
|:---------|:-----|:-------------------------------------|
| prompt   | str  | The prompt asking the user to input. |

#### Returns

The secure input.

### select

Select an option from a list.

#### Arguments

| argument          | type          | default | description                        |
|:------------------|:--------------|:--------|:-----------------------------------|
| options           | List[str]     |         | The options to select from.        |
| deselected_prefix | str, optional | `[ ]`   | Prefix for deselected option.      |
| selected_prefix   | str, optional | `[x]`   | Prefix for selected option.        |
| selected_index    | int, optional | 0       | The index to be selected at first. |

#### Returns

The index that has been selected.

### prompt\_yes\_or\_no

Prompt the user to input yes or no.

#### Arguments

| argument             | type                     | default | description                          |
|:---------------------|:-------------------------|:--------|:-------------------------------------|
| question             | str                      |         | The prompt asking the user to input. |
| yes_text             | str, optional            | `Yes`   | The text corresponding to 'yes'.     |
| no_text              | str, optional            | `No`    | The text corresponding to 'no'.      |
| has_to_match_case    | bool, optional           | `False` | Does the case have to match.         |
| enter_empty_confirms | bool, optional           | True    | Does enter on empty string work.     |
| default_is_yes       | bool, optional           | False   | Is yes selected by default           |
| deselected_prefix    | str, optional            | `  `    | Prefix if something is deselected.   |
| selected_prefix      | str, optional            | `> `    | Prefix if something is selected      |
| abort_value          | Optional[bool], optional | `None`  | The value on interrupt.              |
| char_prompt          | bool, optional           | `True`  | Add a [Y/N] to the prompt.           |

#### Returns

The bool what has been selected.

## Support

This does not support Windows, only Unix systems due to Windows not supporting the ANSII escape sequences all of this is based on.

## Contributing

If you want to contribute, please feel free to suggest features or implement them yourself.

Also **please report any issues and bugs you might find!**

## Authors

* Currently this entire project is just by me.

## License

The project is licensed under the [MIT-License](https://github.com/Kamik423/cutie/blob/master/license.md).

## Acknowledgments

* This project uses the module [Readchar](https://pypi.org/project/readchar/) for direct input handling.

---

*GNU Terry Pratchett*


