From b5259ab78054a91f10804de460128879f7948ca4 Mon Sep 17 00:00:00 2001 From: Tom Forbes Date: Mon, 29 Apr 2019 10:07:00 +0200 Subject: [PATCH] Refs #30323 -- Simplified utils.autoreload.ensure_echo_on(). --- django/utils/autoreload.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/django/utils/autoreload.py b/django/utils/autoreload.py index 4a68fb05d0395..17631e15ef987 100644 --- a/django/utils/autoreload.py +++ b/django/utils/autoreload.py @@ -78,19 +78,22 @@ def raise_last_exception(): def ensure_echo_on(): - if termios: - fd = sys.stdin - if fd.isatty(): - attr_list = termios.tcgetattr(fd) - if not attr_list[3] & termios.ECHO: - attr_list[3] |= termios.ECHO - if hasattr(signal, 'SIGTTOU'): - old_handler = signal.signal(signal.SIGTTOU, signal.SIG_IGN) - else: - old_handler = None - termios.tcsetattr(fd, termios.TCSANOW, attr_list) - if old_handler is not None: - signal.signal(signal.SIGTTOU, old_handler) + """ + Ensure that echo mode is enabled. Some tools such as PDB disable + it which causes usability issues after reload. + """ + if not termios or not sys.stdin.isatty(): + return + attr_list = termios.tcgetattr(sys.stdin) + if not attr_list[3] & termios.ECHO: + attr_list[3] |= termios.ECHO + if hasattr(signal, 'SIGTTOU'): + old_handler = signal.signal(signal.SIGTTOU, signal.SIG_IGN) + else: + old_handler = None + termios.tcsetattr(sys.stdin, termios.TCSANOW, attr_list) + if old_handler is not None: + signal.signal(signal.SIGTTOU, old_handler) def iter_all_python_module_files():