From 0fd724a0c2b4000c1d4491d40041cb4ffc0c612b Mon Sep 17 00:00:00 2001 From: Florimond Manca Date: Mon, 25 Feb 2019 15:35:47 +0100 Subject: [PATCH] Improve handling of KeyboardInterrupt in prompt - Do not print keyboard interrupt message if it is empty - Add option to re-raise keyboard interrupts --- PyInquirer/prompt.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/PyInquirer/prompt.py b/PyInquirer/prompt.py index f568fb5..ae4c130 100644 --- a/PyInquirer/prompt.py +++ b/PyInquirer/prompt.py @@ -19,6 +19,7 @@ def prompt(questions, answers=None, **kwargs): refresh_interval = kwargs.pop('refresh_interval', 0) eventloop = kwargs.pop('eventloop', None) kbi_msg = kwargs.pop('keyboard_interrupt_msg', 'Cancelled by user') + raise_kbi = kwargs.pop('raise_keyboard_interrupt', False) for question in questions: # import the question @@ -86,10 +87,13 @@ def prompt(questions, answers=None, **kwargs): except AttributeError as e: print(e) raise ValueError('No question type \'%s\'' % type) - except KeyboardInterrupt: - print('') - print(kbi_msg) - print('') + except KeyboardInterrupt as exc: + if raise_kbi: + raise exc from None + if kbi_msg: + print('') + print(kbi_msg) + print('') return {} return answers