diff options
Diffstat (limited to 'jinja2/debug.py')
-rw-r--r-- | jinja2/debug.py | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/jinja2/debug.py b/jinja2/debug.py index 3ac4041..31c25cc 100644 --- a/jinja2/debug.py +++ b/jinja2/debug.py @@ -15,6 +15,7 @@ import traceback from types import TracebackType from jinja2.utils import CodeType, missing, internal_code from jinja2.exceptions import TemplateSyntaxError +import six # on pypy we can take advantage of transparent proxies try: @@ -25,7 +26,7 @@ except ImportError: # how does the raise helper look like? try: - exec "raise TypeError, 'foo'" + exec("raise TypeError, 'foo'") except SyntaxError: raise_helper = 'raise __jinja_exception__[1]' except TypeError: @@ -158,7 +159,7 @@ def translate_exception(exc_info, initial_skip=0): frames = [] # skip some internal frames if wanted - for x in xrange(initial_skip): + for x in range(initial_skip): if tb is not None: tb = tb.tb_next initial_tb = tb @@ -189,7 +190,7 @@ def translate_exception(exc_info, initial_skip=0): # reraise it unchanged. # XXX: can we backup here? when could this happen? if not frames: - raise exc_info[0], exc_info[1], exc_info[2] + six.reraise(exc_info[0], exc_info[1], exc_info[2]) return ProcessedTraceback(exc_info[0], exc_info[1], frames) @@ -206,7 +207,7 @@ def fake_exc_info(exc_info, filename, lineno): locals = ctx.get_all() else: locals = {} - for name, value in real_locals.iteritems(): + for name, value in six.iteritems(real_locals): if name.startswith('l_') and value is not missing: locals[name[2:]] = value @@ -254,7 +255,7 @@ def fake_exc_info(exc_info, filename, lineno): # execute the code and catch the new traceback try: - exec code in globals, locals + exec(code, globals, locals) except: exc_info = sys.exc_info() new_tb = exc_info[2].tb_next @@ -330,10 +331,7 @@ def _init_ugly_crap(): tb_set_next = None if tproxy is None: try: - from jinja2._debugsupport import tb_set_next - except ImportError: - try: - tb_set_next = _init_ugly_crap() - except: - pass + tb_set_next = _init_ugly_crap() + except: + pass del _init_ugly_crap |