o
    
۾i
                     @   s   d 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
 ddlmZmZ G dd ded	d
ZG dd de	Zede dS )z*BAGEL processor for image and text inputs.    )AutoProcessor)BatchFeature)
ImageInput)ProcessingKwargsProcessorMixinUnpack)PreTokenizedInput	TextInputc                   @   s   e Zd ZdddiiZdS )BagelProcessorKwargsimages_kwargsreturn_tensorsptN)__name__
__module____qualname__	_defaults r   r   \/home/ubuntu/.local/lib/python3.10/site-packages/vllm/transformers_utils/processors/bagel.pyr
      s
    r
   F)totalc                   @   sp   e Zd ZdZddgZdZdZ		ddeeB e	e B e	e B de
d	ee fd
dZdd Zdd Zedd ZdS )BagelProcessorzf
    Constructs a BAGEL processor which wraps a
    SigLIP image processor and a Qwen2 tokenizer.
    image_processor	tokenizerSiglipImageProcessorAutoTokenizerNtextimageskwargsc                 K   sr   | j tfd| jji|}|dur| j|fi |d }ni }|dur.| j|fi |d ni }ti ||dS )z`
        Main method to prepare for the model one or several sequences(s) and image(s).
        tokenizer_init_kwargsNr   text_kwargs)data)_merge_kwargsr
   r   init_kwargsr   r   )selfr   r   r   output_kwargspixel_valuestext_inputsr   r   r   __call__   s&   zBagelProcessor.__call__c                 O      | j j|i |S )z^
        This method forwards all its arguments to Qwen2TokenizerFast's batch_decode.
        )r   batch_decoder"   argsr   r   r   r   r(   A      zBagelProcessor.batch_decodec                 O   r'   )zX
        This method forwards all its arguments to Qwen2TokenizerFast's decode.
        )r   decoder)   r   r   r   r,   G   r+   zBagelProcessor.decodec                 C   s"   | j j}| jj}tt|| S )N)r   model_input_namesr   listdictfromkeys)r"   tokenizer_input_namesimage_processor_input_namesr   r   r   r-   M   s   z BagelProcessor.model_input_names)NN)r   r   r   __doc__
attributesimage_processor_classtokenizer_classr	   r   r.   r   r   r
   r&   r(   r,   propertyr-   r   r   r   r   r      s0    
"r   N)r3   transformersr   %transformers.feature_extraction_utilsr   transformers.image_utilsr   transformers.processing_utilsr   r   r   $transformers.tokenization_utils_baser   r	   r
   r   registerr   r   r   r   <module>   s   ?