Ë
    õ�DjÂ  ã                   óø   — d dl Z 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mZmZmZmZ 	 d dlZd dlZd dlmZ erd dlmZ d d	lmZmZ d d
lmZ d„ Zd„ Zd„ Z G d„ de«      Zy# e$ r	  ed«      ‚w xY w)é    N)ÚOPÚ
SPANSTATUS)ÚDidNotEnableÚIntegration)ÚTRANSACTION_SOURCE_TASK)Úevent_from_exceptionÚloggerÚpackage_versionÚqualname_from_functionÚreraisezRay not installed.)ÚTYPE_CHECKING)ÚCallable)ÚAnyÚOptional)ÚExcInfoc                  ót   — t        j                  «       j                  «       ry t        j                  d«       y )Nz[[Tracing] Sentry not initialized in ray cluster worker, performance data will be discarded.)Ú
sentry_sdkÚ
get_clientÚ	is_activer	   Údebug© ó    ú_C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/ray.pyÚ_check_sentry_initializedr      s)   € ä×ÑÓ×(Ñ(Ô*Øä
‡L�LØeõr   c                  óv   ‡— t         j                  Št        j                  ‰«      ˆfd„«       } | t         _        y )Nc                 ó¤   •‡ ‡— t        j                  ‰ «      r ‰‰ g|¢|¢­Ž S d dœˆ fd„
} ‰|g|¢|¢­Ž }|j                  Šˆ ˆfd„}||_        |S )N)Ú_tracingc                 óú  •— t        «        t        j                  | xs i t        j                  t        ‰«      t        j                  t        ¬«      }t        j                  |«      5 }	  ‰|i |¤Ž}|j                  t        j                  «       cddd«       S # t        $ rI |j                  t        j                  «       t        j                   «       }t#        |«       t%        |Ž  Y Œ\w xY w# 1 sw Y   yxY w)z$
            Ray Worker
            )ÚopÚnameÚoriginÚsourceN)r   r   Úcontinue_tracer   ÚQUEUE_TASK_RAYr   ÚRayIntegrationr!   r   Ústart_transactionÚ
set_statusr   ÚOKÚ	ExceptionÚINTERNAL_ERRORÚsysÚexc_infoÚ_capture_exceptionr   )r   Úf_argsÚf_kwargsÚtransactionÚresultr,   Úfs         €r   Ú_fz1_patch_ray_remote.<locals>.new_remote.<locals>._f6   sÖ   ø€ ô
 &Ô'ä$×3Ñ3Ø’˜BÜ×$Ñ$Ü+¨AÓ.Ü%×,Ñ,Ü.ôˆKô ×-Ñ-¨kÓ:ð 
¸kð'Ù Ð3¨(Ñ3�FØ×*Ñ*¬:¯=©=Ô9ð ÷
ñ 
øô !ò 'Ø×*Ñ*¬:×+DÑ+DÔEÜ"Ÿ|™|›~�HÜ& xÔ0Ü˜XÓ&ð	'ú÷	
ð 
ús1   Á(C1Á*'BÂC1ÂAC.Ã+C1Ã-C.Ã.C1Ã1C:c                  ó&  •— t        j                  t        j                  t	        ‰«      t
        j                  ¬«      5 }t        j                  «       j                  «       D ��ci c]  \  }}||“Œ
 }}}	  ‰	| i |¤d|i¤Ž}|j                  t        j                  «       cddd«       S c c}}w # t        $ rI |j                  t        j                  «       t        j                  «       }t!        |«       t#        |Ž  Y Œbw xY w# 1 sw Y   yxY w)z$
            Ray Client
            )r   r    r!   r   N)r   Ú
start_spanr   ÚQUEUE_SUBMIT_RAYr   r%   r!   Úget_current_scopeÚiter_trace_propagation_headersr'   r   r(   r)   r*   r+   r,   r-   r   )
ÚargsÚkwargsÚspanÚkÚvÚtracingr1   r,   r2   Úold_remote_methods
           €€r   Ú&_remote_method_with_header_propagationzU_patch_ray_remote.<locals>.new_remote.<locals>._remote_method_with_header_propagationT   sö   ø€ ô
 ×&Ñ&Ü×&Ñ&Ü+¨AÓ.Ü%×,Ñ,ôð ð ô !+× <Ñ <Ó >× ]Ñ ]Ó _÷á˜˜1ð �q‘Dð�ñ ð'Ù.°ÐQ¸ÑQÈÒQ�FØ—O‘O¤J§M¡MÔ2ð ÷%ñ ùó
øô !ò 'Ø—O‘O¤J×$=Ñ$=Ô>Ü"Ÿ|™|›~�HÜ& xÔ0Ü˜XÓ&ð	'ú÷ð úsB   ¿&DÁ%B,Á2DÁ6+B2Â!DÂ,DÂ2ADÄDÄDÄDÄD)ÚinspectÚisclassÚremote)r2   r9   r:   r3   Úrvr@   r?   Ú
old_remotes   `     @€r   Ú
new_remotez%_patch_ray_remote.<locals>.new_remote,   sc   ú€ ô �?‰?˜1Ôñ
 ˜aÐ0 $Ð0¨Ò0Ð0à!%ö 	ñ6 ˜Ð+˜TÐ+ FÒ+ˆØŸI™IÐõ	ð2 ;ˆŒ	àˆ	r   )ÚrayrC   Ú	functoolsÚwraps)rF   rE   s    @r   Ú_patch_ray_remoterJ   (   s3   ø€ ä—‘€Jä‡_�_�ZÓ óBó !ðBðH „C…Jr   c                 ó²   — t        j                  «       }t        | |j                  dt        j
                  dœ¬«      \  }}t        j                  ||¬«       y )NF)ÚhandledÚtype)Úclient_optionsÚ	mechanism)Úhint)r   r   r   Úoptionsr%   Ú
identifierÚcapture_event)r,   r:   ÚclientÚeventrP   s        r   r-   r-   t   sK   € ä×"Ñ"Ó$€Fä&ØØ—~‘~àÜ"×-Ñ-ñ
ô�K€Eˆ4ô ×Ñ˜U¨Ö.r   c                   ó*   — e Zd ZdZde› �Zed„ «       Zy)r%   rG   zauto.queue.c                  ó†   — t        d«      } | €t        dj                  | «      «      ‚| dk  rt        d«      ‚t        «        y )NrG   zUnparsable ray version: {})é   é   r   zRay 2.7.0 or newer required)r
   r   ÚformatrJ   )Úversions    r   Ú
setup_oncezRayIntegration.setup_once‡   sD   € ô " %Ó(ˆàˆ?ÜÐ;×BÑBÀ7ÓKÓLÐLà�YÒÜÐ<Ó=Ð=äÕr   N)Ú__name__Ú
__module__Ú__qualname__rR   r!   Ústaticmethodr\   r   r   r   r%   r%   ƒ   s%   „ Ø€JØ˜:˜,Ð'€Fàñ
ó ñ
r   r%   )rA   r+   r   Úsentry_sdk.constsr   r   Úsentry_sdk.integrationsr   r   Úsentry_sdk.tracingr   Úsentry_sdk.utilsr   r	   r
   r   r   rG   ÚImportErrorrH   Útypingr   Úcollections.abcr   r   r   r   r   rJ   r-   r%   r   r   r   ú<module>rh      sx   ðÛ Û 
ã ß ,ß =Ý 6÷õ ð-Ûó å  áÝ(ß$Ý(òòIòX/ô�[õ øðc ò -Ù
Ð+Ó
,Ð,ð-ús   ²A+ Á+A9