
    &`i%                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZmZmZm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mZ d d	lmZ  ej        e          Z G d
 de          Z G d de          Z dS )    N)ABCabstractmethod)wraps)Callable	CoroutineOptionalUnion)TaskCancelledError)ReplicaQueueLengthInfoRequestMetadata)SERVE_LOGGER_NAME)calculate_remaining_timeoutgenerate_request_id)RequestCancelledErrorc                   T   e Zd Zedee         fd            Zedee         fd            Zed             Z	ed             Z
ed             Zedefd	            Zed
             Zedee         dej        fd            Zedej        fd            Zedej        fd            ZdS )ReplicaResultreturnc                    K   t           NNotImplementedErrorselfs    u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/serve/_private/replica_result.pyget_rejection_responsez$ReplicaResult.get_rejection_response         !!    	timeout_sc                     t           r   r   r   r   s     r   getzReplicaResult.get       !!r   c                    K   t           r   r   r   s    r   	get_asynczReplicaResult.get_async   r   r   c                     t           r   r   r   s    r   __next__zReplicaResult.__next__"   r"   r   c                    K   t           r   r   r   s    r   	__anext__zReplicaResult.__anext__&   r   r   callbackc                     t           r   r   r   r)   s     r   add_done_callbackzReplicaResult.add_done_callback*   r"   r   c                     t           r   r   r   s    r   cancelzReplicaResult.cancel.   r"   r   c                     t           r   r   r    s     r   to_object_refzReplicaResult.to_object_ref2   r"   r   c                    K   t           r   r   r   s    r   to_object_ref_asyncz!ReplicaResult.to_object_ref_async6   r   r   c                     t           r   r   r   s    r   to_object_ref_genzReplicaResult.to_object_ref_gen:   s
     "!r   N)__name__
__module____qualname__r   r   r   r   floatr!   r$   r&   r(   r   r,   r.   ray	ObjectRefr0   r2   ObjectRefGeneratorr4    r   r   r   r      s       "h7M.N " " " ^" "Xe_ " " " ^" " " ^" " " ^" " " ^" "( " " " ^" " " ^" "x "3= " " " ^" "3= " " " ^" "3#9 " " " ^" " "r   r   c                   d   e Zd Zdddeej        ej        f         dedefdZ	dee
ef         fdZed	ee         fd
            Zedee         fd            Zed             Zed             Zed             Zde
fdZd Zdddee         d	ej        fdZd	ej        fdZd	ej        fdZdS )ActorReplicaResultF)with_rejectionobj_ref_or_genmetadatar?   c                4    d  _         d  _        |j         _        |j         _        t          j                     _        | _	        d  _
        t          |t          j                  r| _        n| _          j        r j        
J d            t          j        j                                        j        r^t%                       _        t          j        j                            j         j                                          fd           d S d S )Nz<An ObjectRefGenerator must be passed for streaming requests.c                 b    t           j        j                            j        j                  S r   )r9   servecontext_remove_in_flight_request_internal_request_id_response_id)_request_contextr   s    r   <lambda>z-ActorReplicaResult.__init__.<locals>.<lambda>c   s'    #)+EE#8$:K  r   )_obj_ref_obj_ref_genis_streaming_is_streaming
request_id_request_id	threadingLock_object_ref_or_gen_sync_lock_with_rejection_rejection_response
isinstancer9   r;   rD   rE   _get_serve_request_contextcancel_on_parent_request_cancelr   rH   _add_in_flight_requestrG   r,   )r   r@   rA   r?   rJ   s   `   @r   __init__zActorReplicaResult.__init__B   s:    26>B#+#8 ( 3,5N,<,<)-#' nc&<== 	+ .D*DM 	N!--M .-- )+FFHH: 
	 3 5 5DI444d6G   ""        
	 
	r   fc                      t                      fd            }t                      fd            }t          j                   r|S |S )Nc                 v    	  | g|R i |S # t           j        j        $ r t          | j                  w xY wr   )r9   
exceptionsr
   r   rQ   r   argskwargsr\   s      r   wrapperz5ActorReplicaResult._process_response.<locals>.wrapperi   sY    >q///////>4 > > >+D,<===>s    )8c                    K   	  | g|R i | d {V S # t           j        j        $ r t          j                    w xY wr   )r9   r_   r
   asyncioCancelledErrorr`   s      r   async_wrapperz;ActorReplicaResult._process_response.<locals>.async_wrapperp   sm      /Qt5d555f555555555>4 / / /,.../s    (?)r   inspectiscoroutinefunction)r\   rc   rg   s   `  r   _process_responsez$ActorReplicaResult._process_responseh   sw    	q	> 	> 	> 	> 
	> 
q	/ 	/ 	/ 	/ 
	/ &q)) 	  Nr   r   c                   K   | j         r| j        
