Ë
    õ�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‘ä%×-Ñ-¨b¨qÐ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ˆØÐÙ$ T¨6°5Ó9×9Ð9ä×'Ñ'Ó)ð 	>¨UØˆEŒKØ×#Ñ#Ô%ä%Ø'ØÜ×$Ñ$Ü.Ü%×,Ñ,ôˆKô ×-Ñ-¨kÓ:ñ >Ù(¨¨v°uÓ=×=÷>ð >÷	>ñ 	>ð :øð >ø÷>ð >úð >÷	>÷ 	>ñ 	>ü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ô>ð* %„F…Nr=   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ô�K€Eˆ4ô
 ×Ñ˜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Ó2ˆEØ× Ñ Ð,Ø),¨Z©�×!Ñ!Ô&Ø'*¨:¡��mÑ$à×#Ñ# F¨BÓ/ˆDØ"% h¡-ˆD�ÑØ%(¨¡^°aÑ%7ˆDÐ!Ñ"Ø×$Ñ$ W¨bÓ1ˆEà˜J™ä3Ô5‘DÔ;Tô 6Ô7‘FÔ=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Ñ";ÐM¸dÒMÀfÑ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  ø€ ð ˜A‘wˆä�l¤DÔ)Ø˜lÑ*à8DÀ[Ñ8Qö-Ø04Ô% dÕ+ò-�˜[Ñ)ð ˜lÑ*ð %1°Ñ$=ö-à ô & hÕ/ò-�˜[Ñ)ô
 �< Ô-à4@×4JÑ4Jö&Ø,0Ô! $Õ'ò&ˆLÔ"ô �< Ô-à<H×<RÑ<Rö&Ø08Ô! (Õ+ò&ˆLÔ"ð ˜&Ñ à4:¸;Ñ4Gö#Ø,0Ô! $Õ'ò#ˆF�;Ñð ˜&Ñ à<BÀ;Ñ<Oö#Ø08Ô! (Õ+ò#ˆF�;Ññ ! $Ð1¨&Ñ1Ð1ùò7-ùò-ùò&ùò&ùò
#ùò#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ð!2ðF  5„C‡J�JÕr=   c                 óŽ   — t         j                  j                  | «      }t        |j                  |j
                  «      |_        |S ©N)r&   r–   r’   rˆ   rA   r†   )r’   Úarq_funcs     r4   rŽ   rŽ   ë   s2   € ä�z‰z�‰˜tÓ$€HÜ(¨¯©¸×8JÑ8JÓK€HÔà€Or=   c                 óP   — t        | j                  | j                  «      | _        | S r™   )rˆ   rA   r†   )r“   s    r4   r�   r�   ó   s    € ä(¨¯©¸×8JÑ8JÓK€HÔà€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å ÝÝ*Ý#à1°5¸(ÐCÐ ô$�[ô $ò</ò$%ò8/ò&ò>ò2(5òVóøðy ò /Ù
Ð-Ó
.Ð.ð/ús   ¾B; Â;C	