3
aG\
/ @ sD d Z ddlZddlZddlmZmZ ddlmZmZ ddl m
Z
ddlmZm
Z
mZ yddlmZ W n ek
r| dZY nX yed W n. ek
r d ZY n ek
r d
ZY nX G dd deZd
d ZG dd deZdddZdddZdddZdd Zdd Zdd ZdZ edkr@y
e Z W n Y nX [dS ) aQ
jinja2.debug
~~~~~~~~~~~~
Implements the debug interface for Jinja. This module does some pretty
ugly stuff with the Python traceback system in order to achieve tracebacks
with correct line numbers, locals and contents.
:copyright: (c) 2017 by the Jinja Team.
:license: BSD, see LICENSE for more details.
N)
TracebackTypeCodeType)missing
internal_code)TemplateSyntaxError) iteritemsreraisePY2)tproxyzraise TypeError, 'foo'zraise __jinja_exception__[1]z4raise __jinja_exception__[0], __jinja_exception__[1]c @ s@ e Zd ZdZdd Zedd Zdd Zedd Zd
d Z dS )
TracebackFrameProxyzProxies a traceback frame.c C s || _ d | _d S )N)tb_tb_next)selfr r /usr/lib/python3.6/debug.py__init__' s zTracebackFrameProxy.__init__c C s | j S )N)r
)r r r r tb_next+ s zTracebackFrameProxy.tb_nextc C sB t d k r8yt | j|r|jpd W n tk
r6 Y nX || _d S )N)tb_set_nextr Exceptionr
)r nextr r r set_next/ s zTracebackFrameProxy.set_nextc C s d| j jjkS )N__jinja_template__)r tb_frame f_globals)r r r r is_jinja_frame: s z"TracebackFrameProxy.is_jinja_framec C s t | j|S )N)getattrr )r namer r r __getattr__> s zTracebackFrameProxy.__getattr__N)
__name__
__module____qualname____doc__r propertyr r r r r r r r r $ s r c s* t | td kr S fdd}tt|S )Nc s@ | dkrt |d S | dkr, j|| nt | ||S d S )N__getattribute__r r __setattr__)r# r )r r$ )Z operationargskwargs)proxyr r operation_handlerF s
z+make_frame_proxy.