§
    xÅjY  ã                   ó  — d dl Z d dlm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mZmZmZ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)ÚTYPE_CHECKING)ÚVERSION)ÚTemplateSyntaxError)Ú	mark_safe)ÚOP)Úhas_span_streaming_enabled)Úensure_integration_enabled)ÚAnyÚDictÚIteratorÚOptionalÚ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     úYC:\Projects\Historical\venv\Lib\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ð ;µg¸iÈÑ6RÔ6Rð ;ØÔ!ˆÝ�f�u¥d˜mÑ,Ô,ð 	;µ¸FÀ1¼IÅvÑ1NÔ1Nð 	;Ý2°6Ñ:Ô:Ð:àˆ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%   /   sK   € Ý�-¥$­ Ñ/Ô/ð Øð 	8Ø×%Ò% m°AÔ&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          t          j        ¦   «         j        ¦  «        }|r§t          j                             ¦   «         €‰                     | ¦  «        S t          j                             t          | j	        ¦  «        t          j        ‰j        dœ¬¦  «        5  ‰                     | ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S 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©z	sentry.opzsentry.origin©ÚnameÚ
attributes©Úopr-   ÚoriginÚcontext)r   Ú
sentry_sdkÚ
get_clientÚoptionsÚtracesÚget_current_spanÚfgetÚ
start_spanr%   r"   r   ÚTEMPLATE_RENDERr1   Úset_dataÚcontext_data)r)   Úspan_streamingÚspanr(   Úreal_rendered_contents      €€r   Úrendered_contentz)patch_templates.<locals>.rendered_content>   sÈ  ø€ õ 4µJÔ4IÑ4KÔ4KÔ4SÑTÔTˆØð 	8ÝÔ ×1Ò1Ñ3Ô3Ð;Ø,×1Ò1°$Ñ7Ô7Ð7ÝÔ"×-Ò-Ý3°DÔ4FÑGÔGå!#Ô!3Ø%6Ô%=ðð ð .ñ ô ð 8ð 8ð -×1Ò1°$Ñ7Ô7ð8ð 8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8õ Ô&ÝÔ%Ý3°DÔ4FÑGÔGØ(Ô/ðñ ô ð 8ð Ø—’˜i¨Ô):Ñ;Ô;Ð;Ø,×1Ò1°$Ñ7Ô7ð8ð 8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s$   Â!CÃCÃ
CÄ0EÅE	ÅE	)é   é   Úrequestzdjango.http.HttpRequestr"   r2   r   Úargsr
   Úkwargszdjango.http.HttpResponsec                 óÚ  •— |pi }d|vr5t          t          j        ¦   «                              ¦   «         ¦  «        |d<   t          j        ¦   «         }t          |j        ¦  «        }|r”t          j                             ¦   «         € ‰	| ||g|¢R i |¤ŽS t          j         	                    t          |¦  «        t          j        ‰j        dœ¬¦  «        5   ‰	| ||g|¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S 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/   r2   )r   r3   Úget_current_scopeÚtrace_propagation_metar4   r   r5   r6   r7   r9   r%   r   r:   r1   r;   )
