[IPython-dev] Nicer display of exceptions with ipython1

Brian Granger ellisonbg.net at gmail.com
Sun Jul 20 19:47:35 EDT 2008

>> I am not sure if it is possible, but I think the best solution is if
>> the traceback_trap can be smart and dynamically modify the traceback
>> to remove the unwanted information.  This is also needed even if the
>> interpreter is not raising the exception.  In that case, the
>> interpreter returns a dict that has the traceback as a string - with
>> the unwanted info as well.  Conclusion:  we need to figure out a way
>> of remove the unwanted info in the first place.
> Hum, I thought that if you catched the exception in the very function
> where the exec call lies, like it is done in ipython0 (iplib.py, line
> 2083), this give you a cleaner traceback with no postprocessing required.
> However, there must be an additional trick that ipython0 plays. It seems
> that the code is executed in a virtual module. As a result the traceback
> is very clean:
> In [7]: print i
> ---------------------------------------------------------------------------
> NameError                                 Traceback (most recent call
> last)
> /home/varoquau/<ipython console> in <module>()
> NameError: name 'i' is not defined
> We need to figure out how this is done. I'll ask Fernando tomorrow.

Sounds good, I think he knows that code much better than I do.

>> Also, isn't this what the callback would have to do anyway?  If so,
>> that logic should just be in the traceback_trap itself.
> Well, the callback could do more. In an IDE, for instance, you could have
> an option to open the relevant file in an editor, or open a debugger, or
> a stack inspector. This is why I am thinking of a callback. I can hardly
> see how to account for all these possibilities without either resort to
> some obfuscated code, or using a callback. Maybe I am missing the
> obvious.

Ah, yes, now I see why something like a callback would be nice.  But I
don't think we should do that only instead of figuring out how to get
a nicer traceback.  We should probably do both.


> Cheers,
> Gaël

More information about the IPython-dev mailing list