| Index: third_party/jinja2/debug.py
|
| diff --git a/third_party/jinja2/debug.py b/third_party/jinja2/debug.py
|
| index 2af2222322782c628697dbe7bfef661eb084559d..815cc18a4f8fd76e747835f24c1297a7d2264628 100644
|
| --- a/third_party/jinja2/debug.py
|
| +++ b/third_party/jinja2/debug.py
|
| @@ -13,8 +13,9 @@
|
| import sys
|
| import traceback
|
| from types import TracebackType
|
| -from jinja2.utils import CodeType, missing, internal_code
|
| +from jinja2.utils import missing, internal_code
|
| from jinja2.exceptions import TemplateSyntaxError
|
| +from jinja2._compat import iteritems, reraise, code_type
|
|
|
| # 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:
|
| @@ -77,7 +78,7 @@ def make_frame_proxy(frame):
|
|
|
|
|
| class ProcessedTraceback(object):
|
| - """Holds a Jinja preprocessed traceback for priting or reraising."""
|
| + """Holds a Jinja preprocessed traceback for printing or reraising."""
|
|
|
| def __init__(self, exc_type, exc_value, frames):
|
| assert frames, 'no frames for this traceback?'
|
| @@ -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]
|
| + 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 iteritems(real_locals):
|
| if name.startswith('l_') and value is not missing:
|
| locals[name[2:]] = value
|
|
|
| @@ -244,17 +245,17 @@ def fake_exc_info(exc_info, filename, lineno):
|
| location = 'block "%s"' % function[6:]
|
| else:
|
| location = 'template'
|
| - code = CodeType(0, code.co_nlocals, code.co_stacksize,
|
| - code.co_flags, code.co_code, code.co_consts,
|
| - code.co_names, code.co_varnames, filename,
|
| - location, code.co_firstlineno,
|
| - code.co_lnotab, (), ())
|
| + code = code_type(0, code.co_nlocals, code.co_stacksize,
|
| + code.co_flags, code.co_code, code.co_consts,
|
| + code.co_names, code.co_varnames, filename,
|
| + location, code.co_firstlineno,
|
| + code.co_lnotab, (), ())
|
| except:
|
| pass
|
|
|
| # 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
|
|
|