a
    xdZ                     @   s  d dl mZ d dl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 z4d dlmZ d d	lmZ d d
lmZ d dlmZ W n ey   edY n0 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)Hub)DidNotEnableIntegration)ignore_logger)Transaction)capture_internal_exceptionsevent_from_exception)Queue)JobTimeoutException)VERSION)WorkerzRQ not installed)MYPY)AnyCallableDict)EventProcessor)ExcInfo)Jobc                   @   s   e Zd ZdZedd ZdS )RqIntegrationrqc               	      s   z t tttdd d } W n$ ttfyD   tdtY n0 | dk rVtdt	j
fdd}|t	_
t	jfdd	}|t	_tj  fd
d}|t_td d S )N.   zUnparsable RQ version: {})r      zRQ 0.6 or newer is required.c           
   	      s0  t j}|t}|d u r0 | |g|R i |S |j}|d usBJ | }|  |tt	
| tj|jdpzi ddd}t  |j|_W d    n1 s0    Y  |j|d|id(  | |g|R i |}	W d    n1 s0    Y  W d    n1 s0    Y  | jr,|  |	S )N_sentry_trace_headerszrq.taskzunknown RQ task)opnameZrq_job)Zcustom_sampling_context)r   currentget_integrationr   clientZ
push_scopeZclear_breadcrumbsZadd_event_processor_make_event_processorweakrefrefr   Zcontinue_from_headersmetagetr   	func_namer   Zstart_transactionZis_horseflush)
selfjobargskwargshubZintegrationr   ZscopeZtransactionrv)old_perform_job R/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/rq.pysentry_patched_perform_job/   s.    

&Vz<RqIntegration.setup_once.<locals>.sentry_patched_perform_jobc                    s&   |j rt|  | |g|R i |S )N)Z	is_failed_capture_exception)r'   r(   exc_infor*   )old_handle_exceptionr.   r/   sentry_patched_handle_exceptionX   s    zARqIntegration.setup_once.<locals>.sentry_patched_handle_exceptionc                    s8   t j}|td ur&t| |jd<  | |fi |S )Nr   )r   r   r   r   dictZiter_trace_propagation_headersr#   )r'   r(   r*   r+   )old_enqueue_jobr.   r/   sentry_patched_enqueue_jobc   s    
z<RqIntegration.setup_once.<locals>.sentry_patched_enqueue_jobz	rq.worker)tuplemapint
RQ_VERSIONsplit
ValueError	TypeErrorr   formatr   Zperform_jobZhandle_exceptionr
   Zenqueue_jobr   )versionr0   r4   r7   r.   )r6   r3   r-   r/   
setup_once!   s      %
zRqIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodrA   r.   r.   r.   r/   r      s   r   c                    s    fdd}|S )Nc                    s     }|d ur^t  : | di }|j|j|j|j|jd|d< W d    n1 sT0    Y  d|v rt  2 t|d d trdd|jg| d< W d    n1 s0    Y  | S )	Nextra)Zjob_idfuncr)   r*   descriptionzrq-jobr2   r   r   r   fingerprint)	r   
setdefaultidr%   r)   r*   rI   
issubclassr   )eventhintr(   rG   weak_jobr.   r/   event_processort   s    (.z._make_event_processor.<locals>.event_processorr.   )rQ   rR   r.   rP   r/   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)typeZhandled)Zclient_optionsZ	mechanism)rO   )r   r   r   r   r   r	   optionsZcapture_event)r2   r*   r+   r   rN   rO   r.   r.   r/   r1      s    
r1   )&
__future__r   r!   Zsentry_sdk.hubr   Zsentry_sdk.integrationsr   r   Zsentry_sdk.integrations.loggingr   Zsentry_sdk.tracingr   Zsentry_sdk.utilsr   r	   Zrq.queuer
   Zrq.timeoutsr   Z
rq.versionr   r;   Z	rq.workerr   ImportErrorZsentry_sdk._typesr   typingr   r   r   r   r   Zrq.jobr   r   r    r1   r.   r.   r.   r/   <module>   s,   T