From c5301ef2df8e5ecae60decca91927d3c60fc0d77 Mon Sep 17 00:00:00 2001
From: Terry Jan Reedy <tjreedy@udel.edu>
Date: Sun, 27 May 2012 21:29:17 -0400
Subject: [PATCH] Issue12510: Attempting to get invalid tooltip no longer
 closes Idle. Original patch by Roger Serwy.

---
 Lib/idlelib/CallTips.py | 9 ++++++---
 Misc/NEWS               | 3 +++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py
index cda2be979d..aa796cb47d 100644
--- a/Lib/idlelib/CallTips.py
+++ b/Lib/idlelib/CallTips.py
@@ -110,7 +110,9 @@ class CallTips:
             namespace.update(__main__.__dict__)
             try:
                 return eval(name, namespace)
-            except (NameError, AttributeError):
+                # any exception is possible if evalfuncs True in open_calltip
+                # at least Syntax, Name, Attribute, Index, and Key E. if not
+            except:
                 return None
 
 def _find_constructor(class_ob):
@@ -125,9 +127,10 @@ def _find_constructor(class_ob):
         return None
 
 def get_argspec(ob):
-    """Get a string describing the arguments for the given object."""
+    """Get a string describing the arguments for the given object,
+       only if it is callable."""
     argspec = ""
-    if ob is not None:
+    if ob is not None and hasattr(ob, '__call__'):
         if isinstance(ob, type):
             fob = _find_constructor(ob)
             if fob is None:
diff --git a/Misc/NEWS b/Misc/NEWS
index 4cafa5df6a..3ea0ae30df 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -67,6 +67,9 @@ Core and Builtins
 Library
 -------
 
+- Issue12510: Attempting to get invalid tooltip no longer closes Idle.
+  Original patch by Roger Serwy.
+
 - Issue #10365: File open dialog now works instead of crashing
   even when parent window is closed. Patch by Roger Serwy.
 
-- 
2.40.0