Issues

Issue #122 resolved

bug in RichTraceback constructor

guest
created an issue

Hi.

The `RichTraceback` class constructor accepts an optional `traceback` parameter.

However when passing a not null object, an exception is raised:

<...> File "<...>/mako/exceptions.py", line 156, in _init return (type, value, new_trcback) variable 'type' referenced before assignment

The bug is in the `_init` method:

  1. !python

def _init(self, trcback): """format a traceback from sys.exc_info() into 7-item tuples, containing the regular four traceback tuple items, plus the original template filename, the line number adjusted relative to the template source, and code line from that line number of the template.""" import mako.template mods = {} if not trcback: (type, value, trcback) = sys.exc_info()

`type` and `value` variables are only assigned if `trcback` is `None`.

The main problem with `RichTraceback`, however, is that it is not possible to specify a custom `exc_info` to use when rendering the traceback.

Thanks Manlio Perillo

Comments (4)

  1. guest reporter

    I ran into this bug recently -- you can work-around it by raising your custom exc_info and invoking the RichTraceback in the except block.

    e.g.:

    1. !python try: raise type, value, tb except: return mako.exceptions.html_error_template().render()#traceback=(type,value,tb))
  2. Log in to comment