
    &`iw)                     `   d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	m
c mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ  e j        e          Z G d d	          Z e            a ej                    a e            ae G d
 d                      Z  e             Z!ed             Z"dS )    N)AnyDictListOptionalTuple)_explicitly_disable_client_mode_explicitly_enable_client_mode)setup_logger)check_version_info)	JobConfig)DeveloperAPIc                   
   e Zd Zd Z	 	 	 	 	 ddddddededed	eeeef                  d
e	dedede
d         de
eeef                  deeef         fdZd Zdeeef         deddfdZd Zd ZdefdZdefdZd ZddZdS )_ClientContextc                 h    ddl m}  |            | _        d | _        d | _        d| _        d| _        d S )Nr   
_ClientAPIF)ray.util.client.apir   apiclient_worker_server_connected_with_init_inside_client_testselfr   s     l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/util/client/__init__.py__init__z_ClientContext.__init__   sF    222222:<<!$)!#(       NF   )ignore_version_credentialsray_init_kwargsconn_str
job_configsecuremetadataconnection_retries	namespacer   r    zgrpc.ChannelCredentialsr!   returnc                   ddl m}
 | j        | j        rdS t	          d          | j        st                       |%|pt                      }|                    |           t          j
        }t          j        }|	i }	d|	d<   |	                    d          |	d         }|	                    d          |	d         }t          ||           	  |
|||||	          | _        | j        | j        _        | j                            ||	           | j                                        }|                     ||           |                                  |S # t          $ r |                                   w xY w)
aW  Connect the Ray Client to a server.

        Args:
            conn_str: Connection string, in the form "[host]:port"
            job_config: The job config of the server.
            secure: Whether to use a TLS secured gRPC channel
            metadata: gRPC metadata to send on connect
            connection_retries: number of connection attempts to make
            ignore_version: whether to ignore Python or Ray version mismatches.
                This should only be used for debugging purposes.

        Returns:
            Dictionary of connection info, e.g., {"num_clients": 1}.
        r   )WorkerNz6ray.init() called, but ray client is already connectedT_skip_env_hooklogging_levellogging_format)r$   r    r%   r&   )ray.util.client.workerr*   r   r   	Exceptionr   r	   r   set_ray_namespaceray_constantsLOGGER_LEVELLOGGER_FORMATgetr
   r   worker_server_initconnection_info_check_versions_register_serializers
disconnect)r   r"   r#   r$   r%   r&   r'   r   r    r!   r*   r,   r-   	conn_infos                 r   connectz_ClientContext.connect   s   8 	211111)( TUUU' 	- +,,, #2y{{J((333%2&4" O -1()//;+O<M/00<,-=>N]N333	!')!#5" " "D #0DHO++JHHH*::<<I  N;;;&&((( 	 	 	OO	s   BE  E4c                 l    ddl }ddlm}  |            }|j        j                            |           dS )zRegister the custom serializer addons at the client side.

        The server side should have already registered the serializers via
        regular worker's serialization_context mechanism.
        r   N)StandaloneSerializationContext)ray.util.serialization_addonsray.util.serializationr>   utilserialization_addonsapply)r   rayr>   ctxs       r   r9   z$_ClientContext._register_serializersi   sO     	-,,,IIIIII,,..%++C00000r   r;   c                 N    |pdt           j        v }t          |d| d           d S )NRAY_IGNORE_VERSION_MISMATCHz
Ray Clientminor)raise_on_mismatchpython_version_match_level)osenvironr   )r   r;   r   s      r   r8   z_ClientContext._check_versionsu   sD    'X,IRZ,W"00'.		
 	
 	
 	
 	
 	
r   c                 ~    ddl m} | j        | j                                          |            | _        d| _        dS )zDisconnect the Ray Client.r   r   N)r   r   r   closer   r   s     r   r:   z_ClientContext.disconnect   sM    222222)$$&&&:<<!r   c                 &     | j         j        |i |S )a	  remote is the hook stub passed on to replace `ray.remote`.

        This sets up remote functions or actors, as the decorator,
        but does not execute them.

        Args:
            args: opaque arguments
            kwargs: opaque keyword arguments
        )r   remoter   argskwargss      r   rP   z_ClientContext.remote   s     tx////r   keyc                     |                                  rt          | j        |          S |dv rd S t          d          )N)is_initialized_internal_kv_initializedc                      dS NF rZ   r   r   <lambda>z,_ClientContext.__getattr__.<locals>.<lambda>   s    5 r   zBRay Client is not connected. Please connect by calling `ray.init`.)is_connectedgetattrr   r/   )r   rT   s     r   __getattr__z_ClientContext.__getattr__   sQ     	48S)))BBB = T  r   c                 F    | j         dS | j                                         S rY   )r   r\   r   s    r   r\   z_ClientContext.is_connected   s%    %5!..000r   c                     | j         t          d          dd lmc mc mc m}  |j        ddg|R i |\  }}|j        | _         |                     d           d| _	        |S )Nz/Trying to start two instances of ray via clientr   z	127.0.0.1i  z127.0.0.1:50051T)
r   r/   ray.util.client.server.serverrA   clientserverinit_and_servegrpc_serverr<   r   )r   rR   rS   ray_client_serverserver_handleaddress_infos         r   initz_ClientContext.init   s    <#MNNNAAAAAAAAAAAAAAA&F&7&F'
!%'
 '
 '
)/'
 '
