New submission from Roger Serwy:

The calltip fails if __getattr__ raises an exception. Take as an example:


Python 3.4.0a0 (default:0238cc842805+, Dec  6 2012, 19:17:04) 
[GCC 4.7.2] on linux
Type "copyright", "credits" or "license()" for more information.
>>> class Test:
        def __getattr__(self, name):
                raise Exception()

        
>>> a = Test()
>>> a(

This traceback is sent to stderr:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/home/serwy/Code/python/cpython/Lib/tkinter/__init__.py", line 1442, in 
__call__
    return self.func(*args)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/MultiCall.py", line 166, in 
handler
    r = l[i](event)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/CallTips.py", line 56, in 
try_open_calltip_event
    self.open_calltip(False)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/CallTips.py", line 75, in 
open_calltip
    argspec = self.fetch_tip(expression)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/CallTips.py", line 101, in 
fetch_tip
    (expression,), {})
  File "/home/serwy/Code/python/cpython/Lib/idlelib/rpc.py", line 216, in 
remotecall
    return self.asyncreturn(seq)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/rpc.py", line 247, in 
asyncreturn
    return self.decoderesponse(response)
  File "/home/serwy/Code/python/cpython/Lib/idlelib/rpc.py", line 267, in 
decoderesponse
    raise what
Exception


The attached patch fixes the issue.

----------
components: IDLE
files: calltips_getattr_error.patch
keywords: easy, needs review, patch
messages: 177064
nosy: serwy, terry.reedy
priority: normal
severity: normal
stage: patch review
status: open
title: IDLE: Calltip fails if __getattr__ raises exception
type: behavior
versions: Python 3.2, Python 3.3, Python 3.4
Added file: http://bugs.python.org/file28231/calltips_getattr_error.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16630>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to