Skip to main content

A user I/O handler

Project description

nuio is an attempt to add a standardized and easy-to-use user input/output interface for python.

The goal is to provide a set of classes with print-alike-operating methods and a few other methods for markup & co to deal with user input/output.

Features

Currently nuio is able to eal with POSIX Terminals. The corresponding classes are in nuio.input.terminal and nio.output.terminal.

Philosopy

nuio tries to keep stuff as simple as possible, but it requires python3.5.1+ language features.

Any blocking user-input is done using async features, this will become handy in future.

Plans

The following features should be added:

  • curses based I/O

  • an AJAX based I/O system

  • non-POSIX terminals

  • fancy frames for BlockOutput

Example

This is a simple example for nuio:

#!/usr/bin/python3

from nuio.input.terminal import POSIXTerminalInput
from nuio.output.terminal import TerminalOutput, ESCAPES, TerminalBlockOutput
import asyncio, shutil


async def main():
        width, height = shutil.get_terminal_size()

        # an output device
        out = TerminalBlockOutput(height - 10, width)
        out.print("This is a test")

        # input devices require an output device to handle prompts.
        inp = POSIXTerminalInput(out)

        data = await inp.input_int(prompt = "enter an integer > ")

        # You are able to use a bunch of ANSI escape sequences.
        # Usually you should use nuio.output.terminal.colors instead,
        # this will be compatible with other output devices.

        out.print_colored(ESCAPES["underline"], "you entered:", data)

        data = await inp.input_int(prompt = "enter an integer [4-100] > ",
                        range = range(4, 100))
        out.print_colored(ESCAPES["fg_red"], "you entered:", data)

        data = await inp.input_float(prompt = "enter an float [4-100] > ",
                        range = range(4, 100))
        out.print_colored(ESCAPES["bg_cyan"] + ESCAPES["fg_black"], "you entered:", data)



# Usually you should make the input async,
# but to simplify this the complete main function is async.
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nuio-0.0.4.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

nuio-0.0.4-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file nuio-0.0.4.tar.gz.

File metadata

  • Download URL: nuio-0.0.4.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for nuio-0.0.4.tar.gz
Algorithm Hash digest
SHA256 7a36590cba768925be97113849a1524ba6b7ed39787f2fd0689d0e0a30aca2ac
MD5 bd56b0e01c174704b4fd669692fcc6c6
BLAKE2b-256 d9272baa3afd37fddc91388606686d6e75a291d83be34727c564b88e42c752a7

See more details on using hashes here.

File details

Details for the file nuio-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for nuio-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3bc1de853ac737e8e8d24bfc1379d5d45df094e97ccf7d7cfa51bcabcd0cd68d
MD5 fb09a18fd81dbbe17e2dd96e9c719c36
BLAKE2b-256 6b180f454c859bbacbcabcd5391dab0afa6102adb172b6d9d5e06514f75e3289

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page