#| %0&'''$(!r   c                     |                                   dd lmc mc mc m} | j        d S |                    | j        |           d | _        d S Nr   )r:   rb   rA   rc   rd   r   shutdown_with_server)r   _exiting_interpreterrg   s      r   shutdownz_ClientContext.shutdown   sp    AAAAAAAAAAAAAAA<F..t|=QRRRr   )NFNr   N)F)__name__
__module____qualname__r   strr   boolr   r   intr   r   r   r<   r9   r8   r:   rP   r^   r\   rj   ro   rZ   r   r   r   r      s       ) ) ) !%*."#J  %<@48J J JJ J 	J
 uS#X'J  J J J 89J "$sCx.1J 
c3hJ J J JX
1 
1 
1
c3h 
 
RV 
 
 
 
" " "
0 
0 
0	s 	 	 	 	1d 1 1 1 1
       r   r   c                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )
RayAPIStuba  This class stands in as the replacement API for the `import ray` module.

    Much like the ray module, this mostly delegates the work to the
    _client_worker. As parts of the ray API are covered, they are piped through
    here or on the client worker API.
    c                 f    t          j                    | _        t          | j        _        d| _        d S rY   )	threadinglocal_cxt_default_contexthandlerr   r`   s    r   r   zRayAPIStub.__init__   s)    O%%	,	#(   r   c                     	 | j                             d          S # t          $ r  t          | j         _        | j         j        cY S w xY w)Nr}   )r{   __getattribute__AttributeErrorr|   r}   r`   s    r   get_contextzRayAPIStub.get_context   sS    	%9--i888 	% 	% 	% 0DI9$$$$	%s    'AAc                 |    |                                  }|t                      | j        _        n|| j        _        |S N)r   r   r{   r}   )r   cxtold_cxts      r   set_contextzRayAPIStub.set_context   s:    ""$$; . 0 0DI #DIr   c                 <    |                                  t          k    S r   )r   r|   r`   s    r   
is_defaultzRayAPIStub.is_default   s    !!%555r   c                    | j         |                                 _          |                                 j        |i |}t          5  t                              | j        j                   d d d            n# 1 swxY w Y   |S r   )r   r   r<   _lock_all_contextsaddr{   r}   )r   rR   kw_argsconns       r   r<   zRayAPIStub.connect   s    151I.)t!!)4;7;; 	1 	1di/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   %A66A:=A:c                    t           5  t          |                                 k    r&t          D ]} |j        |i | t                      an |                                 j        |i | |                                 t          v r,t                              |                                            t          t                    dk    rt                       d d d            d S # 1 swxY w Y   d S rl   )	r   r|   r   r   r:   setremovelenr   )r   rR   r   r   s       r   r:   zRayAPIStub.disconnect   s1    
	2 
	24#3#3#5#555( 5 5C"CND4G4444 #-  ""-t?w???!!]22$$T%5%5%7%7888=!!Q&&/111
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2   CC%%C),C)c                 @     |                                  j        |i |S r   )r   rP   rQ   s      r   rP   zRayAPIStub.remote   s&    (t!!($9&999r   c                 P    |                                                      |          S r   )r   r^   )r   names     r   r^   zRayAPIStub.__getattr__   s"    !!--d333r   c                 @     |                                  j        |i |S r   )r   r\   rQ   s      r   r\   zRayAPIStub.is_connected  s&    .t!!.????r   c                      |                                  j        |i |}t          5  t                              | j        j                   d d d            n# 1 swxY w Y   |S r   )r   rj   r   r   r   r{   r}   )r   rR   rS   rets       r   rj   zRayAPIStub.init  s    %d  %t6v66 	1 	1di/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
s   %AAAc                    t           5  t          |                                 k    r&t          D ]} |j        |i | t                      an |                                 j        |i | |                                 t          v r,t                              |                                            t          t                    dk    rt                       d d d            d S # 1 swxY w Y   d S rl   )	r   r|   r   r   ro   r   r   r   r   )r   rR   rS   r   s       r   ro   zRayAPIStub.shutdown  s1    
	2 
	24#3#3#5#555( 2 2C CL$1&1111 #+  ""+T<V<<<!!]22$$T%5%5%7%7888=!!Q&&/111
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2r   N)rp   rq   rr   __doc__r   r   r   r   r<   r:   rP   r^   r\   rj   ro   rZ   r   r   rw   rw      s         ) ) )
% % %  6 6 6  2 2 2: : :4 4 4@ @ @  2 2 2 2 2r   rw   c                  l    t           5  t          t                    cddd           S # 1 swxY w Y   dS )z/Return the number of client connections active.N)r   r   r   rZ   r   r   num_connected_contextsr     sy     
 " "=!!" " " " " " " " " " " " " " " " " "s   )--)#loggingrK   ry   typingr   r   r   r   r   ray._private.ray_constants_privater1   ray._private.client_mode_hookr   r	   ray._private.ray_loggingr
   ray._private.utilsr   ray.job_configr   ray.util.annotationsr   	getLoggerrp   loggerr   r   r   Lockr   r|   rw   rD   r   rZ   r   r   <module>r      s    				     3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2        2 1 1 1 1 1 1 1 1 1 1 1 $ $ $ $ $ $ - - - - - -		8	$	$g g g g g g g gX 	 ">##  Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2h jll " " " " "r   