
    tni?                         d dl Z d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZ erd dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w	 	 	 	 d dZdedefdZd!dZd"dZdeddfdZ	 	 	 	 d#dZdS )$    N)TemplateSyntaxError)	mark_safe)VERSION)OP)ensure_integration_enabled)TYPE_CHECKING)Any)Dict)Optional)Iterator)Tuple)Origin)LoaderOrigin	exc_valueOptional[BaseException]returnOptional[Dict[str, Any]]c                 z   t          | d          rt          | j                  S t          | d          rt          | j                  S t          | t                    r]t          | d          rM| j        }t          |t          t          f          r*t          |d         t                    rt          |          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   )r   r   s     e/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/django/templates.py!get_template_frame_from_exceptionr      s     y*++ H-i.FGGG
 y233 
.,
 
 	
 )011 ;gi6R6R ;!fudm,, 	;F1Iv1N1N 	;26:::4    template_namec                 |    t          | t          t          f          r| rd                    | d                   S d S | S )Nz	[{}, ...]r   )r   r   r   format)r!   s    r   _get_template_name_descriptionr$   3   sK    -$//  	8%%mA&6777	8 	8 r    c                     ddl m}  ddlm | j        t
          t          j                  dddt          ffd                        }|| _        t          dk     rd S dd l
}|j        j        t          j                  t                    	 dd	d
dt          ddddddddffd                        }||j        _        d S )Nr   )SimpleTemplateResponse)DjangoIntegrationselfr&   r   c                    t          j        t          j        t	          | j                  j                  5 }|                    d| j                   	                    |           cd d d            S # 1 swxY w Y   d S )Nopnameorigincontext)

sentry_sdk
start_spanr   TEMPLATE_RENDERr$   r!   r-   set_datacontext_datafget)r(   spanr'   real_rendered_contents     r   rendered_contentz)patch_templates.<locals>.rendered_contentA   s     "!/0BCC$+
 
 
 	4 MM)T%6777(--d33	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   0A77A;>A;)      requestzdjango.http.HttpRequestr!   r.   r   argsr	   kwargszdjango.http.HttpResponsec                 `   |pi }d|vr5t          t          j                                                              |d<   t          j        t
          j        t          |          j                  5 }|	                    d|            | ||g|R i |cd d d            S # 1 swxY w Y   d S )Nsentry_trace_metar*   r.   )
r   r/   get_current_scopetrace_propagation_metar0   r   r1   r$   r-   r2   )r:   r!   r.   r;   r<   r5   r'   real_renders         r   renderzpatch_templates.<locals>.renderT   s#    -Rg--+4,..EEGG, ,G'( "!/>>$+
 
 
 	Q MM)W---;wwPPPPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   2$B##B'*B')N)django.template.responser&   sentry_sdk.integrations.djangor'   r7   propertyr   r4   strDJANGO_VERSIONdjango.shortcuts	shortcutsrB   	functoolswraps)r&   r7   djangorB   r'   rA   r6   s       @@@r   patch_templatesrM   ;   sm   ??????@@@@@@2C 13H3MNN47 4C 4 4 4 4 4 4 ON X4 /?+")K_[!! 1;?? /3Q Q*QQ ,Q 	Q
 Q 
$Q Q Q Q Q Q @? "!Q, %Fr    debugDict[str, Any]c                     | d S | d         }| d         }|d}g }g }d }| d         D ]?\  }}||k     r|                     |           !||k    r|                     |           =|}@|||dd          |d d         |ddS )	Nliner,   <django template>source_lines   T)filenamelinenopre_contextpost_contextcontext_linein_app)append)rN   rW   rV   rX   rY   rZ   irQ   s           r   r   r   o   s    }t6]FV}H&KLL(    4v::t$$$$ZZ%%%%LL "233'$RaR($  r    template_sourcezIterator[int]c              #      K   dV  |                      d          }|dk    r(|dz   V  |                      d|dz             }|dk    &d S d S )Nr   
r8   )find)r^   ps     r   _linebreak_iterrc      sd      
GGGT""A
q&&!e  q1u-- q&&&&&&r    r   Tuple[Origin, Tuple[int, int]]c                    | sd S | \  }\  }}t          |dd           }|d}|                                }d }d}g }g }	d }
t          t          |                    D ]O\  }}|||         }||k    r||k    r|}|}
n-||                    |           n|	                    |           |}P|
|d S |||dd          |	d d         |
dS )NloadnamerR   r   rT   rU   )rV   rW   rX   rY   rZ   )getattrreload	enumeraterc   r\   )r   r-   startendrV   r^   rW   uptorX   rY   rZ   numnextrQ   s                 r   r   r      s'     t!FLUCvz400H&mmooOFDKLL??@@ 
 
	TtDy)D==SD[[FLL^t$$$$%%%v~t "233'$RaR($  r    )r   r   r   r   )r   N)rN   rO   r   rO   )r   rd   r   r   ) rJ   django.templater   django.utils.safestringr   rL   r   rG   r/   sentry_sdk.constsr   sentry_sdk.utilsr   typingr   r	   r
   r   r   r   django.template.baser   ImportErrordjango.template.loaderr   r   rF   r$   rM   r   rc   r    r    r   <module>rx      s       / / / / / / - - - - - - , , , , , ,                 7 7 7 7 7 7             >+++++++ > > >========>
(   .# #    1% 1% 1% 1%h   >.S ._ . . . .&,&& & & & & &s   A A#"A#