diff options
author | Armin Ronacher <armin.ronacher@active-4.com> | 2015-05-25 12:25:02 +0200 |
---|---|---|
committer | Armin Ronacher <armin.ronacher@active-4.com> | 2015-05-25 12:25:02 +0200 |
commit | 0bfb60f831352982ed484a669d28614af6db77a2 (patch) | |
tree | 55740f9d49ec92cc466761c4ec9fe7f2faf212b0 | |
parent | 0c1f192670fff219ae1c61fb69c75ae4fb0fd50d (diff) | |
parent | f4ddad8b44258fde8f70ee1b06f7ee03906cf661 (diff) | |
download | jinja2-0bfb60f831352982ed484a669d28614af6db77a2.tar.gz |
Merge branch 'pr/451'
-rw-r--r-- | jinja2/debug.py | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/jinja2/debug.py b/jinja2/debug.py index ee75a52..3252748 100644 --- a/jinja2/debug.py +++ b/jinja2/debug.py @@ -15,7 +15,7 @@ import traceback from types import TracebackType, CodeType from jinja2.utils import missing, internal_code from jinja2.exceptions import TemplateSyntaxError -from jinja2._compat import iteritems, reraise +from jinja2._compat import iteritems, reraise, PY2 # on pypy we can take advantage of transparent proxies try: @@ -245,12 +245,21 @@ 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, (), ()) - except: + + if PY2: + 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, (), ()) + else: + code = CodeType(0, code.co_kwonlyargcount, + 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 Exception as e: pass # execute the code and catch the new traceback @@ -273,11 +282,15 @@ def _init_ugly_crap(): import ctypes from types import TracebackType - # figure out size of _Py_ssize_t - if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): - _Py_ssize_t = ctypes.c_int64 + if PY2: + # figure out size of _Py_ssize_t for Python 2: + if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): + _Py_ssize_t = ctypes.c_int64 + else: + _Py_ssize_t = ctypes.c_int else: - _Py_ssize_t = ctypes.c_int + # platform ssize_t on Python 3 + _Py_ssize_t = ctypes.c_ssize_t # regular python class _PyObject(ctypes.Structure): |