summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/idlelib/run.py14
-rw-r--r--Misc/NEWS.d/next/IDLE/2017-12-04-15-04-43.bpo-32207.IzyAJo.rst6
2 files changed, 15 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
diff --git a/Misc/NEWS.d/next/IDLE/2017-12-04-15-04-43.bpo-32207.IzyAJo.rst b/Misc/NEWS.d/next/IDLE/2017-12-04-15-04-43.bpo-32207.IzyAJo.rst
new file mode 100644
index 0000000..e521c9b
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2017-12-04-15-04-43.bpo-32207.IzyAJo.rst
@@ -0,0 +1,6 @@
+Improve tk event exception tracebacks in IDLE.
+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.