For CLI (Command Line Interface), tab completion is always a handy feature. Before Python 3, you can use readline package (Ref [1]) to implement tab completion. However, readline became obsolete after Python 3. Fortunately, an alternative solution can be found here. This script is part of PulseRain Technology's FP51 debugger, but it can be applied elsewhere generally.
In addition, serial port often calls for full-duplex. One way to achieve full-duplex is, of course, to use multi-thread. Another way to do this is to use non-block read for UART Rx. This can also be found in OCD_Input.py.
References:
[1] rlcompleter — Completion function for GNU readline