Ë
    çÞËj]  ã                   óð   — 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 d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy# e$ r	 d dlmZ Y Œ w xY w)é    N)ÚTemplateSyntaxError)Ú	mark_safe)ÚVERSION)ÚOP)Úensure_integration_enabled)ÚTYPE_CHECKING)ÚAny)ÚDict)ÚOptional)ÚIterator)ÚTuple)ÚOrigin)ÚLoaderOriginc                 ó@  — t        | d«      rt        | j                  «      S t        | d«      rt        | j                  «      S t        | t        «      rLt        | d«      r@| j                  }t        |t        t        f«      rt        |d   t        «      rt        |«      S y )NÚtemplate_debugÚdjango_template_sourceÚsourcer   )ÚhasattrÚ_get_template_frame_from_debugr   Ú_get_template_frame_from_sourcer   Ú
isinstancer   r   ÚtupleÚlistr   )Ú	exc_valuer   s     úe/var/www/photos/backend/venv/lib/python3.12/site-packages/sentry_sdk/integrations/django/templates.pyÚ!get_template_frame_from_exceptionr      s�   € ô ˆyÐ*Ô+Ü-¨i×.FÑ.FÓGÐGô
 ˆyÐ2Ô3Ü.Ø×,Ñ,ó
ð 	
ô �)Ô0Ô1´g¸iÈÔ6RØ×!Ñ!ˆÜ�fœu¤d˜mÔ,´¸FÀ1¹IÄvÔ1NÜ2°6Ó:Ð:àó    c                 ó`   — t        | t        t        f«      r| rdj                  | d   «      S y | S )Nz	[{}, ...]r   )r   r   r   Úformat)Útemplate_names    r   Ú_get_template_name_descriptionr!   3   s6   € ä�-¤$¬ Ô/ÙØ×%Ñ% m°AÑ&6Ó7Ð7ð ð Ðr   c                  ó^  ‡‡‡— ddl m}  ddlmŠ | j                  Št
        t        ‰‰j                  «      ˆˆfd„«       «       }|| _        t        dk  ry dd l	}|j                  j                  Št        j                  ‰«      t        ‰‰«      dˆˆfd„	«       «       }||j                  _        y )Nr   )ÚSimpleTemplateResponse)ÚDjangoIntegrationc                 ó  •— t        j                  t        j                  t	        | j
                  «      ‰j                  ¬«      5 }|j                  d| j                  «       ‰j                  | «      cd d d «       S # 1 sw Y   y xY w)N©ÚopÚnameÚoriginÚcontext)
Ú
sentry_sdkÚ
start_spanr   ÚTEMPLATE_RENDERr!   r    r)   Úset_dataÚcontext_dataÚfget)ÚselfÚspanr$   Úreal_rendered_contents     €€r   Úrendered_contentz)patch_templates.<locals>.rendered_contentC   so   ø€ ô ×"Ñ"Ü×!Ñ!Ü/°×0BÑ0BÓCØ$×+Ñ+ô
ð 	4ð Ø�M‰M˜) T×%6Ñ%6Ô7Ø(×-Ñ-¨dÓ3÷	4÷ 	4ò 	4ús   Á-A<Á<B)é   é   c                 óR  •— |xs i }d|vr.t        t        j                  «       j                  «       «      |d<   t        j                  t
        j                  t        |«      ‰j                  ¬«      5 }|j                  d|«        ‰| ||g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY w)NÚsentry_trace_metar&   r*   )
r   r+   Úget_current_scopeÚtrace_propagation_metar,   r   r-   r!   r)   r.   )Úrequestr    r*   ÚargsÚkwargsr2   r$   Úreal_renders         €€r   Úrenderzpatch_templates.<locals>.renderW   s§   ø€ ð ’-˜RˆØ gÑ-Ü+4Ü×,Ñ,Ó.×EÑEÓGó,ˆGÐ'Ñ(ô ×"Ñ"Ü×!Ñ!Ü/°Ó>Ø$×+Ñ+ô
ð 	Qð Ø�M‰M˜) WÔ-Ù˜w¨°wÐPÀÒPÈÑP÷	Q÷ 	Qò 	Qús   Á3 BÂB&)N)Údjango.template.responser#   Úsentry_sdk.integrations.djangor$   r4   Úpropertyr   r0   ÚDJANGO_VERSIONÚdjango.shortcutsÚ	shortcutsr?   Ú	functoolsÚwraps)r#   r4   Údjangor?   r$   r>   r3   s       @@@r   Úpatch_templatesrI   <   s§   ú€ å?Ý@à2×CÑCÐäÜÐ 1Ð3H×3MÑ3MÓNô4ó Oó ð4ð /?ÐÔ+ä˜ÒØÛà×"Ñ"×)Ñ)€Kä‡_�_�[Ó!ÜÐ 1°;Ó?õQó @ó "ðQð$ %€F×ÑÕr   c                 óÈ   — | €y | d   }| d   }|€d}g }g }d }| d   D ]5  \  }}||k  r|j                  |«       Œ||kD  r|j                  |«       Œ4|}Œ7 |||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)ÚdebugrQ   rP   rR   rS   rT   ÚirK   s           r   r   r   n   s©   € à€}Øà�6‰]€FØ�V‰}€HØÐØ&ˆà€KØ€LØ€Là˜Ñ(ò  ‰ˆˆ4ØˆvŠ:Ø×Ñ˜tÕ$Ø�ŠZØ×Ñ Õ%à‰Lð ð ØØ" 2 3Ð'Ø$ R aÐ(Ø$Øñð r   c              #   ó†   K  — d–— | j                  d«      }|dk\  r#|dz   –— | j                  d|dz   «      }|dk\  rŒ"y y ­w)Nr   ú
r5   )Úfind)Útemplate_sourceÚps     r   Ú_linebreak_iterr^   Ž   sJ   è ø€ à
‚GØ×Ñ˜TÓ"€AØ
ˆqŠ&Ø�!‰eŠØ× Ñ   q¨1¡uÓ-ˆð ˆq�&ùs
   ‚<A¿Ac                 óB  — | sy | \  }\  }}t        |dd «      }|€d}|j                  «       }d }d}g }g }	d }
t        t        |«      «      D ]@  \  }}||| }||k\  r
||k  r|}|}
n%|€|j	                  |«       n|	j	                  |«       |}ŒB |
�|€y |||dd  |	d d |
dœS )NÚloadnamerL   r   rN   rO   )rP   rQ   rR   rS   rT   )ÚgetattrÚreloadÚ	enumerater^   rV   )r   r)   ÚstartÚendrP   r\   rQ   ÚuptorR   rS   rT   ÚnumÚnextrK   s                 r   r   r   —   sñ   € áØà!Ñ€F‰LˆU�CÜ�v˜z¨4Ó0€HØÐØ&ˆØ—m‘m“o€OØ€FØ€DØ€KØ€LØ€Läœ¨Ó?Ó@ò 
‰	ˆˆTØ˜t DÐ)ˆØ�DŠ=˜S Dš[ØˆFØ‰LØˆ^Ø×Ñ˜tÕ$à×Ñ Ô%à‰ð
ð Ð˜v˜~Øð ØØ" 2 3Ð'Ø$ R aÐ(Ø$ñð r   )rF   Údjango.templater   Údjango.utils.safestringr   rH   r   rC   r+   Úsentry_sdk.constsr   Úsentry_sdk.utilsr   Útypingr   r	   r
   r   r   r   Údjango.template.baser   ÚImportErrorÚdjango.template.loaderr   r   r!   rI   r   r^   r   © r   r   ú<module>rr      sl   ðÛ å /Ý -Ý ,ã Ý  Ý 7å  áÝÝÝÝÝð>å+òò.ò/%òdò@.ó%øðA ò >ç=ð>ús   ÁA' Á'A5Á4A5