
    \j                        d dl Z d dlZd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZmZmZmZ 	 d dlZd dlmZ d d	lmZ d d
lmZmZm Z m!Z! d dl#m$Z$ e$r0d dl#m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dlm4Z4 eee fZ5 G d de      Z6d!dZ7d!dZ8d"dZ9	 	 	 	 	 	 	 	 d#dZ:de;ddddfdZ<d!dZ=d$dZ>d%d Z?y# e"$ r	  ed      w xY w)&    N)OP
SPANSTATUS)_check_minimum_versionDidNotEnableIntegration)ignore_logger)should_send_default_pii)TransactionTransactionSource)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionSENSITIVE_DATA_SUBSTITUTEparse_versionreraise)VERSION)ArqRedis)JobExecutionFailedRetryRetryJobWorkerzArq is not installed)TYPE_CHECKING)AnyDictOptionalUnion)EventProcessorEventExcInfoHint)CronJob)Job)WorkerCoroutine)Functionc                   ,    e Zd ZdZde Zedd       Zy)ArqIntegrationarqzauto.queue.Nc                     	 t        t        t              rt        t              } nt        j                  d d } t        t        |        t                t                t                t        d       y # t
        t        f$ r d } Y Mw xY w)N   z
arq.worker)
isinstanceARQ_VERSIONstrr   version	TypeError
ValueErrorr   r&   patch_enqueue_jobpatch_run_jobpatch_create_workerr   )r-   s    E/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/arq.py
setup_oncezArqIntegration.setup_once-   sm    	+s+'4%--bq1
 	~w7l# :& 	G	s   7A3 3BBreturnN)__name__
__module____qualname__
identifieroriginstaticmethodr4        r3   r&   r&   )   s%    J:,'F$ $r>   r&   r6   c            
          t         j                  j                  } dddt        ddddddf