rC   r"   r2   rD   rE   Úclientr=   r>   r(   Úreal_renders
           €€r   Úrenderzpatch_templates.<locals>.render^   s^  ø€ ð �-˜RˆØ gÐ-Ð-Ý+4ÝÔ,Ñ.Ô.×EÒEÑGÔGñ,ô ,ˆGÐ'Ñ(õ Ô&Ñ(Ô(ˆÝ3°F´NÑCÔCˆàð 	UÝÔ ×1Ò1Ñ3Ô3Ð;Ø"�{ 7¨M¸7ÐTÀTÐTÐTÐTÈVÐTÐTÐTÝÔ"×-Ò-Ý3°MÑBÔBå!#Ô!3Ø%6Ô%=ðð ð .ñ ô ð Uð Uð #�{ 7¨M¸7ÐTÀTÐTÐTÐTÈVÐTÐTðUð Uð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Uõ Ô&ÝÔ%Ý3°MÑBÔBØ(Ô/ðñ ô ð Uð Ø—’˜i¨Ñ1Ô1Ð1Ø"�{ 7¨M¸7ÐTÀTÐTÐTÐTÈVÐTÐTðUð Uð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Us$   ÃC/Ã/C3Ã6C3Ä/$E Å E$Å'E$)N)Údjango.template.responser'   Úsentry_sdk.integrations.djangor(   r@   Úpropertyr	   r8   ÚstrÚDJANGO_VERSIONÚdjango.shortcutsÚ	shortcutsrL   Ú	functoolsÚwraps)r'   r@   ÚdjangorL   r(   rK   r?   s       @@@r   Úpatch_templatesrW   7   sn  øøø€ Ø?Ð?Ð?Ð?Ð?Ð?à@Ð@Ð@Ð@Ð@Ð@à2ÔCÐåÝÐ 1Ð3HÔ3MÑNÔNð8Ð7ð 8½Cð 8ð 8ð 8ð 8ð 8ð 8ñ OÔNñ „Xð8ð, /?ÐÔ+å˜ÒÐØˆØÐÐÐàÔ"Ô)€Kå„_�[Ñ!Ô!ÝÐ 1°;Ñ?Ô?ð /3ð#Uð #UØ*ð#Uåð#Uð ,ð#Uð ð	#Uð
 ð#Uð 
$ð#Uð #Uð #Uð #Uð #Uð #Uñ @Ô?ñ "Ô!ð#UðJ %€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)rX   ra   r`   rb   rc   rd   Úir[   s           r   r   r   ˆ   sÌ   € Ø€}Øˆtà�6Œ]€FØ�VŒ}€HØÐØ&ˆà€KØ€LØ€Là˜Ô(ð  ð  ‰ˆˆ4ØˆvŠ:ˆ:Ø×Ò˜tÑ$Ô$Ð$Ð$Ø�ŠZˆZØ×Ò Ñ%Ô%Ð%Ð%àˆLˆLð ØØ" 2 3 3Ô'Ø$ R a RÔ(Ø$Øðð ð 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   ú
rA   )Úfind)rh   Úps     r   Ú_linebreak_iterrm   §   sd   è è € Ø
€G€G€GØ×Ò˜TÑ"Ô"€AØ
ˆqŠ&ˆ&Ø�!‰eˆˆˆØ× Ò   q¨1¡uÑ-Ô-ˆð ˆ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Úloadnamer\   r   r^   r_   )r`   ra   rb   rc   rd   )ÚgetattrÚreloadÚ	enumeraterm   rf   )r   r1   ÚstartÚendr`   rh   ra   Úuptorb   rc   rd   ÚnumÚnextr[   s                 r   r   r   ¯   s'  € ð ð Øˆtà!Ñ€F‰LˆU�CÝ�v˜z¨4Ñ0Ô0€HØÐØ&ˆØ—m’m‘o”o€OØ€FØ€DØ€KØ€LØ€Lå�¨Ñ?Ô?Ñ@Ô@ð 
ð 
‰	ˆˆTØ˜t D˜yÔ)ˆØ�DŠ=ˆ=˜S Dš[˜[ØˆFØˆLˆLØˆ^Ø×Ò˜tÑ$Ô$Ð$Ð$à×Ò Ñ%Ô%Ð%àˆˆàÐ˜v˜~Øˆtð ØØ" 2 3 3Ô'Ø$ R a RÔ(Ø$ðð ð r!   )r   r   r   r   )r   N)rX   rY   r   rY   )r   rn   r   r   )"rT   Útypingr   rV   r   rQ   Údjango.templater   Údjango.utils.safestringr   r3   Úsentry_sdk.constsr   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr	   r
   r   r   r   r   Údjango.template.baser   ÚImportErrorÚdjango.template.loaderr   r    rP   r%   rW   r   rm   r   © r!   r   ú<module>rƒ      sÝ  ðØ Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -à Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7àð <Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð>à+Ð+Ð+Ð+Ð+Ð+Ð+øØð >ð >ð >à=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð>øøøð
Ø(ðàðð ð ð ð.°#ð ¸#ð ð ð ð ðN%ð N%ð N%ð N%ðbð ð ð ð>. Sð .¨_ð .ð .ð .ð .ð&Ø,ð&àð&ð &ð &ð &ð &ð &s   ÁA ÁAÁA