library of input functions. and an input API
Project description
inputkit
library of input functions. and an input API
tested in windows 10('10.0.19041') and python 3(Python 3.9.2)
installation
Run the following to install:
pip install inputkit
or
python -m pip install inputkit
if that didn't work, try replacing pip
with pip3
.
need help? or have bugs to report, my discord: lab
Welcome to the inputkit wiki!
github wiki
library of input functions. and an input API
that can be used easily.
that can be helpful when getting inputs from the users
pages
codes
codes to copy ;)
import everything
import inputkit.inputstools as inputstools # some functions that i made for testing&fun
import inputkit.inputs as inputs
print("inputstools attrs",dir(inputstools))
print("inputs attrs",dir(inputs))
from inputkit import *
those wait for a char/key lkinput
key,char = any_input () # wait for user input. returns ((char|key) or together)
char = char_input() # wait for user input. returns char
key = key_input () # wait for user input. returns key
hide a password
password = password_input("Enter your password: ") # hide the input with (star="*")
eval an input
type = amazing_input("enter a type: ") # returns a type "10"=>int("10")
parse an input to commandline list
cmd,laststr = commandline_input("enter a command>") # parser the command returns list,laststr "hello \"hi i am a big string\" more stuff" => (['hello', 'hi i am a big string', 'more', 'stuff'], None)
parser url
parserUrl,querys = urlparse_input("enter a url: ") # string to ParseUrl "https://google.com/kit?hi=1&yay=omg" => (ParseResult(snetloc='google.com', path='/kit', params='', query='hi=1&yay=omg', fragment=''), {'hi': ['1'], 'yay': ['omg']})
wait for a type
# going to change the default check function
def check(i,x,y,z): # x is the input value
if x.__class__.__name__== "int": # check if the type is int by name
i.stop() # i = Input(); stop(the loop)
num = input_wait_for("int","enter a number",check=check) # wait for input type int,list,dict,etc
check input
def check(cls,input):
input = input.lower()
if input=="hello":
print("hello")
elif input=="yo":
print("yo, bro")
elif input=="good":
print("me too")
else:
print("whats up?")
return "no input" # return before we stop the input
cls.stop() # stop the input loop
return "bye"
output = check_input(prompt,check=check) # check_input(prompt="",check=None,input=input); (input = input) default input function
print(output) # output: bye
limit input length
limited_string = limit_input("prompt:",length=14) # Limit an input length return when the len(input) is equal to length
child process
# porcess keyword is a function. that can be replaced
proc = subprocess_input("enter process command:") # run a child process. warpper for commandline_input
"""
another example subprocess_input(prompt="",process=None,*args,**kw):
>>> subprocess_input("enter process command:",timeout=10,stdout=-1,process=subprocess.run)
enter process command:python -c "print('Hello')"
CompletedProcess(args=['python', '-c', "print('Hello')"], returncode=0, stdout=b'Hello\r\n')
"""
os.system input
code = system_input("enter a command:") # run a commandline command returns the exit code
ignore input
ignore_input() # a just input to ignore any inputs. help ("""ignore_input will wait for enter or ^C""")
yes or no input
f_t = yn_input("Do you want to eat some vegetables?(y/n):") # warpper for check_input """ yes|no input wait for the user to input ([yes,y,true] or [no,n,false]) returns booling"""
"""
another example yn_input(prompt=""):
>>> yn_input("Do you want to eat some vegetables?(y/n):")
Do you want to eat some vegetables?(y/n):what
invalid option for (y/n). try again
Do you want to eat some vegetables?(y/n):no
False # returns False cuz i enter no
"""
Input class
Input API(tested in windows 10)
from Input import *
from inputstools import parser_keys
# how to create attr 'proxy_string'
with Input("Hello World!:",proxy_string=[],extra_events=dict()) as _input:
_input.add_event("on_newline",built_in_events_Input.on_newline)
@_input.event
def on_update(cls,start="\x0D",deleted=False):
if deleted: # going to delete char from the prompt
try:
cls.proxy_string[len(cls)] = " " # replace it with
print(start+cls.prompt+"".join(cls.proxy_string),end="")
del cls.proxy_string[len(cls)] # deleted the space after printing it
except IndexError: # handler
cls.proxy_string = list(cls) # replace cls.proxy_string with the input
print(start+cls.prompt+"".join(cls.proxy_string),end="")
@_input.event
def on_write(cls,module,prompt):
cls.dispatch("update") # create an event
@_input.event
def on_start(cls):
cls.run() # start running
@_input.event
def on_read(cls,k,c):
if c == b"\r": # pressed enter or ^M
cls.stop() # stop running
elif k == b"\x08": # on press BackSpace
cls-=1
cls.dispatch("update",deleted=True) # create an event
elif k == b'\xe0' or k == b"\x00": # type ignore
#key = parser_keys(c.decode()) # get KeyError if the key is not defind
#print(key,"has been prassed")
# Parser(UP = "H", DOWN = "P", RIGHT = "M", LEFT = "K")
pass # we're going to ignore this.
else:
cls+=c.decode() # add char to cls.input
cls.proxy_string=list(cls)
@_input.event
def on_close(cls,output):
print(cls.proxy_string)
output = _input.start()
print()
print(repr(output)) # the input
Note cls.input type of String not str. str doesn't support -=
Change Log
0.2.0 (2022/09/19)
- First Release
- supporting linux
- removing join, filter. and debugging password_input_
- fixing install_requires
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
inputkit-0.2.0.tar.gz
(22.8 kB
view hashes)
Built Distribution
inputkit-0.2.0-py3-none-any.whl
(13.4 kB
view hashes)