fd	}| |_        |t         _        y )
Nselfr   functionargsr   kwargsr6   zOptional[Job]c                 N  K   t        j                         j                  t              }| | |g|i | d {   S t        j                  t
        j                  |t        j                        5   | |g|i | d {   cd d d        S 7 W7 # 1 sw Y   y xY ww)N)opnamer;   )
sentry_sdk
get_clientget_integrationr&   
start_spanr   QUEUE_SUBMIT_ARQr;   )r@   rA   rB   rC   integrationold_enqueue_jobs        r3   _sentry_enqueue_jobz.patch_enqueue_job.<locals>._sentry_enqueue_jobE   s      !++-==nM(xI$I&III"""".:O:O
 	J )xI$I&II	J 	J J
 J	J 	Js9   :B%B8B%6BBBB%BB"B%)r   enqueue_job__kwdefaults__r,   )original_kwdefaultsrN   rM   s     @r3   r0   r0   A   s`    **O)88
J
J$'
J05
JAF
J	
J *=&.Hr>   c                  h    t         j                  dddt        dt        dd ffd} | t         _        y )Nr@   r   job_idscorer6   c                   K   t        j                         j                  t              }| | ||       d {   S t        j                         5 }d|_        |j                          t        ddt        j                  t        j                  t        j                        }t        j                  |      5   | ||       d {   cd d d        cd d d        S 7 7 # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY ww)Nr'   zunknown arq taskok)rF   statusrE   sourcer;   )rG   rH   rI   r&   isolation_scope_nameclear_breadcrumbsr
   r   QUEUE_TASK_ARQr   TASKr;   start_transaction)r@   rS   rT   rL   scopetransactionold_run_jobs         r3   _sentry_run_jobz&patch_run_job.<locals>._sentry_run_jobX   s      ++-==nM$T65999'') 	>UEK##%%'$$(--%,,K --k: >(vu==> >	> 	> : >> > >	> 	> 	>sX   7DCDA'C9:C#C!	C#	C9D!C##C,	(C90	D9D>D)r   run_jobr,   int)rb   ra   s    @r3   r1   r1   U   s6    ..K>H >c ># >$ >( %FNr>   c                    t        j                         }|j                  ^| d   t        v r*|j                  j	                  t
        j                         y |j                  j	                  t
        j                         t        | t        j                         j                  t        j                  dd      \  }}t        j                  ||       y )Nr   F)typehandled)client_options	mechanism)hint)rG   get_current_scoper`   ARQ_CONTROL_FLOW_EXCEPTIONS
set_statusr   ABORTEDINTERNAL_ERRORr   rH   optionsr&   r:   capture_event)exc_infor_   eventrj   s       r3   _capture_exceptionrt   o   s    ((*E$A;55((););<$$Z%>%>?&!,,.66)44GKE4
 U.r>   c                      d fd}|S )Nc                    t               5  t        j                         }|j                  d   |j                  _        d   | d<   | j                  di       }d   |d<   d   dkD  |d<   | j                  d	i       }d   t               rnt        t               rnt        d   d
|d<   d d d        | S # 1 sw Y   | S xY w)Njob_namer`   tagsrS   arq_task_idjob_try   arq_task_retryextra)taskrB   rC   retryzarq-job)r   rG   rk   r`   rF   
setdefaultr	   r   )rs   rj   r_   rx   r}   rB   ctxrC   s        r3   event_processorz._make_event_processor.<locals>.event_processor   s    (* 	002E  ,),Z!!&'*:m$##FB/D"%h-D%(^a%7D!"$$Wb1EJ35D;T 67F=VY	 E)	* +	* s   B$B::C)rs   r   rj   r    r6   zOptional[Event]r=   )r   rB   rC   r   s   ``` r3   _make_event_processorr      s    0 r>   rF   	coroutiner#   c                 (     	 	 	 	 	 	 	 	 d fd}|S )Nc                   K   t        j                         j                  t              }| | g|i | d {   S t        j                         j                  t        i | dig|i |       	  | g|i | d {   }|S 7 Q7 # t        $ r+ t        j                         }t        |       t        |  Y S w xY ww)Nrw   )rG   rH   rI   r&   get_isolation_scopeadd_event_processorr   	Exceptionsysrr   rt   r   )r   rB   rC   rL   resultrr   r   rF   s         r3   _sentry_coroutinez*_wrap_coroutine.<locals>._sentry_coroutine   s      !++-==nM"388888&&(<<!";S";*d";MdMfM	
	$S:4:6::F  9 ; 	||~Hx(X	sE   9C	B:C	8B BB C	B 0CC	CC	)r   Dict[Any, Any]rB   r   rC   r   r6   r   r=   )rF   r   r   s   `` r3   _wrap_coroutiner      s0    &+7<	( r>   c                      t         j                  j                  t        t              dfd       } | t         j                  _        y )Nc                     | r| d   n|j                  d      }t        |t              r`d|v r,|j                  dg       D cg c]  }t        |       c}|d<   d|v r,|j                  dg       D cg c]  }t	        |       c}|d<   t        |d      r(|j                  D cg c]  }t        |       c}|_        t        |d      r,|j                  xs g D cg c]  }t	        |       c}|_        d|v r,|j                  dg       D cg c]  }t        |       c}|d<   d|v r,|j                  dg       D cg c]  }t	        |       c}|d<    | i |S c c}w c c}w c c}w c c}w c c}w c c}w )Nr   settings_cls	functions	cron_jobs)getr*   dict_get_arq_function_get_arq_cron_jobhasattrr   r   )rB   rC   r   funccron_jobold_create_workers        r3   _sentry_create_workerz2patch_create_worker.<locals>._sentry_create_worker   s   "&tAwFJJ~,FlD)l* !- 0 0b A- &d+-[) l* %1$4$4["$E-  &h/-[)
 <- )22& "$'&L" <- ".!7!7!=2& "(+&L"
 & 4:JJ{B4O#,0!$'#F; & <BJJ{TV<W#08!(+#F; !$1&11=-
-&
&##s$   E2E#$E(E-E2>E7)rB   r   rC   r   r6   r   )r'   workercreate_workerr   r&   )r   r   s    @r3   r2   r2      s=    

000AB#2 C#2J  5CJJr>   c                     t         j                  j                  |       }t        |j                  |j
                        |_        |S N)r'   r   r   r   rF   r   )r   arq_funcs     r3   r   r      s2    zzt$H(8J8JKHOr>   c                 P    t        | j                  | j                        | _        | S r   )r   rF   r   )r   s    r3   r   r      s     (8J8JKHOr>   r5   )rr   r   r6   N)r   r   rB   r   rC   r   r6   r   )r   z%Union[str, Function, WorkerCoroutine]r6   r$   )r   r!   r6   r!   )@r   rG   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   r   sentry_sdk.integrations.loggingr   sentry_sdk.scoper	   sentry_sdk.tracingr
   r   sentry_sdk.utilsr   r   r   r   r   r   
arq.workerr'   arq.versionr   r+   arq.connectionsr   r   r   r   r   ImportErrortypingr   r   r   r   r   sentry_sdk._typesr   r   r   r    arq.cronr!   arq.jobsr"   
arq.typingr#   r$   rl   r&   r0   r1   rt   r   r,   r   r2   r   r   r=   r>   r3   <module>r      s    
  , U U 9 4 = /2(FF !11FF *#15(C $[ $0/(%4/$	"'38<# *; @Q 0)5Xg  /
-
../s    C C!