Skip to content

Instantly share code, notes, and snippets.

@jigangkim
Created July 12, 2021 04:49
Show Gist options
  • Save jigangkim/b2afb0a63149a60054dcd1b4334acd81 to your computer and use it in GitHub Desktop.
Save jigangkim/b2afb0a63149a60054dcd1b4334acd81 to your computer and use it in GitHub Desktop.
response prompt with auto-response functionality
from inputimeout import inputimeout, TimeoutOccurred
import time
import sys
def prompt_yes_or_no(query, timed=False, timeout=30, default_response=None):
while True:
if timed: # inputimeout does NOT work when called from a subprocess!
assert default_response is not None
try:
response = inputimeout(prompt=query + ' (timeout in %ds) [Y/n] '%(timeout), timeout=timeout).lower()
except TimeoutOccurred:
response = default_response
else:
if default_response is None:
response = input(query + ' [Y/n] ').lower()
else:
response = default_response
if response in {'y', 'yes'}:
return True
elif response in {'n', 'no'}:
return False
else:
print('Invalid response!\n')
query = 'Enter query...'
auto_reset = False
timeout = 0
for _ in range(1000):
default_response = 'y' if auto_reset else 'n'
auto_reset_toggle = prompt_yes_or_no('auto reset toggle?', timed=True, timeout=0, default_response=default_response)
auto_reset_toggle = False if auto_reset_toggle is None else auto_reset_toggle
if auto_reset != auto_reset_toggle:
auto_reset = auto_reset_toggle
print('auto reset is %s'%(auto_reset))
if not auto_reset:
if prompt_yes_or_no('manual reset?') is False:
print('reset halted by user. exiting program!')
sys.exit()
time.sleep(5.0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment