
    Dj                        d dl Z d dlZd dlmZ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 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l/m0Z0 d dl1m2Z2 d dlm3Z3 eeefZ4 G d de      Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=y# e!$ r	  ed      w xY w)    N)OP
SPANSTATUS)DidNotEnableIntegration)ignore_logger)should_send_default_pii)TransactionTRANSACTION_SOURCE_TASK)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        Zy)ArqIntegrationarqzauto.queue.c                  T   	 t        t        t              rt        t              } nt        j                  d d } | t        dj                  t                    | dk  rt        d      t                t                t                t        d       y # t
        t        f$ r d } Y mw xY w)N   zUnparsable arq version: {})r      zarq 0.23 or newer required.z
arq.worker)
isinstanceARQ_VERSIONstrr   version	TypeError
ValueErrorr   formatpatch_enqueue_jobpatch_run_jobpatch_create_workerr   )r-   s    _C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/arq.py
setup_oncezArqIntegration.setup_once-   s    	+s+'4%--bq1
 ?;BB;OPPW<==l# :& 	G	s   7B B'&B'N)__name__
__module____qualname__
identifieroriginstaticmethodr5        r4   r%   r%   )   s%    J:,'F$ $r=   r%   c                  F    t         j                  fd} | t         _        y )Nc                 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:   )selffunctionargskwargsintegrationold_enqueue_jobs        r4   _sentry_enqueue_jobz.patch_enqueue_job.<locals>._sentry_enqueue_jobK   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)rM   rL   s    @r4   r1   r1   G   s    **O	J /Hr=   c                  F    t         j                  fd} | t         _        y )Nc                   K   t        j                         j                  t              }| | ||       d {   S t        j                         5 }d|_        |j                          t        ddt        j                  t        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)rA   statusr@   sourcer:   )rB   rC   rD   r%   isolation_scope_nameclear_breadcrumbsr	   r   QUEUE_TASK_ARQr
   r:   start_transaction)rG   job_idscorerK   scopetransactionold_run_jobs         r4   _sentry_run_jobz&patch_run_job.<locals>._sentry_run_job]   s      ++-==nM$T65999'') 	>UEK##%%'$$.%,,K --k: >(vu==> >	> 	> : >> > >	> 	> 	>sX   7C;CC;AC/0C>C?C	C/C;CC"	C/&	C;/C84C;)r   run_job)r^   r]   s    @r4   r2   r2   Y   s    ..K>* %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)rB   get_current_scoper\   ARQ_CONTROL_FLOW_EXCEPTIONS
set_statusr   ABORTEDINTERNAL_ERRORr   rC   optionsr%   r9   capture_event)exc_infor[   eventre   s       r4   _capture_exceptionro   u   s    ((*E$A;55((););<$$Z%>%>?&!,,.66)44GKE4
 U.r=   c                       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\   tagsrY   arq_task_idjob_try   arq_task_retryextra)taskrI   rJ   retryzarq-job)r   rB   rf   r\   rA   
setdefaultr   r   )rn   re   r[   rs   rx   rI   ctxrJ   s        r4   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r<   )r|   rI   rJ   r}   s   ``` r4   _make_event_processorr~      s    4 r=   c                       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)Nrr   )rB   rC   rD   r%   get_isolation_scopeadd_event_processorr~   	Exceptionsysrm   ro   r   )r|   rI   rJ   rK   resultrm   	coroutinerA   s         r4   _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<   )rA   r   r   s   `` r4   _wrap_coroutiner      s    & r=   c                      t         j                  j                  t        t              fd       } | t         j                  _        y )Nc                  b   | d   }t        |t              rFd|v r|d   D cg c]  }t        |       c}|d<   d|v r|d   D cg c]  }t        |       c}|d<   t	        |d      r(|j
                  D cg c]  }t        |       c}|_        t	        |d      r(|j                  D cg c]  }t        |       c}|_        d|v r|d   D cg c]  }t        |       c}|d<   d|v r|d   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   	functions	cron_jobs)r*   dict_get_arq_function_get_arq_cron_jobhasattrr   r   )rI   rJ   settings_clsfunccron_jobold_create_workers        r4   _sentry_create_workerz2patch_create_worker.<locals>._sentry_create_worker   sf    AwlD)l*8D[8Q-04%d+-[) l* %1$=-  &h/-[)
 <-4@4J4J&,0!$'&L" <-<H<R<R&08!(+&L" & 4:;4G#,0!$'#F; & <B;<O#08!(+#F; !$1&117--&&
##s#   DD7D+D"D'3D,)r&   workercreate_workerr   r%   )r   r   s    @r4   r3   r3      s=    

000AB!2 C!2F  5CJJr=   c                     t         j                  j                  |       }t        |j                  |j
                        |_        |S N)r&   r   r   r   rA   r   )r   arq_funcs     r4   r   r      s2    zzt$H(8J8JKHOr=   c                 P    t        | j                  | j                        | _        | S r   )r   rA   r   )r   s    r4   r   r      s     (8J8JKHOr=   )>r   rB   sentry_sdk.constsr   r   sentry_sdk.integrationsr   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#   rg   r%   r1   r2   ro   r~   r   r3   r   r   r<   r=   r4   <module>r      s    
  , = 9 4 C /2(FF !11FF *#15(C $[ $</$%8/&>2(5Vy  /
-
../s   B; ;C	