From: Terry Jan Reedy Date: Mon, 28 May 2012 01:28:42 +0000 (-0400) Subject: Issue12510: Attempting to get invalid tooltip no longer closes Idle. X-Git-Tag: v2.7.4rc1~784 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d9d276b0dcd5b8108d5b906f83e53b95a7ac686d;p=thirdparty%2FPython%2Fcpython.git Issue12510: Attempting to get invalid tooltip no longer closes Idle. Original patch by Roger Serwy. --- diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py index f8f31e2fcb43..ce09983eec75 100644 --- a/Lib/idlelib/CallTips.py +++ b/Lib/idlelib/CallTips.py @@ -112,7 +112,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): @@ -127,9 +129,10 @@ def _find_constructor(class_ob): return None def get_arg_text(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.""" arg_text = "" - if ob is not None: + if ob is not None and hasattr(ob, '__call__'): arg_offset = 0 if type(ob) in (types.ClassType, types.TypeType): # Look for the highest __init__ in the class chain. diff --git a/Misc/NEWS b/Misc/NEWS index 6a0ce9e13b28..f8d7884ceeb7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -64,6 +64,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.