fix: allow None as argument for kbi_msg#471
Conversation
|
Hi @tmbo, Thank you. |
|
@kiancross, Thanks. |
|
@kiancross, Also, I think the |
|
I was just working on the broken CI when you posted your comment. I've removed support for Python 3.9 in #472, and also fixed an issue with the docs build breaking.
Worth creating an issue for this if you think it's something to be persued. Then others e.g., @tmbo can offer thoughts. |
This commit addresses the issue of the keyboard interrupt message always printing, even in cases where it's not needed and is explicitly set to an empty string. This allows users to disable/replace said print when needed, while avoiding the redundant newline that's currenly being printed when `kbi_msg=""`. This commit also introduces the usage of `TYPE_CHECKING` to improve performance in the changed modules.
This commit adds tests to the `Form` `Prompt` and `Question` classes to ensure no message is printed when a KeyboardInterrupt is raised during an `ask()`/`ask_async()` call where `kbi_msg=None`.
|
I've rebased this onto latest |
|
Looks like the newly added tests are failing. I'll take a look in the next day or so unless you beat me to it! |
|
Yeah, I had a look at the logs but I still haven't figured out why they pass locally but fail in CI. BTW, why the formatting change in b72b39f? empty newlines aren't required between docstrings and function code, only between class docstrings and class code (according to black). |
The style test was failing; that was the change output by Black. I'm no expert, but I believe it is expected:
|
|
Ah I see, you're absolutely right about newlines before inner functions. Thanks. |
|
Hi @kiancross, I've submitted the following PR to address the issue: #483 |
This commit addresses the issue of the keyboard interrupt message always printing, even in cases where it's not needed and is explicitly set to an empty string. This allows users to disable/replace said print when needed, while avoiding the redundant newline that's currently being printed when
kbi_msg="".(The commit also introduces the usage of
TYPE_CHECKINGto improve performance in the changed modules).What is the problem that this PR addresses?
When
kbi_msg=""and aKeyboardInterruptis encountered, the program still calls the prompt's innerprint(), and needlessly prints nothing while adding a redundant newline.There is essentially no way for the user to disable the
kbi_msgand its newline print, even when it's not needed and is breaking the design of the user's program....
How did you solve it?
I've added
Nonean optional argument tokbi_msg.If the user passes any string (even an empty one), it is printed along with a newline.
If the user passes in
None, no text or newline will be printed.This is fully backwards compatible with the current behaviour of
kbi_msg, and simply allows users to pass inNoneto disable this unneeded print....
Checklist