
    &`iC$                         d dl Z d dlZd dlmZ d dlmZ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 d dlmZ d d	lmZ  ej        d
          Z G d d          Zd ZdS )    N)deepcopy)AnyDictListOptional)crc32)	BaseModel)DeploymentConfig)DeploymentOptionUpdateTypeget_random_string)AutoscalingConfig)DeploymentVersionz	ray.servec                   D   e Zd Z	 	 	 	 ddee         dedee         deeeeef                           dee         dee	         dee         fd	Z
e	 ddee         fd
            Zde	fdZdedefdZd Zd Zd Zd ZdefdZedefd            Zdee         defdZdS )r   Ncode_versiondeployment_configray_actor_optionsplacement_group_bundlesplacement_group_strategymax_replicas_per_noderoute_prefixc                 *   |5t          |t                    s t          dt          |           d          |t	                      | _        n|| _        || _        || _        || _        || _	        || _
        || _        |                                  d S )Nzcode_version must be str, got .)
isinstancestr	TypeErrortyper   r   r   r   r   r   r   r   compute_hashes)selfr   r   r   r   r   r   r   s           n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/serve/_private/version.py__init__zDeploymentVersion.__init__   s     #J|S,I,I#RT,=O=ORRRSSS 1 3 3D ,D "3!2'>$(@%%:"(    c                 h    t          |          }||_        ||_        |                                 |S N)r   r   r   r   )clsdeployment_versionr   r   version_copys        r   from_deployment_versionz)DeploymentVersion.from_deployment_version,   s:       233):&$0!##%%%r!   returnc                     | j         S r#   )_hashr   s    r   __hash__zDeploymentVersion.__hash__6   s
    zr!   otherc                 P    t          |t                    sdS | j        |j        k    S )NF)r   r   r*   )r   r-   s     r   __eq__zDeploymentVersion.__eq__9   s)    %!233 	5zU[((r!   c                     | j         |j         k    p/| j        |j        k    p| j        |j        k    p| j        |j        k    S )zkDetermines whether the new version requires actors of the current version to
        be restarted.
        )r   ray_actor_options_hashplacement_group_options_hashr   r   new_versions     r   requires_actor_restartz(DeploymentVersion.requires_actor_restart>   sX    
 !99 O*k.PPO078O )[-NN	
r!   c                 "    | j         |j         k    S )zhDetermines whether the new version requires calling reconfigure() on the
        replica actor.
        )reconfigure_actor_hashr3   s     r   requires_actor_reconfigurez,DeploymentVersion.requires_actor_reconfigureJ   s     *k.PPPr!   c                 6    | j         j        |j         j        k    S )zDetermines whether lightweightly updating an existing replica to the new
        version requires broadcasting through long poll that the running replicas has
        changed.
        )r   max_ongoing_requestsr3   s     r   requires_long_poll_broadcastz.DeploymentVersion.requires_long_poll_broadcastP   s!     "7,AB	
r!   c                    t          | j        pi           }t          |          | _        i }| j        
| j        |d<   | j        
| j        |d<   t          |          }t          |          | _        t          | j                  }t          ||                     t          j
        g          z             | _        t          | j                            d          |z   |z   t          | j                                      d          z   |z   |                     t          j        t          j
        g          z             | _        d S )Nbundlesstrategyzutf-8)
_serializer   r   r1   r   r   r2   r   _get_serialized_optionsr   NeedsActorReconfigurer7   r   encoder   r   NeedsReconfigurer*   )r   serialized_ray_actor_options combined_placement_group_options"serialized_placement_group_optionsserialized_route_prefixs        r   r   z DeploymentVersion.compute_hashesZ   sa   '1$2H2NB'O'O$&+,H&I&I#+-('3:>:V,Y7(4;?;X,Z8-7,.
 .
* -22T,U,U) #-T->"?"? ',#**+AB '
 '
# $$W--*+01 $,--44W==> &	&
 **.?.D 

 



r!   c                 
   t          | j        | j                                        t	          j        | j                  | j        t	          j        | j                  nd| j        | j        nd| j	        | j	        nd          S )N r   )r   r   r   r   r   r   )
DeploymentVersionProtor   r   to_protojsondumpsr   r   r   r   r+   s    r   rK   zDeploymentVersion.to_proto   s    %*"4==??"j)?@@+7 %)Jt/K$L$L$L,8 &*%B%B)5 #'"<"<
 
 
 	
r!   protoc                 
   t          |j        t          j        |j                  t          j        |j                  |j        rt          j        |j                  nd |j	        r|j	        nd |j
        r|j
        nd           S )N)r   placement_group_versionr   )r   r   r
   
from_protor   rL   loadsr   r   rP   r   )r$   rN   s     r   rQ   zDeploymentVersion.from_proto   s     '(?@@Ju.// 0
58999 271NX--TX 05/JT++PT
 
 
 	
r!   update_typesc                    i }t          | j        d          r| j        j        n| j        j        }|                                D ]\  }}|j        j                            d          }||v rt          | j        |          ||<   t          ||         t                    r"||                             ddh          ||<   }t          ||         t                    r||                                         ||<   d|v r|d                             dd           t          | j        j        t                    r#d	|v r|d	= | j        j        t!          |          z   S t!          |          S )
zReturns a serialized dictionary containing fields of a deployment config that
        should prompt a deployment version update.
        model_fieldsupdate_typemetrics_interval_slook_back_period_s)includerequest_router_config_serialized_request_router_clsNuser_config)hasattrr   rU   
__fields__items
field_infoextragetgetattrr   r   dictr	   popr\   bytesr?   )r   rS   reconfigure_dictfieldsoption_namefieldoption_weights          r   r@   z)DeploymentVersion._get_serialized_options   s    
 t-~>>3D"//'2 	
 #),,.. 	Y 	YK!,266}EEM,,07*K1 1 - .{;=NOO Y4D[4Q4V4V!57K L 5W 5 5$[11   0 =yII Y4D[4Q4V4V4X4X$[1 #&66645990$  
 t-95AA	U!111 /)5
CS8T8TTT*+++r!   )NNNNr#   )__name__
__module____qualname__r   r   r
   r   r   floatintr    classmethodr'   r,   r   boolr/   r5   r8   r;   r   rf   rK   rJ   rQ   r   r@    r!   r   r   r      s        EI26/3&* sm , $D>	
 "*$tCJ/?*@!A #+3-  (} sm   6 RV BJ3-   [#    )C )D ) ) ) )


 

 

Q Q Q
 
 
(
 (
 (
T
% 
 
 
 
" 
5 
 
 
 [
$-, !;<-,	-, -, -, -, -, -,r!   r   c                 ^    t                               t          j        | d                    S )NT)	sort_keys)r   rB   rL   rM   )json_objects    r   r?   r?      s#    ::dj===>>>r!   )rL   loggingcopyr   typingr   r   r   r   zlibr   ray._common.pydantic_compatr	   ray.serve._private.configr
   ray.serve._private.utilsr   r   ray.serve.configr   ray.serve.generated.serve_pb2r   rJ   	getLoggerloggerr?   rs   r!   r   <module>r      s           , , , , , , , , , , , ,       1 1 1 1 1 1 6 6 6 6 6 6 R R R R R R R R . . . . . . U U U U U U		;	'	'E, E, E, E, E, E, E, E,P? ? ? ? ?r!   