
    lhy                         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    {/var/www/pru.catia.catastroantioquia-mas.com/tasa/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4T:!"k2B	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5e<155e<s	   5 A)django.core.handlersr   import_stringBaseHandlerload_middleware)r   r%   r+   r$   r*   s      @@r   patch_django_middlewaresr0   )   sI    )** 6D**::= (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HK$//##$++

 	 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6v66$ 7%t6v67 7 7s   (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<1D1D%. )+	) 	)$  %	). 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0B)+DMM+&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1d6L6L6N%t~~t6v66!!Ay(,(<(<<!A4BO&$)&))  *$)&)* * *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$,dGJ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     ,     !'8CH-.A(2*) % $2V#;  '%5"4F<t$r   