
    .`i-                        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mZmZ d dlZd dlmZ d dlmZ d d	lm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  erd dl!m"Z" d dl#m$Z$ e G d d                      Z% G d d          Z& G d de j'                  Z(e(j)        ej*        e(j+        ej,        e(j-        ej.        e(j/        ej,        e(j0        ej1        e(j2        ej*        iZ3dS )    N)deque)CallableMapping)	dataclass)partial)TYPE_CHECKINGAnyOptional)MultiModalFeatureSpec)PoolingParams)SamplingParams)&length_from_prompt_token_ids_or_embeds)EngineCoreEventEngineCoreEventTypeEngineCoreRequestFinishReason)StructuredOutputRequest)ConstantList)LoRARequest)	BlockHashc                       e Zd ZU dZee         dz  ed<   ee         dz  ed<   eed<   eed<   e	dz  ed<   e
dd            ZdS )StreamingUpdatezLightweight data for streaming session continuation.

    Contains only the fields needed to update an existing streaming session
    with new input data.
    Nmm_featuresprompt_token_ids
max_tokensarrival_timesampling_paramsrequestRequestreturnStreamingUpdate | Nonec                 f    |j         sd S  | |j        |j        |j        |j        |j                  S )N)r   r   r   r   r   )	resumabler   r   r   r   r   )clsr   s     c/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/request.pyfrom_requestzStreamingUpdate.from_request.   sI      	4s+$5) -#3
 
 
 	
    )r   r   r    r!   )__name__
__module____qualname____doc__listr   __annotations__intfloatr   classmethodr&    r'   r%   r   r       s           +,t33333i$&&&&OOO#d****	
 	
 	
 [	
 	
 	
r'   r   c            !          e Zd Z	 	 	 	 	 	 	 	 	 	 d,dedee         dz  dedz  dedz  dedz  d	ed
edz  de	j
        dz  dee         dz  ded         dedz  dedeeef         dz  ded ged         f         dz  deddf dZededed ged         f         dz  dd fd            Zdeee         z  ddfdZedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd             Zdefd!Zdefd"Zdedz  fd#Zd$edefd%Z 	 d-d&e!d'edz  ddfd(Z"dee#         dz  fd)Z$d*d defd+Z%dS ).r   r   NF
request_idr   r   pooling_paramseos_token_idclient_indexr   prompt_embedsr   lora_requestr   
cache_saltprioritytrace_headersblock_hasherr   r#   r    c                 |   || _         || _        || _        || _        || _        || _        |
| _        t          j        |          | _	        ||nt          j
                    | _        t          j        | _        g | _        d | _        d | _        |d| _        ne|T|j        J |j        | _        | j	        t          j        | _        |j        |j                            d          | _        nt-          d          || _        || _        t3          ||          | _        g | _        | j        | j                                        n
dg| j        z  | _        d| _        d| _        g | _         d| _!        || _"        |	pg | _#        tI          | j                  | _%        tI          | j                  | _&        || _'        d| _(        d| _)        d| _*        d| _+        g | _,        d | _-        |.t]          ||           | _-        | -                                | _,        | /                                | _0        || _1        d | _2        d S )N   kv_transfer_paramsz6sampling_params and pooling_params can't both be unsetr   F)3r3   r6   r:   r   r4   r5   r8   r   from_sampling_paramsstructured_output_requesttimer   RequestStatusWAITINGstatuseventsstop_reasonr?   r   WAITING_FOR_FSM
extra_argsget
ValueErrorr   r7   r   num_prompt_tokens_output_token_idscopy_all_token_idsnum_output_placeholdersdiscard_latest_async_tokensspec_token_idsnum_computed_tokensr9   r   r   output_token_idsall_token_idsr;   num_cached_tokensnum_nans_in_logitsnum_preemptionsnum_external_computed_tokensblock_hashesget_hash_new_full_blocksr   get_skip_reading_prefix_cacheskip_reading_prefix_cacher#   streaming_queue)selfr3   r   r   r4   r5   r6   r   r7   r   r8   r9   r:   r;   r<   r#   s                   r%   __init__zRequest.__init__<   sg   $ %( .,(()@)U*
 *
& -9,DLL$)++#+-/-1 :>%DOO("-999-8DO-9+;)5*9*D*H*H(+ +' UVVV 0*!Gm"
 "
 -/ $0 !&&(((t-- 	 ()$+0()+#$ &0 ',"
 !-T-C D D)$*=>>* "$ #$  ! -.)-/NR%#,3L$,G,GD) $ = = ? ?D)-)K)K)M)M& #EIr'   r   c                      | |j         |j        |j        |j        |j        |j        |j        |j        |j        |j	        |j
        |j        |j        ||j                  S )N)r3   r6   r   r7   r   r   r4   r5   r   r8   r9   r:   r;   r<   r#   )r3   r6   r   r7   r   r   r4   r5   r   r8   r9   r:   r;   r#   )r$   r   r<   s      r%   from_engine_core_requestz Request.from_engine_core_request   st     s) -$5!/+#3"1 - - -)%!/%'
 
 
 	
r'   	token_idsc                 l   t          |t                    r5| j                            |           | j                            |           n4| j                            |           | j                            |           | j        .| j                            |                                            d S d S N)
isinstancer.   rN   appendrP   extendr\   r[   )r`   rd   s     r%   append_output_token_idszRequest.append_output_token_ids   s     i%% 	2")))444&&y1111")))444&&y111(4$$T%B%B%D%DEEEEE 54r'   c                     | j         d uS rf   )rB   r`   s    r%   use_structured_outputzRequest.use_structured_output   s    -T99r'   c                 *    t          | j                  S rf   )lenrP   rl   s    r%   
num_tokenszRequest.num_tokens   s    4&'''r'   c                 T    t          | j                  t          | j                  z   S rf   )ro   rP   rS   rl   s    r%   num_tokens_with_speczRequest.num_tokens_with_spec   s#    4&''#d.A*B*BBBr'   c                 *    t          | j                  S rf   )ro   rN   rl   s    r%   num_output_tokenszRequest.num_output_tokens   s    4)***r'   c                 *    t          | j                  S rf   )ro   r   rl   s    r%   num_encoder_inputszRequest.num_encoder_inputs   s    4#$$$r'   c                     | j         dk    S )Nr   )rv   rl   s    r%   has_encoder_inputszRequest.has_encoder_inputs   s    &**r'   c                     | j         | j         j        | j         j        S | j        | j        j        | j        j        S dS )NF)r   r^   r4   rl   s    r%   r]   z%Request.get_skip_reading_prefix_cache   sI     ,$>J'AA+#=I&@@ur'   c                 @    t                               | j                  S rf   )rD   is_finishedrF   rl   s    r%   r{   zRequest.is_finished   s    ((555r'   c                 @    t                               | j                  S rf   )rD   get_finished_reasonrF   rl   s    r%   r}   zRequest.get_finished_reason   s    00===r'   input_idc                 d    |t          | j                  k     sJ | j        |         j        j        S rf   )ro   r   mm_positionget_num_embeds)r`   r~   s     r%   get_num_encoder_embedszRequest.get_num_encoder_embeds   s2    #d.//////)5DDr'   
event_type	timestampc                 `    | j                             t          j        ||                     d S rf   )rG   rh   r   	new_event)r`   r   r   s      r%   record_eventzRequest.record_event  s-    
 	?4ZKKLLLLLr'   c                 6    | j         sd S | j         g c}| _         |S rf   )rG   )r`   rG   s     r%   take_eventszRequest.take_events	  s&    { 	4"k2r'   otherc                    | j         |j         k    r| j         |j         k     S | j        |j        k    r| j        |j        k     S | j        |j        k    r| j        |j        k     S t          |           t          |          k     S )z|
        Compare two requests based on priority, arrival time, and request ID.
        Used in priority scheduling.
        )r:   r   r3   id)r`   r   s     r%   __lt__zRequest.__lt__  s{    
 =EN**=5>11 222$u'999?e...?U%555$xx"U))##r'   )
r   NNNNNr   NNFrf   )&r(   r)   r*   strr,   r.   r   r   r/   torchTensorr   r
   r   r   boolra   r0   r   rc   rj   propertyrm   rp   rr   rt   rv   rx   r]   r{   r   r}   r   r   r   r   r   r   r1   r'   r%   r   r   ;   s        %)-1:>04!%26HL!oJ oJoJ s)d*oJ ($.	oJ
 &,oJ DjoJ oJ dloJ |d*oJ /047oJ }-oJ $JoJ oJ sCx(4/oJ 	{D,==>EoJ  !oJ" 
#oJ oJ oJ oJb 
"
 	{D,==>E
 
	
 
 
 [
.Fc?F 
F F F F :t : : : X: (C ( ( ( X( Cc C C C XC +3 + + + X+ %C % % % X% +D + + + X+t    6T 6 6 6 6>\D%8 > > > >Es Es E E E E #'M M'M 4<M 
	M M M MT/2T9    $I $$ $ $ $ $ $ $r'   r   c                      e Zd ZdZ ej                    Z ej                    Z ej                    Z ej                    Z	 ej                    Z
 ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    ZdefdZedd defd            Zedd dedz  fd            ZdS )rD   zStatus of a request.r    c                     | j         S rf   )namerl   s    r%   __str__zRequestStatus.__str__.  s
    yr'   rF   c                 "    | t           j        k    S rf   )rD   	PREEMPTEDrF   s    r%   r{   zRequestStatus.is_finished1  s    ///r'   Nc                 6    t                               |           S rf   )_FINISHED_REASON_MAPrK   r   s    r%   r}   z!RequestStatus.get_finished_reason5  s    #''///r'   )r(   r)   r*   r+   enumautorE   rI   WAITING_FOR_REMOTE_KVSWAITING_FOR_STREAMING_REQRUNNINGr   FINISHED_STOPPEDFINISHED_LENGTH_CAPPEDFINISHED_ABORTEDFINISHED_IGNOREDFINISHED_ERRORr   r   staticmethodr   r{   r   r}   r1   r'   r%   rD   rD     s-       dikkGdikkO&TY[[ )	dikkG	I !ty{{&TY[[ ty{{ ty{{TY[[N     0O 0 0 0 0 \0 0O 0t8K 0 0 0 \0 0 0r'   rD   )4r   rC   collectionsr   collections.abcr   r   dataclassesr   	functoolsr   typingr   r	   r
   r   vllm.multimodal.inputsr   vllm.pooling_paramsr   vllm.sampling_paramsr   
vllm.utilsr   vllm.v1.enginer   r   r   r   !vllm.v1.structured_output.requestr   vllm.v1.utilsr   vllm.lora.requestr   vllm.v1.core.kv_cache_utilsr   r   r   IntEnumrD   r   STOPr   LENGTHr   ABORTr   r   ERRORr   r   r1   r'   r%   <module>r      sI           - - - - - - - - ! ! ! ! ! !       / / / / / / / / / /  8 8 8 8 8 8 - - - - - - / / / / / / = = = = = =            F E E E E E & & & & & & 6------555555 
 
 
 
 
 
 
 
4_$ _$ _$ _$ _$ _$ _$ _$D0 0 0 0 0DL 0 0 0D "L$5(,*="L$6"L$7 ,"4+\->   r'   