a
    xd                     @   s   d dl mZ d dlmZ d dlmZmZ d dlm	Z	 e	rtd dl
mZ d dl
mZ d dl
mZ d dl
mZ d d	l
mZ zd d
lmZ W n ey   d dlmZ Y n0 dd Zdd Zdd Zdd Zdd Zdd ZdS )    )TemplateSyntaxError)VERSION)
_functoolsHub)MYPY)Any)Dict)Optional)Iterator)Tuple)Origin)LoaderOriginc                 C   sj   t | drt| jS t | dr(t| jS t| trft | drf| j}t|tt	frft|d t
rft|S d S )Ntemplate_debugdjango_template_sourcesourcer   )hasattr_get_template_frame_from_debugr   _get_template_frame_from_sourcer   
isinstancer   r   tuplelistr   )	exc_valuer    r   `/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/django/templates.py!get_template_frame_from_exception   s    


r   c                 C   s*   t | ttfr"| r&d| d S n| S d S )Nz	[{}, ...]r   )r   r   r   format)template_namer   r   r   _get_template_name_description-   s    r   c                     sx   ddl m}  ddlm  | jt fdd}|| _tdk rBd S dd l}|jj	t
d	 fdd	}||j_	d S )
Nr   )SimpleTemplateResponse)DjangoIntegrationc                    sn   t j}| d u r| S |jdt| jd(}|d| j | W  d    S 1 s`0    Y  d S Nzdjango.template.render)opdescriptioncontext)	r   currentget_integrationfget
start_spanr   r   set_dataZcontext_data)selfhubspan)r   real_rendered_contentr   r   rendered_content=   s    
z)patch_templates.<locals>.rendered_content)      c                    s   t j}| d u r.| ||g|R i |S |jdt|d6}|d| | ||g|R i |W  d    S 1 s|0    Y  d S r    )r   r$   r%   r'   r   r(   )requestr   r#   argskwargsr*   r+   )r   real_renderr   r   renderS   s    zpatch_templates.<locals>.render)N)Zdjango.template.responser   Zsentry_sdk.integrations.djangor   r-   propertyDJANGO_VERSIONZdjango.shortcutsZ	shortcutsr4   r   wraps)r   r-   djangor4   r   )r   r3   r,   r   patch_templates6   s    r9   c                 C   s   | d u rd S | d }| d }|d u r(d}g }g }d }| d D ]4\}}||k rX| | q<||krl| | q<|}q<|||dd  |d d |ddS )	Nlinename<django template>Zsource_lines   T)filenamelinenopre_contextpost_contextcontext_lineZin_app)append)debugr@   r?   rA   rB   rC   ir:   r   r   r   r   d   s,    

r   c                 c   s8   dV  |  d}|dkr4|d V  |  d|d }qd S )Nr   
r.   )find)template_sourcepr   r   r   _linebreak_iter   s
    

rK   c                 C   s   | sd S | \}\}}t |dd }|d u r,d}| }d }d}g }g }	d }
tt|D ]P\}}||| }||kr||kr|}|}
n|d u r|| n
|	| |}qT|
d u s|d u rd S |||dd  |	d d |
dS )NZloadnamer<   r   r=   r>   )r?   r@   rA   rB   rC   )getattrreload	enumeraterK   rD   )r   originstartendr?   rI   r@   ZuptorA   rB   rC   numnextr:   r   r   r   r      s:    


r   N)Zdjango.templater   r8   r   r6   Z
sentry_sdkr   r   Zsentry_sdk._typesr   typingr   r   r	   r
   r   Zdjango.template.baser   ImportErrorZdjango.template.loaderr   r   r   r9   r   rK   r   r   r   r   r   <module>   s&   	. 	