File: //opt/alt/python38/lib/python3.8/site-packages/jinja2/__pycache__/debug.cpython-38.pyc
U
F��a.! � @ s� d dl Z d dlZd dlZd dlmZ d dlmZ ddlmZ ddl m
Z
ddl mZ ejrfddl
mZ deje ed �d
d�Zeeje eeed�d
d�Zejeejf ejeejf d�dd�Zejdkr�eeje ed�dd�Zn�e �� dk�rJzd dlZW n. ek
�r. eeje ed�dd�ZY nX eeje ed�dd�Zn2d dlZG dd� dej�Z eeje ed�dd�ZdS )� N)�CodeType)�
TracebackType� )�TemplateSyntaxError)�
internal_code)�missing)�Context)�source�returnc C s t �� \}}}t�t|�}t�t|�}t|t�rd|jsdd|_| |_ |�
d� t|d|jpZd|j
�}n|j}g }|dk r�|jjtkr�|j}qn|jj�d�}|dk r�|�|j�}t|||j|�}|�|� n
|�|� |j}qnd}t|�D ]}t||�}q�|�
|�S )ax Rewrite the current exception to replace any tracebacks from
within compiled template code with tracebacks that look like they
came from the template source.
This must be called within an ``except`` block.
:param source: For ``TemplateSyntaxError``, the original source if
known.
:return: The original exception with the rewritten traceback.
TNz <unknown>Z__jinja_template__)�sys�exc_info�t�cast�
BaseExceptionr �
isinstancer Z
translatedr �with_traceback�fake_traceback�filename�lineno�tb_next�tb_frame�f_coder � f_globals�getZget_corresponding_lineno� tb_lineno�append�reversed�tb_set_next) r �_� exc_value�tb�stack�templater Zfake_tbr � r# �=/opt/alt/python38/lib/python3.8/site-packages/jinja2/debug.py�rewrite_traceback_stack s<