§
    xÅjx$  ã                   ó>  — 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 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 n# e$ r  ed	¦  «        ‚w xY w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%dS )é    N)ÚOPÚ
SPANSTATUS)ÚDidNotEnableÚIntegrationÚ_check_minimum_version)ÚSegmentNameSource)ÚTransactionSource)Úhas_span_streaming_enabled)Úevent_from_exceptionÚloggerÚpackage_versionÚqualname_from_functionÚreraise)ÚremotezRay not installed.)ÚTYPE_CHECKING)ÚCallable)ÚAnyÚOptional)ÚExcInfoÚreturnc                  ó|   — t          j        ¦   «                              ¦   «         rd S t          j        d¦  «         d S )Nz[[Tracing] Sentry not initialized in ray cluster worker, performance data will be discarded.)Ú
sentry_sdkÚ
get_clientÚ	is_activer   Údebug© ó    úLC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/ray.pyÚ_check_sentry_initializedr   "   sE   € ÝÔÑÔ×(Ò(Ñ*Ô*ð Øˆå
„LØeñô ð ð ð r   ÚfuncúCallable[..., Any]c                 ó”  — t          j        | ¦  «        }t          |j                             ¦   «         ¦  «        }t          j        dt           j        j        d ¬¦  «        }|r5|d         j        t           j        j        u r| 	                    d|¦  «         n| 
                    |¦  «         |                     |¬¦  «        | _        d S )NÚ_sentry_tracing)ÚkindÚdefaultéÿÿÿÿ)Ú
parameters)ÚinspectÚ	signatureÚlistr'   ÚvaluesÚ	ParameterÚKEYWORD_ONLYr$   ÚVAR_KEYWORDÚinsertÚappendÚreplaceÚ__signature__)r    r)   ÚparamsÚsentry_tracing_params       r   Ú#_insert_sentry_tracing_in_signaturer5   +   sÁ   € õ Ô! $Ñ'Ô'€IÝ�)Ô&×-Ò-Ñ/Ô/Ñ0Ô0€FÝ"Ô,ØÝÔÔ+Øðñ ô Ðð ð ,�&˜”*”/¥WÔ%6Ô%BÐBÐBØ�Š�bÐ.Ñ/Ô/Ð/Ð/à�ŠÐ*Ñ+Ô+Ð+à"×*Ò*°fÐ*Ñ=Ô=€DÔÐÐr   c                  ó€   ‡— t           Št          j        ‰¦  «        	 d		 	 	 	 	 	 	 d
ˆfd„¦   «         } | t          _         d S )NÚfúOptional[Callable[..., Any]]Úargsr   Úkwargsr   r!   c                 óz   •‡ ‡‡— t          j        ‰ ¦  «        r ‰‰ g‰¢R i ‰¤ŽS dˆˆ ˆˆfd„}‰ � |‰ ¦  «        S |S )NÚuser_fr!   r   r   c                 ó<  •‡ ‡— t          j        ‰ ¦  «        r  ‰‰i ‰¤Ž‰ ¦  «        S t          j        ‰ ¦  «        d dœ	 	 	 	 	 	 	 dˆ fd„¦   «         }t	          |¦  «         ‰r ‰|¦  «        }n  ‰‰i ‰¤Ž|¦  «        }|j        Š	 	 	 	 	 	 dˆˆ fd„}||_        |S )N)r#   Úf_argsr   r#   úOptional[dict[str, Any]]Úf_kwargsr   c                 ó  •— t          ¦   «          t          t          j        ¦   «         j        ¦  «        }|rÙt          j                             | pi ¦  «         t          ‰¦  «        }t          j                             |€dn|t          j
        t          j        t          j        dœd ¬¦  «        5  	  ‰|i |¤Ž}n;# t          $ r. t!          j        ¦   «         }t%          |¦  «         t'          |Ž  Y nw xY w|cd d d ¦  «         S # 1 swxY w Y   d S t          j        | pi t          j
        t          ‰¦  «        t          j        t(          j        ¬¦  «        }t          j        |¦  «        5 }	  ‰|i |¤Ž}|                     t.          j        ¦  «         nZ# t          $ rM |                     t.          j        ¦  «         t!          j        ¦   «         }t%          |¦  «         t'          |Ž  Y nw xY w|cd d d ¦  «         S # 1 swxY w Y   d S )Núunknown Ray task)ú	sentry.opúsentry.originzsentry.segment.name.source)ÚnameÚ
