
    &`iC                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZ d dl	Z	d dl
Z	d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ  ej        e          Z	 	 	 	 	 	 dd	ed
ededeeeeeef         f                  dee         dee         dee         dee         defdZ	 	 	 ddedededeeef         dee         dedee         defdZdedefdZdS )    N)AnyDictOptionalUnion)DeploymentID)DeploymentConfigReplicaConfig)SERVE_LOGGER_NAME)DeploymentInfo)ServeApplicationSchemaFnamereplica_configingressdeployment_configversionroute_prefix!serialized_autoscaling_policy_defserialized_request_router_clsreturnc           	      \   |i }t          |t                    rt          j        |          }n$t          |t                    st	          d          ||_        | |                                |                                |t          j                    	                                |||d}|S )zs
    Takes a deployment's configuration, and returns the arguments needed
    for the controller to deploy it.
    Nz2config must be a DeploymentConfig or a dictionary.)deployment_namedeployment_config_proto_bytesreplica_config_proto_bytesr   deployer_job_idr   r   r   )

isinstancedictr   	parse_obj	TypeErrorr   to_proto_bytesrayget_runtime_context
get_job_id)	r   r   r   r   r   r   r   r   controller_deploy_argss	            s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/serve/_private/deploy_utils.pyget_deploy_argsr%      s      #T** N,67HII)+;<< NLMMM '  ):)I)I)K)K&4&C&C&E&E$244??AA-N)F	 	 "!    r   r   r   r   app_namec                    t          j        |          }|j        }	t          j        ||                                          }
t          |t                    rJt          j        	                    t                              |d                                                    }t          t          | |                                          |	||
|t          t!          j                    dz            ||          S )z}Takes deployment args passed to the controller after building an application and
    constructs a DeploymentInfo object.
    little)r   r'   i  )
actor_namer   r   r   r   start_time_msr   r   )r   from_proto_bytesr   r	   needs_pickler   bytesr    JobIDfrom_intint
from_byteshexr   r   to_replica_actor_class_nametime)r   r   r   r   r'   r   r   kwargsr   r   r   s              r$   deploy_args_to_deployment_infor7   8   s     )9:WXX'G"3"$5$B$B$D$D N
 /5)) ),,NN?H55
 

#%% 	  8
 
 

%
%
'
'+%'$)++,--!   r&   
app_configc           	         d | j         D             }d | j         D             }t          j        | j        | j        | j        | j        ||dd                              d          }t          j	        |          
                                S )zReturns the code version of an application.

    Args:
        app_config: The application config.

    Returns: a hash of the import path and (application level) runtime env representing
            the code version of the application.
    c                 P    g | ]#}t          |j        t                    |j        $S  )r   request_router_configr   ).0
deployments     r$   
<listcomp>z(get_app_code_version.<locals>.<listcomp>i   s>       j6==(  r&   c                 x    g | ]7}t          |j        t                    |j                            d d          8S )policyN)r   autoscaling_configr   get)r=   r   s     r$   r?   z(get_app_code_version.<locals>.<listcomp>n   sO     ' ' '':DAA',004@@' ' 'r&   )import_pathruntime_envargsautoscaling_policydeployment_autoscaling_policiesrequest_router_configsT)	sort_keyszutf-8)deploymentsjsondumpsrD   rE   rF   rG   encodehashlibsha1	hexdigest)r8   rI   rH   encodeds       r$   get_app_code_versionrS   `   s     $0  
' '!+!7' ' '#
 j%1%1O #-"?/N&<
	
 
	
    fWoo  <  **,,,r&   )FNNNNN)NFN)rO   rL   loggingr5   typingr   r   r   r   r    ray.util.serialization_addonsray.serve._private.commonr   ray.serve._private.configr   r	   ray.serve._private.constantsr
   "ray.serve._private.deployment_infor   ray.serve.schemar   	getLoggerloggerstrboolr.   r%   r7   rS   r;   r&   r$   <module>r`      s0       - - - - - - - - - - - - 



 $ $ $ $ 2 2 2 2 2 2 E E E E E E E E : : : : : : = = = = = = 3 3 3 3 3 3		,	-	- KO!"&9=59#" #"
#"!#" #"  &6S#X&F GH	#"
 c]#" 3-#" (0#" $,E?#" 
#" #" #" #"V #"&% %%#(% !&% 3:&	%
 sm% % 3-% % % % %P!-%; !- !- !- !- !- !- !-r&   