
    \j                     D   d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	 d dl
Z
d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZ er7d 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e      Z G d de      Z	 	 	 	 	 	 	 	 ddZ ddde!ddfdZ"ddZ#y)    Nwraps)Threadcurrent_thread)ThreadPoolExecutorFuture)Integrationuse_isolation_scope	use_scope)event_from_exceptioncapture_internal_exceptionsloggerreraise)TYPE_CHECKING)Any)TypeVar)Callable)Optional)ExcInfoF.)boundTc                   :    e Zd ZdZ	 d	dddeddfdZed
d       Zy)ThreadingIntegration	threadingNpropagate_hubzOptional[bool]propagate_scopereturnc                 T    |t        j                  d       || _        ||| _        y y )NzLDeprecated: propagate_hub is deprecated. This will be removed in the future.)r   warningr   )selfr   r   s      K/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/threading.py__init__zThreadingIntegration.__init__"   s6     $NN^  /$#0D  %    c                     t         j                  	 ddlm}  	 dd l}|j                  }t        j                  dk  xr |d uxr |dk  xr | d uxr | dk\  xr | dk  t              dfd       }|t         _        t        t        j                        t        _        y # t        $ r d } Y w xY w# t        t        f$ r d }Y w xY w)	Nr   )VERSION)   	   z4.0.0)r(   r   )   r   c           
      X   t        j                         j                  t              }| | g|i |S |j                  rr@t        j                  dd       t        j                         }t        j                         }nIt        j                         j                         }t        j                         j                         }nd }d }t               5  t        ||t        | j                  d| j                              }|| _        d d d         | g|i |S # 1 sw Y   xY w)NaV  There is a known issue with Django channels 2.x and 3.x when using Python 3.8 or older. (Async support is emulated using threads and some Sentry data may be leaked between those threads.) Please either upgrade to Django channels 4.0+, use Django's async features available in Django 3.1+ instead of Django channels, or upgrade to Python 3.9+.   )
stacklevel__func__)
sentry_sdk
get_clientget_integrationr   r   warningswarnget_isolation_scopeget_current_scopeforkr   	_wrap_rungetattrrun)	r"   akwintegrationisolation_scopecurrent_scopenew_runis_async_emulated_with_threads	old_starts	          r#   sentry_startz5ThreadingIntegration.setup_once.<locals>.sentry_startL   s   $//1AABVWK" 00R00**1MMj $% '1&D&D&FO$.$@$@$BM '1&D&D&F&K&K&MO$.$@$@$B$G$G$IM"& $ -. ###!DHHj$((;
 ## T,A,,,# #s   4D  D))r"   r   r:   r   r;   r   r   r   )r   startdjangor'   ImportErrorchannels__version__AttributeErrorsysversion_infor    _wrap_threadpool_executor_submitr   submit)django_versionrF   channels_versionrB   r@   rA   s       @@r#   
setup_oncezThreadingIntegration.setup_once3   s    LL		"8	$'33
 v% ( ,( 7*( d*( &(	(
 ' 	' 
y	&	- 
&	-P $$D%%'E%
!{  	"!N	" ^, 	$#	$s"   B# B4 #B10B14CC)NT)r   N)__name__
__module____qualname__
identifierboolr$   staticmethodrO    r%   r#   r   r      sA    J OS1-1GK1	1" D
 D
r%   r   r   c                 8     t              d fd       }|S )Nc                       d fd}31t              5  t              5   |       cd d d        cd d d        S  |       S # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY w)Nc                  v    	 t               }  | gdd  i S # t        $ r t        t                 Y y w xY w)N   )r   	Exceptionr   _capture_exception)r"   r:   r;   old_run_funcs    r#   _run_old_run_funcz1_wrap_run.<locals>.run.<locals>._run_old_run_func   sF    /%'#D71QR57B77 /+-./s    88)r   r   r
   )r:   r;   r^   current_scope_to_useisolation_scope_to_user]   s   `` r#   r9   z_wrap_run.<locals>.run   sw    	/ "-2F2R$%;< /34 /,./ // / %&&/ / // / /s!   AA	AA	AA')r:   r   r;   r   r   r   r   )r`   r_   r]   r9   s   ``` r#   r7   r7   {   s#    
 <' ' Jr%   funczCallable[..., Future[T]]r@   c                 H     t               	 	 	 	 	 	 	 	 	 	 d fd       }|S )zB
    Wrap submit call to propagate scopes on task submission.
    c                    t        j                         j                  t              }| | g|i |S |j                  r+	r)t        j
                         t        j                         nU|j                  rEt        j
                         j                         t        j                         j                         nd d dfd} | |g|i |S )Nc                      42t              5  t              5   | i |cd d d        cd d d        S  | i |S # 1 sw Y   nxY w	 d d d        # 1 sw Y   'xY w)Nr
   )argskwargsr>   fnr=   s     r#   
wrapped_fnzK_wrap_threadpool_executor_submit.<locals>.sentry_submit.<locals>.wrapped_fn   s{    *}/H(9 3"=1 3!42623 33 3 t&v&&3 3 33 3 3s!   AA 	A A		AA)re   r   rf   r   r   r   )r/   r0   r1   r   r   r4   r5   r6   )
r"   rg   re   rf   r<   rh   r>   r=   ra   r@   s
    `    @@r#   sentry_submitz7_wrap_threadpool_executor_submit.<locals>.sentry_submit   s     !++-==>RSb242622&&+I(<<>O&88:M(((<<>CCEO&88:??AM"O M	' D*6t6v66r%   )
r"   r   rg   zCallable[..., T]re   r   rf   r   r   z	Future[T]r   )ra   r@   ri   s   `` r#   rK   rK      sQ     4[7"77 7 	7
 
7 7< r%   c                      t        j                         } t        j                         }|j	                  t
              5t        | |j                  ddd      \  }}t        j                  ||       | S )Nr   F)typehandled)client_options	mechanism)hint)	rI   exc_infor/   r0   r1   r   r   optionscapture_event)rp   clienteventro   s       r#   r\   r\      sd    ||~H""$F23?*!>>*u=
t
 	  T2Or%   )r`   Optional[sentry_sdk.Scope]r_   ru   r]   r   r   r   )r   r   )$rI   r2   	functoolsr   r   r   r   concurrent.futuresr   r   r/   sentry_sdk.integrationsr	   sentry_sdk.scoper   r   sentry_sdk.utilsr   r   r   r   typingr   r   r   r   r   sentry_sdk._typesr   r   r   r   r7   rT   rK   r\   rV   r%   r#   <module>r}      s    
   , 9  / ;  !)8CH-.A3AY
; Y
x86  		0&
$&FJ&&Rr%   