
    \j                        d dl Z 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	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m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dZddZddZddZ  G d de
      Z!y# e$ r	  e	d      w xY w)    N)OP
SPANSTATUS)_check_minimum_versionDidNotEnableIntegration)TransactionSource)event_from_exceptionloggerpackage_versionqualname_from_functionreraise)remotez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     E/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/ray.py_check_sentry_initializedr      s)    ((*
LLer   c                    t        j                  |       }t        |j                  j	                               }t        j
                  dt         j
                  j                  d       }|r<|d   j                  t         j
                  j                  u r|j                  d|       n|j                  |       |j                  |      | _        y )N_sentry_tracing)kinddefault)
parameters)inspect	signaturelistr"   values	ParameterKEYWORD_ONLYr   VAR_KEYWORDinsertappendreplace__signature__)funcr$   paramssentry_tracing_params       r   #_insert_sentry_tracing_in_signaturer1   (   s     !!$'I)&&--/0F",,++ &*//W%6%6%B%BBb./*+"**f*=Dr   c                  v    t         t        j                        	 d	 	 	 	 	 	 	 dfd       } | t        _         y )Nc                 v     t        j                         r  gi S d fd}  |       S |S )Nc                 *    t        j                         r  i        S t        j                         d d	 	 	 	 	 	 	 d fd       }t	        |       r	 |      }n  i |      }|j
                  	 	 	 	 	 	 d fd}||_        |S )N)r   c                    t                t        j                  | xs i t        j                  t              t        j                  t        j                        }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)N)opnameoriginsource)r   r   continue_tracer   QUEUE_TASK_RAYr   RayIntegrationr8   r   TASKstart_transaction
set_statusr   OK	ExceptionINTERNAL_ERRORsysexc_info_capture_exceptionr   )r   f_argsf_kwargstransactionresultrD   user_fs         r   new_funczH_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>.new_funcR   s     *+(77#)r((/7)00,11  11+> 
"++!'!<8!<#..z}}= "
" 
" % +#..z/H/HI#&<<>*84*	+	
" 
"s1   2C;4'B&C;&AC85C;7C88C;;D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
                )r6   r7   r8   r   N)r   
start_spanr   QUEUE_SUBMIT_RAYr   r<   r8   get_current_scopeiter_trace_propagation_headersr?   r   r@   rA   rB   rC   rD   rE   r   )
argskwargsspankvtracingrI   rD   old_remote_methodrJ   s
           r   &_remote_method_with_header_propagationzf_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>._remote_method_with_header_propagationv   s     ****/7)00 "  %/$@$@$B$a$a$c Aq 1G 	+!2!"%+"=D" 
6 ")" "
 % +
(A(AB#&<<>*84*	+" "sB   &D%B,2D6+B2!D,D2ADDDDD)rF   r   r   zOptional[dict[str, Any]]rG   r   returnr   )rQ   r   rR   r   rY   r   )r#   isclass	functoolswrapsr1   r   )	rJ   rK   rvrX   rW   rQ   frR   
old_remotes	   `   @r   wrapperz6_patch_ray_remote.<locals>.new_remote.<locals>.wrapperJ   s    v&
 3z42626::__V$ ?C""!;" "" 	" %"6 09)0Z00: "		""(-""8 ?BIIr   )rJ   Callable[..., Any]rY   r   )r#   rZ   )r^   rQ   rR   r`   r_   s   ``` r   
new_remotez%_patch_ray_remote.<locals>.new_remote?   sK     ??1
 a1$1&11J	 J	X =1:Nr   )N)r^   zOptional[Callable[..., Any]]rQ   r   rR   r   rY   ra   )r   r[   r\   ray)rb   r_   s    @r   _patch_ray_remoterd   <   sV    J__Z ,0Y)Y9>YJOY	Y !Yv CJr   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)rD   rR   clienteventrj   s        r   rE   rE      sK    ""$F&~~"--
KE4 U.r   c                   ,    e Zd ZdZde Zedd       Zy)r<   rc   zauto.queue.Nc                  N    t        d      } t        t        |        t                y )Nrc   )r   r   r<   rd   )versions    r   
setup_oncezRayIntegration.setup_once   s    !%(~w7r   rY   N)__name__
__module____qualname__rl   r8   staticmethodrs   r   r   r   r<   r<      s%    J:,'F r   r<   rt   )r.   ra   rY   N)rD   r   rR   r   rY   N)"r#   r[   rC   r   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   r   sentry_sdk.tracingr   sentry_sdk.utilsr	   r
   r   r   r   rc   r   ImportErrortypingr   collections.abcr   r   r   r   r   r1   rd   rE   r<   r   r   r   <module>r      s      
  , U U 0 - !($(>(_D/	[ 	q  -
+
,,-s   
A: :B