diff options
| author | Michael Merickel <michael@merickel.org> | 2015-02-13 11:20:58 -0600 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2015-02-13 11:20:58 -0600 |
| commit | 5c9ca32605c37dbc729b1143ba9163b87ecb123d (patch) | |
| tree | 9db085016df585645f157467490a1b54979c34b6 | |
| parent | 1dc1f28e1184960f5359c6c510d23a0e6e9dafe8 (diff) | |
| parent | 03d964a924e0ef183c3cd78a61c043b1f74f5570 (diff) | |
| download | pyramid-5c9ca32605c37dbc729b1143ba9163b87ecb123d.tar.gz pyramid-5c9ca32605c37dbc729b1143ba9163b87ecb123d.tar.bz2 pyramid-5c9ca32605c37dbc729b1143ba9163b87ecb123d.zip | |
Merge pull request #1577 from davisagli/fix.reloader-pdb-echo
Add workaround to make sure echo is enabled after reload
| -rw-r--r-- | CHANGES.txt | 4 | ||||
| -rw-r--r-- | CONTRIBUTORS.txt | 2 | ||||
| -rw-r--r-- | pyramid/scripts/pserve.py | 14 |
3 files changed, 20 insertions, 0 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 1e50a623f..37803b3ed 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -88,6 +88,10 @@ Features Bug Fixes --------- +- Work around an issue where ``pserve --reload`` would leave terminal echo + disabled if it reloaded during a pdb session. + See https://github.com/Pylons/pyramid/pull/1577 + - ``pyramid.wsgi.wsgiapp`` and ``pyramid.wsgi.wsgiapp2`` now raise ``ValueError`` when accidentally passed ``None``. See https://github.com/Pylons/pyramid/pull/1320 diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 319d41434..4f9bd6e41 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -242,3 +242,5 @@ Contributors - Ilja Everila, 2015/02/05 - Geoffrey T. Dairiki, 2015/02/06 + +- David Glick, 2015/02/12 diff --git a/pyramid/scripts/pserve.py b/pyramid/scripts/pserve.py index 314efd839..d2ea1719b 100644 --- a/pyramid/scripts/pserve.py +++ b/pyramid/scripts/pserve.py @@ -36,6 +36,11 @@ from pyramid.scripts.common import parse_vars MAXFD = 1024 +try: + import termios +except ImportError: # pragma: no cover + termios = None + if WIN and not hasattr(os, 'kill'): # pragma: no cover # py 2.6 on windows def kill(pid, sig=None): @@ -709,6 +714,14 @@ def _turn_sigterm_into_systemexit(): # pragma: no cover raise SystemExit signal.signal(signal.SIGTERM, handle_term) +def ensure_echo_on(): # pragma: no cover + if termios: + fd = sys.stdin.fileno() + attr_list = termios.tcgetattr(fd) + if not attr_list[3] & termios.ECHO: + attr_list[3] |= termios.ECHO + termios.tcsetattr(fd, termios.TCSANOW, attr_list) + def install_reloader(poll_interval=1, extra_files=None): # pragma: no cover """ Install the reloading monitor. @@ -718,6 +731,7 @@ def install_reloader(poll_interval=1, extra_files=None): # pragma: no cover ``raise_keyboard_interrupt`` option creates a unignorable signal which causes the whole application to shut-down (rudely). """ + ensure_echo_on() mon = Monitor(poll_interval=poll_interval) if extra_files is None: extra_files = [] |
