projects
/
python_utils.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c898611
)
Fix bug with timeouts.
author
Scott Gasch
<
[email protected]
>
Fri, 15 Apr 2022 16:46:38 +0000
(09:46 -0700)
committer
Scott Gasch
<
[email protected]
>
Fri, 15 Apr 2022 16:46:38 +0000
(09:46 -0700)
input_utils.py
patch
|
blob
|
history
diff --git
a/input_utils.py
b/input_utils.py
index 635e349009f174c9d7a69b68b38a93c4abf5f4bc..5e36db1ba853884636a2df7a5007004aa086760b 100644
(file)
--- a/
input_utils.py
+++ b/
input_utils.py
@@
-22,7
+22,7
@@
def single_keystroke_response(
prompt: str = None,
default_response: str = None,
timeout_seconds: int = None,
prompt: str = None,
default_response: str = None,
timeout_seconds: int = None,
-) ->
str:
+) ->
Optional[str]: # None if timeout w/o keystroke
"""Get a single keystroke response to a prompt."""
def _handle_timeout(signum, frame) -> None:
"""Get a single keystroke response to a prompt."""
def _handle_timeout(signum, frame) -> None:
@@
-49,6
+49,7
@@
def single_keystroke_response(
if timeout_seconds is not None:
signal.alarm(0)
if timeout_seconds is not None:
signal.alarm(0)
+ response = None
if prompt is not None:
print(prompt, end="")
sys.stdout.flush()
if prompt is not None:
print(prompt, end="")
sys.stdout.flush()
@@
-60,20
+61,27
@@
def single_keystroke_response(
except exceptions.TimeoutError:
if default_response is not None:
response = default_response
except exceptions.TimeoutError:
if default_response is not None:
response = default_response
- if prompt
is not Non
e:
+ if prompt
and respons
e:
print(response)
return response
print(response)
return response
-def yn_response(prompt: str = None, *, timeout_seconds=None) ->
str
:
+def yn_response(prompt: str = None, *, timeout_seconds=None) ->
Optional[str]
:
"""Get a Y/N response to a prompt."""
"""Get a Y/N response to a prompt."""
-
return
single_keystroke_response(
+
yn =
single_keystroke_response(
["y", "n", "Y", "N"], prompt=prompt, timeout_seconds=timeout_seconds
["y", "n", "Y", "N"], prompt=prompt, timeout_seconds=timeout_seconds
- ).lower()
+ )
+ if yn:
+ yn = yn.lower()
+ return yn
+
+def press_any_key(
+ prompt: str = "Press any key to continue...", *, timeout_seconds=None
+) -> Optional[str]:
+ """Press any key to continue..."""
-def press_any_key(prompt: str = "Press any key to continue...", *, timeout_seconds=None) -> str:
return single_keystroke_response(None, prompt=prompt, timeout_seconds=timeout_seconds)
return single_keystroke_response(None, prompt=prompt, timeout_seconds=timeout_seconds)