]> granicus.if.org Git - python/commitdiff
bpo-32207: Improve tk event exception tracebacks in IDLE. (GH-4703) (#4705)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 4 Dec 2017 22:02:32 +0000 (14:02 -0800)
committerTerry Jan Reedy <tjreedy@udel.edu>
Mon, 4 Dec 2017 22:02:32 +0000 (17:02 -0500)
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.
(cherry picked from commit 1e2fcac4972530aa2c963d7e4011021df5ba866e)

Lib/idlelib/run.py
Misc/NEWS.d/next/IDLE/2017-12-04-15-04-43.bpo-32207.IzyAJo.rst [new file with mode: 0644]

index 6440e673bf51638f4ee95e167bcb37427af71743..176fe3db743bd4513d5a9eacbc5194506197553b 100644 (file)
@@ -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 (file)
index 0000000..e521c9b
--- /dev/null
@@ -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.