Created
July 12, 2021 04:49
-
-
Save jigangkim/b2afb0a63149a60054dcd1b4334acd81 to your computer and use it in GitHub Desktop.
response prompt with auto-response functionality
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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