attributesÚparent_span)ÚoprE   ÚoriginÚsource)r   r
   r   r   ÚoptionsÚtracesÚcontinue_tracer   Ú
start_spanr   ÚQUEUE_TASK_RAYÚRayIntegrationrI   r   ÚTASKÚ	ExceptionÚsysÚexc_infoÚ_capture_exceptionr   r	   Ústart_transactionÚ
set_statusr   ÚOKÚINTERNAL_ERROR)	r#   r>   r@   Úspan_streamingÚfunction_nameÚresultrT   Útransactionr<   s	           €r   Únew_funczH_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>.new_funcU   sÀ  ø€ õ *Ñ+Ô+Ð+å!;ÝÔ)Ñ+Ô+Ô3ñ"ô "�ð "ð *&ÝÔ%×4Ò4°_Ð5JÈÑKÔKÐKå$:¸6Ñ$BÔ$B�MÝ#Ô*×5Ò5à(Ð0ð 0Ð/à*å)+Ô):Ý-;Ô-BÝ:KÔ:Pð$ð $ð
 %)ð 6ñ 
ô 
ð &ð &ð/Ø%+ V¨VÐ%@°xÐ%@Ð%@˜F˜FøÝ(ð /ð /ð /Ý'*¤|¡~¤~˜HÝ.¨xÑ8Ô8Ð8Ý# XÐ.Ð.Ð.Ð.ð/øøøð
  &ð%&ð &ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &õ( #-Ô";Ø'Ð-¨2ÝÔ,Ý3°FÑ;Ô;Ý-Ô4Ý0Ô5ð#ñ #ô #�Kõ $Ô5°kÑBÔBð 
&Àkð/Ø%+ V¨VÐ%@°xÐ%@Ð%@˜FØ'×2Ò2µ:´=ÑAÔAÐAÐAøÝ(ð /ð /ð /Ø'×2Ò2µ:Ô3LÑMÔMÐMÝ'*¤|¡~¤~˜HÝ.¨xÑ8Ô8Ð8Ý# XÐ.Ð.Ð.Ð.ð	/øøøð  &ð
&ð 
&ð 
&ð 
&ñ 
&ô 
&ð 
&ð 
&ð 
&ð 
&ð 
&ð 
&øøøð 
&ð 
&ð 
&ð 
&ð 
&ð 
&sm   Â/DÂ1B:Â9DÂ:5C2Ã/DÃ1C2Ã2DÄDÄ
DÅ*G<Å,'FÆG<ÆAG+Ç(G<Ç*G+Ç+G<Ç<H ÈH r9   r:   c                  óV  •— t          t          j        ¦   «         j        ¦  «        }|�rwt	          ‰	¦  «        }t          j                             ¦   «         €zd„ t          j        ¦   «                              ¦   «         D ¦   «         }	  ‰| i |¤d|i¤Ž}n;# t          $ r. t          j        ¦   «         }t          |¦  «         t          |Ž  Y nw xY w|S t          j                             |€dn|t          j        t"          j        dœ¬¦  «        5  d„ t          j        ¦   «                              ¦   «         D ¦   «         }	  ‰| i |¤d|i¤Ž}n;# t          $ r. t          j        ¦   «         }t          |¦  «         t          |Ž  Y nw xY w|cddd¦  «         S # 1 swxY w Y   dS t          j        t          j        t	          ‰	¦  «        t"          j        ¬¦  «        5 }d	„ t          j        ¦   «                              ¦   «         D ¦   «         }	  ‰| i |¤d|i¤Ž}|                     t(          j        ¦  «         nZ# t          $ rM |                     t(          j        ¦  «         t          j        ¦   «         }t          |¦  «         t          |Ž  Y nw xY w|cddd¦  «         S # 1 swxY w Y   dS )
z,
                Ray Client
                Nc                 ó   — i | ]\  }}||“Œ	S r   r   ©Ú.0ÚkÚvs      r   ú
