def real_main(args: List[str]) -> None: msg = 'Show an error message' cli_opts, items = parse_args(args[1:], OPTIONS, '', msg, 'hints', result_class=ErrorCLIOptions) data = json.loads(sys.stdin.buffer.read()) error_message = data['msg'] if cli_opts.title: print(styled(cli_opts.title, fg_intense=True, fg='red', bold=True)) print() print(error_message, flush=True) if data.get('tb'): import select from kittens.tui.operations import init_state, set_cursor_visible fd, original_termios = open_tty() msg = '\n\r\x1b[1;32mPress e to see detailed traceback or any other key to exit\x1b[m' write_all(fd, msg) write_all( fd, init_state(alternate_screen=False, kitty_keyboard_mode=False) + set_cursor_visible(False)) with no_echo(fd): termios.tcdrain(fd) while True: rd = select.select([fd], [], [])[0] if not rd: break q = os.read(fd, 1) if q in b'eE': break return if data.get('tb'): tb = data['tb'] for ln in tb.splitlines(): print('\r\n', ln, sep='', end='') print(flush=True) hold_till_enter()
def reset_state_to_original(self) -> None: normal_tty(self.tty_fd, self.original_termios) if self.extra_finalize: write_all(self.tty_fd, self.extra_finalize) write_all(self.tty_fd, reset_state())
def set_state_for_loop(self, set_raw: bool = True) -> None: if set_raw: raw_tty(self.tty_fd, self.original_termios) write_all(self.tty_fd, init_state())
def set_state_for_loop(self, set_raw: bool = True) -> None: if set_raw: raw_tty(self.tty_fd, self.original_termios) write_all(self.tty_fd, init_state(self.use_alternate_screen, self.mouse_tracking))