diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2017-12-04 21:16:18 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-04 21:16:18 (GMT) |
commit | 1e2fcac4972530aa2c963d7e4011021df5ba866e (patch) | |
tree | a34302b6c33d65cc9537719db5225ace919b1863 /Lib | |
parent | 21255fc3932a60c064f85c0fe68f2840f390ebe4 (diff) | |
download | cpython-1e2fcac4972530aa2c963d7e4011021df5ba866e.zip cpython-1e2fcac4972530aa2c963d7e4011021df5ba866e.tar.gz cpython-1e2fcac4972530aa2c963d7e4011021df5ba866e.tar.bz2 |
bpo-32207: Improve tk event exception tracebacks in IDLE. (#4703)
When tk event handling is driven by IDLE's run loop, a confusing
and distracting queue.EMPTY traceback context is no longer added
to tk event exception tracebacks. The traceback is now the same
as when event handling is driven by user code. Patch based on
a suggestion by Serhiy Storchaka.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/idlelib/run.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py index 6440e67..176fe3d 100644 --- a/Lib/idlelib/run.py +++ b/Lib/idlelib/run.py @@ -134,13 +134,17 @@ def main(del_exitfunc=False): # exiting but got an extra KBI? Try again! continue try: - seq, request = rpc.request_queue.get(block=True, timeout=0.05) + request = rpc.request_queue.get(block=True, timeout=0.05) except queue.Empty: + request = None + # Issue 32207: calling handle_tk_events here adds spurious + # queue.Empty traceback to event handling exceptions. + if request: + seq, (method, args, kwargs) = request + ret = method(*args, **kwargs) + rpc.response_queue.put((seq, ret)) + else: handle_tk_events() - continue - method, args, kwargs = request - ret = method(*args, **kwargs) - rpc.response_queue.put((seq, ret)) except KeyboardInterrupt: if quitting: exit_now = True |