<dictcomp>zz_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>._remote_method_with_header_propagation.<locals>.<dictcomp>¡   ó.   € ð #ð #ð #á $  1ð ˜qð#ð #ð #r   r#   rB   )rC   rD   )rE   rF   c                 ó   — i | ]\  }}||“Œ	S r   r   ra   s      r   re   zz_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>._remote_method_with_header_propagation.<locals>.<dictcomp>¹   rf   r   )rH   rE   rI   c                 ó   — i | ]\  }}||“Œ	S r   r   ra   s      r   re   zz_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>._remote_method_with_header_propagation.<locals>.<dictcomp>Í   rf   r   )r
   r   r   rK   r   rL   Úget_current_spanÚget_current_scopeÚiter_trace_propagation_headersrR   rS   rT   rU   r   rN   r   ÚQUEUE_SUBMIT_RAYrP   rI   rW   r   rX   rY   )
r9   r:   rZ   r[   Útracingr\   rT   ÚspanÚold_remote_methodr<   s
           €€r   Ú&_remote_method_with_header_propagationzf_patch_ray_remote.<locals>.new_remote.<locals>.wrapper.<locals>._remote_method_with_header_propagation”   sØ  ø€ õ "<ÝÔ)Ñ+Ô+Ô3ñ"ô "�ð "ñ ?&Ý$:¸6Ñ$BÔ$B�Må!Ô(×9Ò9Ñ;Ô;ÐCð#ð #å(2Ô(DÑ(FÔ(F×(eÒ(eÑ(gÔ(gð#ñ #ô #˜ð/Ø%6Ð%6Ø!%ð&Ø)/ð&ð &ØAHð&ð &ð &˜F˜Føõ  )ð /ð /ð /Ý'*¤|¡~¤~˜HÝ.¨xÑ8Ô8Ð8Ý# XÐ.Ð.Ð.Ð.ð/øøøð
  &˜å#Ô*×5Ò5à(Ð0ð 0Ð/à*å)+Ô)<Ý-;Ô-Bð$ð $ð	 6ñ ô ð &ð &ð#ð #å(2Ô(DÑ(FÔ(F×(eÒ(eÑ(gÔ(gð#ñ #ô #˜ð/Ø%6Ð%6Ø!%ð&Ø)/ð&ð &ØAHð&ð &ð &˜F˜Føõ  )ð /ð /ð /Ý'*¤|¡~¤~˜HÝ.¨xÑ8Ô8Ð8Ý# XÐ.Ð.Ð.Ð.ð/øøøð
  &ð-&ð &ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &õ0 $Ô.ÝÔ.Ý3°FÑ;Ô;Ý-Ô4ðñ ô ð &ð ð#ð #å(2Ô(DÑ(FÔ(F×(eÒ(eÑ(gÔ(gð#ñ #ô #˜ð	/Ø%6Ð%6Ø!%ð&Ø)/ð&ð &ØAHð&ð &ð &˜Fð !ŸOšO­J¬MÑ:Ô:Ð:Ð:øÝ(ð /ð /ð /Ø ŸOšO­JÔ,EÑFÔFÐFÝ'*¤|¡~¤~˜HÝ.¨xÑ8Ô8Ð8Ý# XÐ.Ð.Ð.Ð.ð	/øøøð  &ð)&ð &ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   ÂB Â5CÃCÄ0FÄ>EÅ
FÅ5FÆ FÆFÆFÆFÆFÇ0JÈ
+H6È5JÈ6AJÊ
JÊJÊJÊJ"Ê%J")r>   r   r#   r?   r@   r   r   r   )r9   r   r:   r   r   r   )r(   ÚisclassÚ	functoolsÚwrapsr5   r   )	r<   r^   Úrvrp   ro   r9   r7   r:   Ú
old_remotes	   `   @€€€€r   Úwrapperz6_patch_ray_remote.<locals>.new_remote.<locals>.wrapperM   s>  øøø€ ÝŒ˜vÑ&Ô&ð ;ð
 3�z�z 4Ð2¨6Ð2Ð2°6Ñ:Ô:Ð:åŒ_˜VÑ$Ô$ð ?Cð4&ð 4&Øð4&à!;ð4&ð "ð4&ð ð	4&ð 4&ð 4&ð 4&ð 4&ñ %Ô$ð4&õl 0°Ñ9Ô9Ð9àð ;Ø�Z Ñ)Ô)��à0�Z�Z Ð0¨Ð0Ð0°Ñ:Ô:�Ø "¤	ÐðH&ØðH&Ø(-ðH&àðH&ð H&ð H&ð H&ð H&ð H&ð H&ðT ?ˆBŒIàˆIr   )r<   r!   r   r   )r(   rq   )r7   r9   r:   rv   ru   s   ``` €r   Ú
new_remotez%_patch_ray_remote.<locals>.new_remoteB   s�   øøøø€ õ Œ?˜1ÑÔð 	2ð
 �:˜aÐ1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1ðS	ð S	ð S	ð S	ð S	ð S	ð S	ð S	ð S	ðj ˆ=Ø�7˜1‘:”:ÐàˆNr   )N)r7   r8   r9   r   r:   r   r   r!   )r   rr   rs   Úray)rw   ru   s    @r   Ú_patch_ray_remotery   ?   sv   ø€ Ý€Jå„_�ZÑ Ô à,0ðbØ)ðbØ9>ðbØJOðbà	ðbð bð bð bð bñ !Ô ðbðH …C„J€J€Jr   rT   r   r:   r   c                 ó¦   — t          j        ¦   «         }t          | |j        dt          j        dœ¬¦  «        \  }}t          j        ||¬¦  «         d S )NF)ÚhandledÚtype)Úclient_optionsÚ	mechanism)Úhint)r   r   r   rK   rP   Ú
