Implement non-blocking CLI history auto saver #1156
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Describe the changes you have made:
Implement
history_autosaver
utility function to start a background thread for autosaving the CLI history usingreadline
. Ifreadline
is unavailable, it returns a no-op class object instead. This ensures the application remains functional, with or withoutreadline
.autosaver is constructed before the
terminal_interface
loop starts, and history messages are queued via the handle's.add()
method.terminal_interface.py
is now decoupled fromreadline
pyreadline might be a
readline
alternative for other OS-esExtra
cli_input()
handles both single and multi-line inputs by implementing a new argument multi_line, false by default:Reference any relevant issues (e.g. "Fixes #000"):
N/A
Pre-Submission Checklist (optional but appreciated):
I have included relevant documentation updates (stored in /docs)docs/CONTRIBUTING.md
docs/ROADMAP.md
OS Tests (optional but appreciated):
Tested on WindowsTested on Linux