o
    ci                     @   s   d dl mZmZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 eddG dd	 d	eZeddG d
d deZeddG dd deZeddG dd deZdS )    )ABCabstractmethod)	dataclassfieldsN)DeploymentHandleSource)DEFAULTT)frozenc                   @   s>   e Zd ZU dZdZeed< ejZ	eed< e
ed	ddZdS )
InitHandleOptionsBasezInit options for each ServeHandle instance.

    These fields can be set by calling `.init()` on a handle before
    sending the first request.
    F_prefer_local_routing_sourcereturnc                 K   s   t N)NotImplementedError)clskwargs r   U/home/ubuntu/.local/lib/python3.10/site-packages/ray/serve/_private/handle_options.pycreate   s   zInitHandleOptionsBase.createN)r   r	   )__name__
__module____qualname____doc__r
   bool__annotations__r   UNKNOWNr   classmethodr   r   r   r   r   r   r	   	   s   
 r	   c                   @   s   e Zd ZedddZdS )InitHandleOptionsr   c                 K   sV   t | D ]}|| tjkr||= qd|vr$tjj d ur$tj	|d< | di |S )Nr   r   )
listkeysr   VALUErayservecontext_get_internal_replica_contextr   REPLICA)r   r   kr   r   r   r      s   
zInitHandleOptions.createN)r   r   )r   r   r   r   r   r   r   r   r   r      s    r   c                   @   sD   e Zd ZU dZdZeed< dZeed< dZe	ed< e
dd	d
ZdS )DynamicHandleOptionsBasezyDynamic options for each ServeHandle instance.

    These fields can be changed by calling `.options()` on a handle.
    __call__method_name multiplexed_model_idFstreamr   c                 K   s   d S r   r   )selfr   r   r   r   copy_and_update8   s   z(DynamicHandleOptionsBase.copy_and_updateN)r   r&   )r   r   r   r   r(   strr   r*   r+   r   r   r-   r   r   r   r   r&   -   s   
 r&   c                   @   s   e Zd ZdddZdS )DynamicHandleOptionsr   c                 K   s^   i }t | D ]!}|j|vs||j tjkrt| |j||j< q||j ||j< qtdi |S )Nr   )r   namer   r   getattrr/   )r,   r   
new_kwargsfr   r   r   r-   ?   s   z$DynamicHandleOptions.copy_and_updateN)r   r/   )r   r   r   r-   r   r   r   r   r/   =   s    r/   )abcr   r   dataclassesr   r   r    ray.serve._private.commonr   ray.serve._private.utilsr   r	   r   r&   r/   r   r   r   r   <module>   s    