o
    پiD                     @   sX   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ G dd de
ZdS )    N)DictListUnion)DotsOCRForCausalLM)DotsVLMForCausalLM)BaseMultimodalProcessorMultimodalSpecialTokensc                       s@   e Zd ZeegZ fddZdeee	e
ef  fddZ  ZS )DotsVLMImageProcessorc           	         s   t  j|||g|R i | d| _td| _t|jddks$J |jdd | _	|jdd | _
|jdd | _| j| _| j	| _| j
| _|j}|j}|j}|| | _|jj| _|jj| _d| _t| j| j| jd	|| _d S )
Nz<|img|><|imgpad|><|endofimg|>z(<\|img\|>(?:<\|imgpad\|>)+<\|endofimg\|>z<|img|>   r   z<|endofimg|>z
<|imgpad|>   )image_tokenimage_token_idimage_token_regex)super__init__IMAGE_TOKENrecompileIMAGE_TOKEN_REGEXlen	tokenizerencodeim_start_id	im_end_idr   IM_TOKEN_IDIM_START_TOKEN_IDIM_END_TOKEN_IDvision_config
patch_sizespatial_merge_sizeIMAGE_FACTORimage_processor
min_pixels
MIN_PIXELS
max_pixels
MAX_PIXELS	MAX_RATIOr   build	mm_tokens)	self	hf_configserver_args
_processorargskwargsr   r   
merge_size	__class__ ]/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/multimodal/processors/dots_vlm.pyr      s0   


zDotsVLMImageProcessor.__init__
image_datac                    s   t |tr	|g}t |tr|rt |d trt|g }| j||| jd}| || j\}}	}
|d u r5d S |	 || j| j	| j
dS )Nr   )promptr4   multimodal_tokens)	input_idsmm_itemsr   r   im_token_id)
isinstancestrlistsumload_mm_datar(   process_and_combine_mm_datatolistr   r   r   )r)   r4   
input_textrequest_objmax_req_input_lenr-   r.   base_outputcombined_mm_itemr7   _r2   r2   r3   process_mm_data_async,   s4   
	

z+DotsVLMImageProcessor.process_mm_data_async)__name__
__module____qualname__r   r   modelsr   r   r   r;   bytesr   rG   __classcell__r2   r2   r0   r3   r	      s    r	   )r   typingr   r   r   sglang.srt.models.dots_ocrr   sglang.srt.models.dots_vlmr   /sglang.srt.multimodal.processors.base_processorr   r   r	   r2   r2   r2   r3   <module>   s    