o
    $iC                     @   sJ  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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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dZdedefd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           	   	   C   sd   |du ri }t |trt|}n	t |tstd||_| | | |t 	 |||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_args r"   \/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/ray/serve/_private/deploy_utils.pyget_deploy_args   s"   


r$   r   r   r   r   app_namec              
   K   sr   t |}|j}	t|| }
t|tr!tj	t
|d }tt| |d |	||
|t
t d ||d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   r"   r"   r#   deploy_args_to_deployment_info8   s0   


r4   
app_configc                 C   sX   dd | j D }dd | j D }tj| j| j| j| j||dddd}t	|
 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                 S   s   g | ]}t |jtr|jqS r"   )r   request_router_configr   ).0
deploymentr"   r"   r#   
<listcomp>i   s    
z(get_app_code_version.<locals>.<listcomp>c                 S   s&   g | ]}t |jtr|jd dqS )policyN)r   autoscaling_configr   get)r7   r   r"   r"   r#   r9   n   s    
)import_pathruntime_envargsautoscaling_policydeployment_autoscaling_policiesrequest_router_configsT)	sort_keyszutf-8)deploymentsjsondumpsr=   r>   r?   r@   encodehashlibsha1	hexdigest)r5   rB   rA   encodedr"   r"   r#   get_app_code_version`   s&   	rL   )FNNNNN)NFN)rH   rE   loggingr2   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$   r4   rL   r"   r"   r"   r#   <module>   sv    
	
+
	
(