
    gh                     ~    S SK Jr  S SKJr  S SKrS SKJr  S SKJr  S SK	J
r
  \
(       a  S SKJr  S SK	JrJr  S	 rS
 rg)    wraps)SignalN)OP)DJANGO_VERSION)TYPE_CHECKING)Callable)AnyUnionc                    Sn[        U S5      (       a  U R                  nOw[        U S5      (       a  U R                  nOY[        U S5      (       aH  [        U S5      (       a7  [        U R                  S5      (       a  SU R                  R                  -   S-   nUS:X  a  [	        U 5      $ [        U S5      (       a  U R
                  S-   U-   nU$ )	N __qualname____name__funczpartial(<function z>)
__module__.)hasattrr   r   r   strr   )receivernames     r/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/django/signals_handlers.py_get_receiver_namer      s    Dx(($$	:	&	&  	&
 
 8V$$
)K)K'(--*@*@@4GD 	
8}x&&""S(4/K    c                  X   ^^ SSK Jm  [        R                  mUU4S jn U [        l        g)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                 >  > [         S:  a  T	" X5      u  p#O
T	" X5      n/ nU4S jn[        R                  " 5       R                  T5      nU(       a>  UR                  (       a-  XR
                  ;  a  [        U5       H  u  pgU" U5      X&'   M     [         S:  a  X#4$ U$ )N)   r   c                 4   >^  [        T 5      UU 4S j5       nU$ )Nc                     > [        T5      n[        R                  " [        R                  UTR
                  S9 nUR                  SU5        T" U 0 UD6sS S S 5        $ ! , (       d  f       g = f)N)opr   originsignal)r   
sentry_sdk
start_spanr   EVENT_DJANGOr!   set_data)argskwargssignal_namespanr   r   s       r   wrapperdpatch_signals.<locals>._sentry_live_receivers.<locals>.sentry_sync_receiver_wrapper.<locals>.wrapper?   s`     1:**$,33 MM(K8#T4V4  s   A
A-r   )r   r+   r   s   ` r   sentry_sync_receiver_wrapperSpatch_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_receivers-patch_signals.<locals>._sentry_live_receivers5   s    V#.@.N+NO/=N O	  !++-==>OP))888!*>!:&B8&L# "; V#!22!!r   N)sentry_sdk.integrations.djangor   r   _live_receivers)r;   r   r:   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>rF      s*     "    9  (!224r   