summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2012-06-03 05:06:38 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2012-06-03 05:06:38 (GMT)
commita317eef8975f8ffef0938be32e5c85dc0bd3076f (patch)
treec4b506656cbd4b15c76a97ba5e3430488ce7449f /Lib/idlelib
parent11cfea92950eda064e9b5b7048c1951bb084fc43 (diff)
parente606e238ab1476251ef377710442315017e4eb86 (diff)
downloadcpython-a317eef8975f8ffef0938be32e5c85dc0bd3076f.zip
cpython-a317eef8975f8ffef0938be32e5c85dc0bd3076f.tar.gz
cpython-a317eef8975f8ffef0938be32e5c85dc0bd3076f.tar.bz2
Merge with 3.2 #12510
Diffstat (limited to 'Lib/idlelib')
-rw-r--r--Lib/idlelib/CallTips.py32
1 files changed, 17 insertions, 15 deletions
diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py
index aa796cb..22a8a29 100644
--- a/Lib/idlelib/CallTips.py
+++ b/Lib/idlelib/CallTips.py
@@ -67,18 +67,18 @@ class CallTips:
if not sur_paren:
return
hp.set_index(sur_paren[0])
- name = hp.get_expression()
- if not name:
+ expression = hp.get_expression()
+ if not expression:
return
- if not evalfuncs and (name.find('(') != -1):
+ if not evalfuncs and (expression.find('(') != -1):
return
- argspec = self.fetch_tip(name)
+ argspec = self.fetch_tip(expression)
if not argspec:
return
self.active_calltip = self._calltip_window()
self.active_calltip.showtip(argspec, sur_paren[0], sur_paren[1])
- def fetch_tip(self, name):
+ def fetch_tip(self, expression):
"""Return the argument list and docstring of a function or class.
If there is a Python subprocess, get the calltip there. Otherwise,
@@ -94,25 +94,27 @@ class CallTips:
"""
try:
rpcclt = self.editwin.flist.pyshell.interp.rpcclt
- except:
+ except AttributeError:
rpcclt = None
if rpcclt:
return rpcclt.remotecall("exec", "get_the_calltip",
- (name,), {})
+ (expression,), {})
else:
- entity = self.get_entity(name)
+ entity = self.get_entity(expression)
return get_argspec(entity)
- def get_entity(self, name):
- "Lookup name in a namespace spanning sys.modules and __main.dict__."
- if name:
+ def get_entity(self, expression):
+ """Return the object corresponding to expression evaluated
+ in a namespace spanning sys.modules and __main.dict__.
+ """
+ if expression:
namespace = sys.modules.copy()
namespace.update(__main__.__dict__)
try:
- return eval(name, namespace)
- # any exception is possible if evalfuncs True in open_calltip
- # at least Syntax, Name, Attribute, Index, and Key E. if not
- except:
+ return eval(expression, namespace)
+ except BaseException:
+ # An uncaught exception closes idle, and eval can raise any
+ # exception, especially if user classes are involved.
return None
def _find_constructor(class_ob):