identifierÚcapture_event)rT   r:   ÚclientÚeventr   s        r   rU   rU   ê   sa   € ÝÔ"Ñ$Ô$€Få&ØØ”~àÝ"Ô-ð
ð 
ðñ ô �K€Eˆ4õ Ô˜U¨Ð.Ñ.Ô.Ð.Ð.Ð.r   c                   ó4   — e Zd ZdZde› �Zedd„¦   «         ZdS )rP   rx   zauto.queue.r   Nc                  ój   — t          d¦  «        } t          t          | ¦  «         t          ¦   «          d S )Nrx   )r   r   rP   ry   )Úversions    r   Ú
setup_oncezRayIntegration.setup_onceü   s1   € å! %Ñ(Ô(ˆÝ�~¨wÑ7Ô7Ð7åÑÔÐÐÐr   ©r   N)Ú__name__Ú
__module__Ú__qualname__r€   rI   Ústaticmethodr‡   r   r   r   rP   rP   ø   sD   € € € € € Ø€JØ'˜:Ð'Ð'€Fàðð ð ñ „\ðð ð r   rP   rˆ   )r    r!   r   N)rT   r   r:   r   r   N)&rr   r(   rS   r   Úsentry_sdk.constsr   r   Úsentry_sdk.integrationsr   r   r   Úsentry_sdk.tracesr   Úsentry_sdk.tracingr	   Úsentry_sdk.tracing_utilsr
   Úsentry_sdk.utilsr   r   r   r   r   rx   r   ÚImportErrorÚtypingr   Úcollections.abcr   r   r   r   r   r5   ry   rU   rP   r   r   r   ú<module>r–      s  ðØ Ð Ð Ð Ø €€€Ø 
€
€
€
à Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð-Ø€J€J€JØÐÐÐÐÐÐøØð -ð -ð -Ø
ˆ,Ð+Ñ
,Ô
,Ð,ð-øøøð !Ð  Ð  Ð  Ð  Ð  àð )Ø(Ð(Ð(Ð(Ð(Ð(Ø$Ð$Ð$Ð$Ð$Ð$Ð$Ð$à(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð>ð >ð >ð >ð(hð hð hð hðV/ð /ð /ð /ð	ð 	ð 	ð 	ð 	�[ñ 	ô 	ð 	ð 	ð 	s   Á
A ÁA 