o
    i                     @   s  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 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! W n e"yg   edw d dl#m$Z$ e$rd 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Z5G dd deZ6d6ddZ7d6ddZ8d7ddZ9			 	!	"	!		#d8d$d%Z:d&e;d'd(dd(fd)d*Z<d6d+d,Z=d9d0d1Z>d:d4d5Z?dS );    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                   @   s(   e Zd ZdZde ZedddZdS )ArqIntegrationarqzauto.queue.returnNc               	   C   sj   zt ttrtt} ntjd d } W n ttfy    d } Y nw tt|  t	  t
  t  td d S )N   z
arq.worker)
isinstanceARQ_VERSIONstrr   version	TypeError
ValueErrorr   r$   patch_enqueue_jobpatch_run_jobpatch_create_workerr   )r+    r1   X/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/integrations/arq.py
setup_once-   s   


zArqIntegration.setup_oncer&   N)__name__
__module____qualname__
identifieroriginstaticmethodr3   r1   r1   r1   r2   r$   )   s
    
r$   r&   c               
      s>   t j  j} dddtddddddf
 fd	d
}| |_|t _d S )Nselfr   functionargsr   kwargsr&   zOptional[Job]c                    s   t  t}|d u r | |g|R i |I d H S t jtj|tjd  | |g|R i |I d H W  d    S 1 s?w   Y  d S )N)opnamer9   )
sentry_sdk
get_clientget_integrationr$   
start_spanr   QUEUE_SUBMIT_ARQr9   )r;   r<   r=   r>   integrationold_enqueue_jobr1   r2   _sentry_enqueue_jobE   s   
$z.patch_enqueue_job.<locals>._sentry_enqueue_job)r   enqueue_job__kwdefaults__r*   )original_kwdefaultsrI   r1   rG   r2   r.   A   s   
r.   c                     s.   t j dddtdtdd f fdd} | t _d S )Nr;   r   job_idscorer&   c              	      s   t  t}|d u r | ||I d H S t  A}d|_|  tddtj	t
jtjd}t |  | ||I d H W  d    W  d    S 1 sMw   Y  W d    d S 1 s]w   Y  d S )Nr%   zunknown arq taskok)r@   statusr?   sourcer9   )rA   rB   rC   r$   isolation_scope_nameclear_breadcrumbsr	   r   QUEUE_TASK_ARQr
   TASKr9   start_transaction)r;   rM   rN   rF   scopetransactionold_run_jobr1   r2   _sentry_run_jobX   s(   
"z&patch_run_job.<locals>._sentry_run_job)r   run_jobr*   int)r\   r1   rZ   r2   r/   U   s   
r/   exc_infor   c                 C   sp   t  }|jd ur| d tv r|jtj d S |jtj t| t 	 j
tjddd\}}t j||d d S )Nr   F)typehandled)client_options	mechanism)hint)rA   get_current_scoperY   ARQ_CONTROL_FLOW_EXCEPTIONS
set_statusr   ABORTEDINTERNAL_ERRORr   rB   optionsr$   r8   capture_event)r_   rX   eventrd   r1   r1   r2   _capture_exceptiono   s   


rm   ctxDict[Any, Any]r=   r   r>   r   c                    s   d	 fdd}|S )
Nrl   r   rd   r   r&   Optional[Event]c                    s   t  O t }|jd urd |j_d | d< | di }d |d< d dk|d< | d	i }d t r; ntt rAntd d
|d< W d    | S 1 sUw   Y  | S )Njob_namerY   tagsrM   arq_task_idjob_try   arq_task_retryextra)taskr=   r>   retryzarq-job)r   rA   re   rY   r@   
setdefaultr   r   )rl   rd   rX   rr   rw   r=   rn   r>   r1   r2   event_processor   s$   

z._make_event_processor.<locals>.event_processor)rl   r   rd   r   r&   rp   r1   )rn   r=   r>   r|   r1   r{   r2   _make_event_processor   s   r}   r@   	coroutiner"   c                    s$   								d	 fdd}|S )
Nrn   ro   r=   r   r>   r&   c                    s   t  t}|d u r | g|R i |I d H S t  ti | dig|R i | z | g|R i |I d H }W |S  tyW   t	 }t
| t|  Y |S w )Nrq   )rA   rB   rC   r$   get_isolation_scopeadd_event_processorr}   	Exceptionsysr_   rm   r   )rn   r=   r>   rF   resultr_   r~   r@   r1   r2   _sentry_coroutine   s     
z*_wrap_coroutine.<locals>._sentry_coroutine)rn   ro   r=   r   r>   r   r&   r   r1   )r@   r~   r   r1   r   r2   _wrap_coroutine   s   r   c                     s,   t jj tt d fdd} | t j_d S )	Nr=   r   r>   r&   r   c                     s   | r| d n| d}t|tr2d|v r!dd | dg D |d< d|v r2dd | dg D |d< t|dr@dd |jD |_t|drPd	d |jpLg D |_d|v rad
d | dg D |d< d|v rrdd | dg D |d<  | i |S )Nr   settings_cls	functionsc                 S      g | ]}t |qS r1   _get_arq_function.0funcr1   r1   r2   
<listcomp>       zFpatch_create_worker.<locals>._sentry_create_worker.<locals>.<listcomp>	cron_jobsc                 S   r   r1   _get_arq_cron_jobr   cron_jobr1   r1   r2   r      r   c                 S   r   r1   r   r   r1   r1   r2   r      r   c                 S   r   r1   r   r   r1   r1   r2   r      r   c                 S   r   r1   r   r   r1   r1   r2   r          c                 S   r   r1   r   r   r1   r1   r2   r      r   )getr(   dicthasattrr   r   )r=   r>   r   old_create_workerr1   r2   _sentry_create_worker   s6   










z2patch_create_worker.<locals>._sentry_create_worker)r=   r   r>   r   r&   r   )r%   workercreate_workerr   r$   )r   r1   r   r2   r0      s   %r0   r   %Union[str, Function, WorkerCoroutine]r#   c                 C   s    t j| }t|j|j|_|S N)r%   r   r   r   r@   r~   )r   arq_funcr1   r1   r2   r      s   r   r   r    c                 C   s   t | j| j| _| S r   )r   r@   r~   )r   r1   r1   r2   r      s   r   r4   )r_   r   r&   N)rn   ro   r=   r   r>   r   r&   r   )r   r   r&   r#   )r   r    r&   r    )@r   rA   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#   rf   r$   r.   r/   rm   r}   r*   r   r0   r   r   r1   r1   r1   r2   <module>   sT     	






,