
    lh                     t    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mZ d	 Zd
 Zy)    wraps)SignalN)OP)DJANGO_VERSION)TYPE_CHECKING)Callable)AnyUnionc                 ^   d}t        | d      r| j                  }nct        | d      r| j                  }nJt        | d      r>t        | d      r2t        | j                  d      rd| j                  j                  z   dz   }|dk(  rt	        |       S t        | d      r| j
                  dz   |z   }|S )	N __qualname____name__funczpartial(<function z>)
__module__.)hasattrr   r   r   strr   )receivernames     /var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/django/signals_handlers.py_get_receiver_namer      s    Dx($$	:	&  	&
 8V$
)K'(--*@*@@4GD 	
8}x&""S(4/K    c                  V    ddl m t        j                  fd} | t        _        y)z
    Patch django signal receivers to create a span.

    This only wraps sync receivers. Django>=5.0 introduced async receivers, but
    since we don't create transactions for ASGI Django, we don't wrap them.
    r   )DjangoIntegrationc                 (   t         dk\  r 	| |      \  }}n 	| |      }g }fd}t        j                         j                        }|r8|j                  r,| |j
                  vrt        |      D ]  \  }} ||      ||<    t         dk\  r||fS |S )N)   r   c                 2     t                fd       }|S )Nc                      t              }t        j                  t        j                  |j
                        5 }|j                  d|        | i |cd d d        S # 1 sw Y   y xY w)N)opr   originsignal)r   
sentry_sdk
start_spanr   EVENT_DJANGOr!   set_data)argskwargssignal_namespanr   r   s       r   wrapperzdpatch_signals.<locals>._sentry_live_receivers.<locals>.sentry_sync_receiver_wrapper.<locals>.wrapper?   se     1:**$,33 5 MM(K8#T4V45 5 5s   A!!A*r   )r   r+   r   s   ` r   sentry_sync_receiver_wrapperzSpatch_signals.<locals>._sentry_live_receivers.<locals>.sentry_sync_receiver_wrapper=   s     8_	5 	5 Nr   )r   r#   
get_clientget_integrationsignals_spanssignals_denylist	enumerate)
selfsendersync_receiversasync_receiversr,   integrationidxr   r   old_live_receiverss
           r   _sentry_live_receiversz-patch_signals.<locals>._sentry_live_receivers5   s    V#.@v.N+NO/f=N O	  !++-==>OP))K888!*>!: MX&B8&Ls#M V#!?22!!r   N)sentry_sdk.integrations.djangor   r   _live_receivers)r9   r   r8   s    @@r   patch_signalsr<   )   s%     A//$"L 4Fr   )	functoolsr   django.dispatchr   r#   sentry_sdk.constsr   r:   r   typingr   collections.abcr	   r
   r   r   r<    r   r   <module>rC      s*     "    9  (!224r   