Ë
    çÞËjy  ã                   óð   — d 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
mZ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  ededef   ¬«      Z e
d«      Zedk\  Zesd„ ZnddlmZ d„ Zd„ Zy)z1
Create spans from Django middleware invocations
é    )Úwraps)ÚVERSIONN)ÚOP)Ú
ContextVarÚtransaction_from_functionÚcapture_internal_exceptions)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚOptional)ÚTypeVar)ÚSpanÚF.)ÚboundÚ$import_string_should_wrap_middleware)é   é   c                 ó   — t         S ©N)Úobject)Ú_s    úf/var/www/photos/backend/venv/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.pyú<lambda>r   $   s   € ¬v€ ó    r   )Ú_asgi_middleware_mixin_factoryc                  óœ   ‡‡— ddl m}  | j                  Šˆfd„}|| _        | j                  j                  Šˆfd„}|| j                  _        y )Nr   )Úbasec                 óZ   •—  ‰| «      }t         j                  d «      rt        || «      }|S r   )Ú%_import_string_should_wrap_middlewareÚgetÚ_wrap_middleware)Údotted_pathÚrvÚold_import_strings     €r   Úsentry_patched_import_stringz>patch_django_middlewares.<locals>.sentry_patched_import_string/   s,   ø€ á˜{Ó+ˆä0×4Ñ4°TÔ:Ü! " kÓ2ˆBàˆ	r   c                  óž   •— t         j                  d«       	  ‰| i |¤Žt         j                  d«       S # t         j                  d«       w xY w)NTF)r   Úset)ÚargsÚkwargsÚold_load_middlewares     €r   Úsentry_patched_load_middlewarez@patch_django_middlewares.<locals>.sentry_patched_load_middleware<   sA   ø€ ä-×1Ñ1°$Ô7ð	=Ù&¨Ð7°Ñ7ä1×5Ñ5°eÕ<øÔ1×5Ñ5°eÕ<ús	   ˜5 µA)Údjango.core.handlersr   Úimport_stringÚBaseHandlerÚload_middleware)r   r%   r+   r$   r*   s      @@r   Úpatch_django_middlewaresr0   )   sI   ù€ å)à×*Ñ*Ðôð 6€DÔà×*Ñ*×:Ñ:Ðô=ð (F€D×ÑÕ$r   c           	      ó¸   ‡ ‡‡‡‡— ddl mŠ ˆˆfd„Šˆfd„Š G ˆˆˆ fd„dt        ‰«      «      }dD ]&  }t        ‰ |«      sŒt	        ||t        ‰ |«      «       Œ( |S )Nr   )ÚDjangoIntegrationc                 óp  •— t        j                  «       j                  ‰«      }|�|j                  sy t	        | «      }‰}t        | dd «      }|rdj                  ||«      }t        j                  t        j                  |‰j                  ¬«      }|j                  d|«       |j                  d‰«       |S )NÚ__name__z{}.{})ÚopÚnameÚoriginzdjango.function_namezdjango.middleware_name)Ú
sentry_sdkÚ
get_clientÚget_integrationÚmiddleware_spansr   ÚgetattrÚformatÚ
start_spanr   ÚMIDDLEWARE_DJANGOr7   Úset_tag)Ú
old_methodÚintegrationÚfunction_nameÚdescriptionÚfunction_basenameÚmiddleware_spanr2   Úmiddleware_names         €€r   Ú_check_middleware_spanz0_wrap_middleware.<locals>._check_middleware_spanK   s¯   ø€ ä ×+Ñ+Ó-×=Ñ=Ð>OÓPˆØÐ k×&BÒ&BØä1°*Ó=ˆà%ˆÜ# J°
¸DÓAÐÙØ!Ÿ.™.¨Ð6GÓHˆKä$×/Ñ/Ü×#Ñ#ØØ$×+Ñ+ô
ˆð
 	×ÑÐ 6¸ÔFØ×ÑÐ 8¸/ÔJàÐr   c                 ó¼   •‡ — t        «       5  ˆˆ fd„}	  t        ‰ «      |«      }‰ j                  |_        |cd d d «       S # t        $ r Y Œw xY w# 1 sw Y   ‰ S xY w)Nc                  óh   •—  ‰‰«      }|€ ‰| i |¤ŽS |5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wr   © )r(   r)   rF   rH   rA   s      €€r   Úsentry_wrapped_methodzL_wrap_middleware.<locals>._get_wrapped_method.<locals>.sentry_wrapped_methodf   sH   ø€ á"8¸Ó"D�à"Ð*Ù% tÐ6¨vÑ6Ð6à$ñ 7Ù% tÐ6¨vÑ6÷7÷ 7ò 7ús   –(¨1)r   r   Ú__self__Ú	Exception)rA   rL   rH   s   ` €r   Ú_get_wrapped_methodz-_wrap_middleware.<locals>._get_wrapped_methodb   sm   ù€ ä(Ó*ñ 	)õ7ðà(9¬¨jÓ(9Ð:OÓ(PÐ%ð 2<×1DÑ1DÐ%Ô.ð )÷+	)ñ 	)øô$ ò Ùðú÷%	)ð. Ðús-   �A•"A·AÁ	AÁAÁAÁAÁAc                   ól   •‡ — e Zd Z eW °dd«      Zexr  eW °dd«      Zdˆ ˆfd„	Zˆfd„Zˆfd„Z	ˆ xZ