J d            	 | j        >| j                                         d{V  d{V }t	          j        |          | _        | j        S # t          j        $ r6}t          	                    d           | 
                                 |dd}~wt          $ r t          j                    w xY w)z?Get the queue length info from the replica to handle rejection.NzNget_rejection_response() can only be called when request rejection is enabled.z?Cancelling request that has already been assigned to a replica.)rU   rM   rV   r(   pickleloadsre   rf   loggerinfor.   r
   )r   responsees      r   r   z)ActorReplicaResult.get_rejection_response|   s       	\%)%6%B%B[ &C%BB	+'/(,(9(C(C(E(E"E"E"E"E"E"EFFFFFF+1<+A+A(++% 	 	 	KKQ   KKMMM! 	+ 	+ 	+(***	+s   AA( (C	71B((!C	r   c                     | j         r
J d            t          j                    }|                     |          }t          ||t          j                              }t	          j        ||          S )Nz7get() can only be called on a unary ActorReplicaResult.r   )r   start_time_scurr_time_s)timeout)rO   timer0   r   r9   r!   )r   r   rt   
object_refremaining_timeout_ss        r   r!   zActorReplicaResult.get   s     "	E 	ED	E 	E" y{{'')'<<
9%	
 
 

 wz+>????r   c                 h   K   | j         r
J d            |                                  d {V  d {V S )Nz=get_async() can only be called on a unary ActorReplicaResult.)rO   r2   r   s    r   r$   zActorReplicaResult.get_async   sd       "	K 	KJ	K 	K" !44666666667777777r   c                 ~    | j         s
J d            | j                                        }t          j        |          S )Nz<next() can only be called on a streaming ActorReplicaResult.)rO   rM   r&   r9   r!   r   next_obj_refs     r   r&   zActorReplicaResult.__next__   sN     	J 	JI	J 	J (1133w|$$$r   c                 v   K   | j         s
J d            | j                                         d {V }| d {V S )NzA__anext__() can only be called on a streaming ActorReplicaResult.)rO   rM   r(   r|   s     r   r(   zActorReplicaResult.__anext__   sl       	O 	ON	O 	O ".88::::::::!!!!!!!!r   r)   c                     | j         .| j                                                             |           d S | j                            |           d S r   )rM   	completed_on_completedrL   r+   s     r   r,   z$ActorReplicaResult.add_done_callback   sP    (''))77AAAAAM''11111r   c                 |    | j         t          j        | j                    d S t          j        | j                   d S r   )rM   r9   r.   rL   r   s    r   r.   zActorReplicaResult.cancel   s<    (Jt()))))Jt}%%%%%r   Nrs   c                   | j         r
J d            | j        5  | j        E| j                            |          }|                                rt          d          || _        d d d            n# 1 swxY w Y   | j        S )Nz?to_object_ref can only be called on a unary ReplicaActorResult.rs   z!Timed out resolving to ObjectRef.)rO   rT   rL   rM   
_next_syncis_nilTimeoutError)r   r   obj_refs      r   r0   z ActorReplicaResult.to_object_ref   s    "	M 	ML	M 	M" . 	( 	(}$+666KK>>## L&'JKKK '	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( }s   AA22A69A6c                   K   | j         r
J d            	 | j        | j        S | j                            d          }|rj	 | j        $| j                                         d {V | _        | j        | j                                         S # | j                                         w xY wt          j        d           d {V  )NzEto_object_ref_async can only be called on a unary ReplicaActorResult.TF)blockingr   )	rO   rL   rT   acquirerM   r(   releasere   sleep)r   acquireds     r   r2   z&ActorReplicaResult.to_object_ref_async   s      "	S 	SR	S 	S"&	'}(}$8@@%@PPH 
'@},.2.?.I.I.K.K(K(K(K(K(K(K=5==????D5==???? mA&&&&&&&&&!	's   1B B'c                 2    | j         s
J d            | j        S )NzGto_object_ref_gen can only be called on a streaming ReplicaActorResult.)rO   rM   r   s    r   r4   z$ActorReplicaResult.to_object_ref_gen  s1    	U 	UT	U 	U   r   )r5   r6   r7   r	   r9   r:   r;   r   boolr[   r   r   rj   r   r   r   r8   r!   r$   r&   r(   r,   r.   r0   r2   r4   r<   r   r   r>   r>   A   s         %$ $ $cmS-CCD$ "$
 $ $ $ $LU8Y#67    ( +h7M.N + + + +, @Xe_ @ @ @ @ 8 8 8 % % % " " "2( 2 2 2 2& & & =A   (5/ S]    &%'3= %' %' %' %'N!3#9 ! ! ! ! ! !r   r>   )!re   rh   loggingrl   rR   rw   abcr   r   	functoolsr   typingr   r   r   r	   r9   ray.exceptionsr
   ray.serve._private.commonr   r   ray.serve._private.constantsr   ray.serve._private.utilsr   r   ray.serve.exceptionsr   	getLoggerrn   r   r>   r<   r   r   <module>r      sw            # # # # # # # #       7 7 7 7 7 7 7 7 7 7 7 7 



 - - - - - - M M M M M M M M : : : : : : U U U U U U U U 6 6 6 6 6 6		,	-	-)" )" )" )" )"C )" )" )"XF! F! F! F! F! F! F! F! F! F!r   