o
    )iM*                     @   s  d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZmZmZmZ er2d dlmZmZ G dd deZG dd	 d	eZG d
d deZeeeeef Z	 dedee fddZdedee fddZedeeddZedeeddZG dd deeeef Zeeef Z	 G dd deZ			d6dee  deee   dee dee def
ddZ!G dd  d eZ"	d7d!e
j#dee de"fd"d#Z$eee"d$f Z%	 G d%d& d&eZ&eee"d$f Z'	 ee%e&f Z(	 ed'eed(Z)ed)eed(Z*	d7d*e)d+ee* d,ee+eef  dee)e*f fd-d.Z,	d7d/ee) d0eee*  d,eeee+eef  e+eef f  deee)e*f  fd1d2Z-d3eee)e*f  dee.e)ee* f  fd4d5Z/dS )8    )Iterable)TYPE_CHECKINGAnyGenericLiteralOptionalUnioncastN)NotRequired	TypedDictTypeIsTypeVar)MultiModalDataDictMultiModalInputsc                   @   sL   e Zd ZU dZeed< 	 ed ed< 	 eeeef  ed< 	 ee ed< dS )
TextPromptzSchema for a text prompt.promptr   multi_modal_datamm_processor_kwargs
cache_saltN)	__name__
__module____qualname____doc__str__annotations__r
   dictr    r   r   \/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/inputs/data.pyr      s   
 r   c                   @   sb   e Zd ZU dZee ed< 	 eee  ed< 	 ed ed< 	 eee	e
f  ed< 	 ee	 ed< dS )	TokensPromptzSchema for a tokenized prompt.prompt_token_idstoken_type_idsr   r   r   r   N)r   r   r   r   listintr   r
   r   r   r   r   r   r   r   r   '   s   
 r   c                   @   s*   e Zd ZU dZejed< 	 ee ed< dS )EmbedsPromptz2Schema for a prompt provided via token embeddings.prompt_embedsr   N)	r   r   r   r   torchTensorr   r
   r   r   r   r   r   r#   D   s   
 
r#   r   returnc                 C   s   t | tod| v od| vS Nr   r$   
isinstancer   r   r   r   r   is_tokens_prompti      r,   c                 C   s   t | tod| vod| v S r(   r)   r+   r   r   r   is_embeds_promptn   r-   r.   _T1_coT)bounddefault	covariant_T2_coc                   @   s:   e Zd ZU dZeed< ee ed< ee	e
ef  ed< dS )ExplicitEncoderDecoderPromptaw  
    Represents an encoder/decoder model input prompt,
    comprising an explicit encoder prompt and a decoder prompt.

    The encoder and decoder prompts, respectively, may be formatted
    according to any of the
    [`SingletonPrompt`][vllm.inputs.data.SingletonPrompt] schemas,
    and are not required to have the same schema.

    Only the encoder prompt may have multi-modal data. mm_processor_kwargs
    should be at the top-level, and should not be set in the encoder/decoder
    prompts, since they are agnostic to the encoder/decoder.

    Note that an
    [`ExplicitEncoderDecoderPrompt`][vllm.inputs.data.ExplicitEncoderDecoderPrompt]
    may not be used as an input to a decoder-only model,
    and that the `encoder_prompt` and `decoder_prompt`
    fields of this data structure themselves must be
    [`SingletonPrompt`][vllm.inputs.data.SingletonPrompt] instances.
    encoder_promptdecoder_promptr   N)r   r   r   r   r/   r   r   r3   r
   r   r   r   r   r   r   r   r4   ~   s
   
 r4   c                   @   sZ   e Zd ZU dZed ed< 	 ee ed< 	 eee  ed< 	 ee	 ed< 	 ee	 ed< dS )	TokenInputszRepresents token-based inputs.tokentyper   r    r   r   N)
r   r   r   r   r   r   r!   r"   r
   r   r   r   r   r   r7      s   
 r7   r   r    r   c                 C   s@   t d| d}|dur||d< |dur||d< |dur||d< |S )zQConstruct [`TokenInputs`][vllm.inputs.data.TokenInputs] from optional
    values.r8   )r9   r   Nr   r    r   )r7   )r   r    r   r   inputsr   r   r   token_inputs   s   r;   c                   @   s8   e Zd ZU dZed ed< 	 ejed< 	 ee	 ed< dS )EmbedsInputsz#Represents embeddings-based inputs.embedsr9   r$   r   N)
r   r   r   r   r   r   r%   r&   r
   r   r   r   r   r   r<      s   
 
r<   r$   c                 C   s    t d| d}|dur||d< |S )zSConstruct [`EmbedsInputs`][vllm.inputs.data.EmbedsInputs] from optional
    values.r=   )r9   r$   Nr   )r<   )r$   r   r:   r   r   r   embeds_inputs   s   r>   r   c                   @   s4   e Zd ZU dZeedf ed< 	 eedf ed< dS )EncoderDecoderInputsz
    The inputs in [`LLMEngine`][vllm.engine.llm_engine.LLMEngine] before they
    are passed to the model executor.

    This specifies the required data for encoder-decoder models.
    r   encoderdecoderN)r   r   r   r   r   r7   r   r   r   r   r   r?      s   
 r?   _T1)r0   r1   _T2r5   r6   r   c                 C   s   |d u ri }t | ||dS )Nr5   r6   r   )r4   rD   r   r   r   build_explicit_enc_dec_prompt  s   rE   enc_promptsdec_promptsc                    sR    du rt tttf i  t tr fddt| |D S dd t| | D S )a  
    Zip encoder and decoder prompts together into a list of
    [`ExplicitEncoderDecoderPrompt`][vllm.inputs.data.ExplicitEncoderDecoderPrompt]
    instances.

    ``mm_processor_kwargs`` may also be provided; if a dict is passed, the same
    dictionary will be used for every encoder/decoder prompt. If an iterable is
    provided, it will be zipped with the encoder/decoder prompts.
    Nc              	      s*   g | ]\}}t ||ttttf  qS r   )rE   r	   r   r   r   ).0r5   r6   r   r   r   
<listcomp>6  s    z'zip_enc_dec_prompts.<locals>.<listcomp>c                 S   s   g | ]\}}}t |||qS r   )rE   )rH   r5   r6   Zmm_proc_kwargsr   r   r   rJ   >  s    )r	   r   r   r   r*   zip)rF   rG   r   r   rI   r   zip_enc_dec_prompts$  s   


rL   enc_dec_promptsc                 C   s   dd | D S )Nc                 S   s   g | ]
}|d  |d fqS )r5   r6   r   )rH   Zenc_dec_promptr   r   r   rJ   I  s
    z)to_enc_dec_tuple_list.<locals>.<listcomp>r   )rM   r   r   r   to_enc_dec_tuple_listF  s   rN   )NNN)N)0collections.abcr   typingr   r   r   r   r   r   r	   r%   Ztyping_extensionsr
   r   r   r   Zvllm.multimodal.inputsr   r   r   r   r#   r   ZSingletonPromptr,   r.   r/   r3   r4   Z
PromptTyper7   r!   r"   r;   r<   r&   r>   ZDecoderOnlyInputsr?   ZSingletonInputsZProcessorInputsrB   rC   r   rE   rL   tuplerN   r   r   r   r   <module>   s   $







"