S )	ú2_wrap_middleware.<locals>.SentryWrappingMiddlewareÚsync_capableTÚasync_capableFc                 óœ   •— |r ‰|g|¢­i |¤Ž| _         n ‰|i |¤Ž| _         || _        d | _        | j                  rt        ‰| �  |«       y y r   )Ú_innerÚget_responseÚ_call_methodrS   ÚsuperÚ__init__)ÚselfrV   r(   r)   Ú	__class__Ú
middlewares       €€r   rY   z;_wrap_middleware.<locals>.SentryWrappingMiddleware.__init__…   sX   ø€ áÙ(¨ÐG¸ÒGÀÑG�•á(¨$Ð9°&Ñ9�”Ø ,ˆDÔØ $ˆDÔØ×!Ò!Ü‘Ñ  Õ.ð "r   c                 ó~   •— |dvr
t        «       ‚t        | j                  |«      } ‰|«      }|| j                  |<   |S )N)Úprocess_requestÚprocess_viewÚprocess_template_responseÚprocess_responseÚprocess_exception)ÚAttributeErrorr<   rU   Ú__dict__)rZ   Úmethod_namerA   r#   rO   s       €r   Ú__getattr__z>_wrap_middleware.<locals>.SentryWrappingMiddleware.__getattr__’   sH   ø€ àð #ñ ô %Ó&Ð&ä  §¡¨kÓ:ˆJÙ$ ZÓ0ˆBØ)+ˆD�M‰M˜+Ñ&ØˆIr   c                 ó  •— t        | d«      r"| j                  «       r | j                  |i |¤ŽS | j                  }|€| j                  j
                  x| _        } ‰|¬«      }|€ ||i |¤ŽS |5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)NÚasync_route_check)rA   )Úhasattrrh   Ú	__acall__rW   rU   Ú__call__)rZ   r(   r)   ÚfrF   rH   s        €r   rk   z;_wrap_middleware.<locals>.SentryWrappingMiddleware.__call__¢   s›   ø€ ä�tÐ0Ô1°d×6LÑ6LÔ6NØ%�t—~‘~ tÐ6¨vÑ6Ð6à×!Ñ!ˆAØˆyØ(,¯©×(<Ñ(<Ð<�Ô! Aá4ÀÔBˆOàÐ&Ù˜$Ð) &Ñ)Ð)à ñ *Ù˜$Ð) &Ñ)÷*÷ *ò *ús   Á0BÂBr   )r4   Ú
__module__Ú__qualname__r<   rR   Ú DJANGO_SUPPORTS_ASYNC_MIDDLEWARErS   rY   rf   rk   Ú__classcell__)r[   rH   rO   r\   s   @€€€r   ÚSentryWrappingMiddlewarerQ   }   s?   ù„ ñ ™z¨>¸4Ó@ˆØ8ò 
¹WÙ˜¨ó>
ˆö		/ô	÷ 	*ð 	*r   rq   )r4   rm   rn   )Úsentry_sdk.integrations.djangor2   r   ri   Úsetattrr<   )r\   rG   rq   Úattrr2   rH   rO   s   ``  @@@r   r!   r!   G   sd   ü€ å@õô.÷64*ð 4*Ü&Ð'=Ó>ô4*ðlò Oˆô
 �:˜tÕ$ÜÐ,¨d´G¸JÈÓ4MÕNðOð $Ð#r   )Ú__doc__Ú	functoolsr   Údjangor   ÚDJANGO_VERSIONr8   Úsentry_sdk.constsr   Úsentry_sdk.utilsr   r   r   Útypingr	   r
   r   r   r   Úsentry_sdk.tracingr   r   r   ro   r   Úasgir0   r!   rK   r   r   ú<module>r~      s�   ðñõ å ,ã Ý  ÷ñ õ !áÝÝÝÝå'á�˜8 C¨ HÑ-Ô.€Aá(2Ø*ó)Ð %ð $2°VÑ#;Ð  á'Ù%5Ñ"å4òFó<t$r   