o
    h                     @   s<  d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d d	lmZmZmZmZ z d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ W n e yg   e
dw d dl!m"Z" e"rd dl#m$Z$m%Z%m&Z& d dl!m'Z' d dlm(Z( d dlm)Z) G dd deZ*dd Z+dd Z,dS )    )absolute_importN)OP)continue_trace)Hub)DidNotEnableIntegration)ignore_logger)TRANSACTION_SOURCE_TASK)capture_internal_exceptionsevent_from_exceptionformat_timestampparse_version)Queue)JobTimeoutException)VERSION)Worker)	JobStatuszRQ not installed)TYPE_CHECKING)AnyCallableDict)EventProcessor)ExcInfo)Jobc                   @   s   e Zd ZdZedd ZdS )RqIntegrationrqc                     s   t t} | d u rtdt| dk rtdtjfdd}|t_tjfdd}|t_tj  fdd	}|t_t	d
 d S )NzUnparsable RQ version: {})r      zRQ 0.6 or newer is required.c           
   	      s.  t j}|t}|d u r | |g|R i |S |j}|d us!J | a}|  |tt	
| t|jdp<i tjdtd}t  |j|_W d    n1 sUw   Y  |j|d|id  | |g|R i |}	W d    n1 szw   Y  W d    n1 sw   Y  | jr|  |	S )N_sentry_trace_headerszunknown RQ task)opnamesourcerq_job)custom_sampling_context)r   currentget_integrationr   client
push_scopeclear_breadcrumbsadd_event_processor_make_event_processorweakrefrefr   metagetr   QUEUE_TASK_RQr	   r
   	func_namer   start_transactionis_horseflush)
selfjobargskwargshubintegrationr%   scopetransactionrv)old_perform_job ]/var/www/html/aiguide_backend/venv/lib/python3.10/site-packages/sentry_sdk/integrations/rq.pysentry_patched_perform_job7   s8   


z<RqIntegration.setup_once.<locals>.sentry_patched_perform_jobc                    s2   |j tjks	|jrt|  | |g|R i |S )N)_statusr   FAILED	is_failed_capture_exception)r3   r4   exc_infor6   )old_handle_exceptionr=   r>   sentry_patched_handle_exceptiona   s   zARqIntegration.setup_once.<locals>.sentry_patched_handle_exceptionc                    sD   t j}|td ur|jjd urt| |jd<  | |fi |S )Nr   )	r   r#   r$   r   r9   spandictiter_trace_propagation_headersr,   )r3   r4   r6   r7   )old_enqueue_jobr=   r>   sentry_patched_enqueue_jobn   s   
z<RqIntegration.setup_once.<locals>.sentry_patched_enqueue_jobz	rq.worker)
r   
RQ_VERSIONr   formatr   perform_jobhandle_exceptionr   enqueue_jobr   )versionr?   rF   rK   r=   )rJ   rE   r<   r>   
setup_once)   s   &	zRqIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodrR   r=   r=   r=   r>   r   &   s    r   c                    s    fdd}|S )Nc                    s     }|d urGt  5 | di }|j|j|j|j|jd|d< |jr,t|j|d d< |j	r8t|j	|d d< W d    n1 sBw   Y  d|v rxt  " t
|d d trhdd	|jg| d
< W d    | S W d    | S 1 ssw   Y  | S )Nextra)job_idfuncr5   r6   descriptionzrq-jobenqueued_at
started_atrD   r   r   r   fingerprint)r
   
setdefaultidr/   r5   r6   r[   r\   r   r]   
issubclassr   )eventhintr4   rX   weak_jobr=   r>   event_processor   s6   


z._make_event_processor.<locals>.event_processorr=   )re   rf   r=   rd   r>   r)   ~   s   r)   c                 K   sJ   t j}|td u rd S |j}t| |jdddd\}}|j||d d S )Nr   F)typehandled)client_options	mechanism)rc   )r   r#   r$   r   r%   r   optionscapture_event)rD   r6   r7   r%   rb   rc   r=   r=   r>   rC      s   
rC   )-
__future__r   r*   sentry_sdk.constsr   sentry_sdk.apir   sentry_sdk.hubr   sentry_sdk.integrationsr   r   sentry_sdk.integrations.loggingr   sentry_sdk.tracingr	   sentry_sdk.utilsr
   r   r   r   rq.queuer   rq.timeoutsr   
rq.versionr   rL   	rq.workerr   rq.jobr   ImportErrorsentry_sdk._typesr   typingr   r   r   r   r   r   r   r)   rC   r=   r=   r=   r>   <module>   s6    X