o
    پiO                     @   sp   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ee	Z
i ZddedefddZd	ed
efddZdS )    N)BaseMultimodalProcessor)
ServerArgsFpackage_name	overwritec                    s   t | }t|j| d D ]o\}}}|s}zt | W n ty9 } ztd| d|  W Y d }~qd }~ww t	 tj
} fdd|D }dd |D D ]+}	t|	dsZJ t|	dD ]}
|rwt D ]\}}|j|
jkrvt|=  nqg|	t|
< q_qQqd S )	N.z!Ignore import error when loading z: c                    s    g | ]\}}|j  jkr|qS  )
__module____name__).0namemembermoduler   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/managers/multimodal_processor.py
<listcomp>   s
    z%import_processors.<locals>.<listcomp>c                 s   s    | ]
}t |tr|V  qd S )N)
issubclassr   )r
   clsr   r   r   	<genexpr>   s    

z$import_processors.<locals>.<genexpr>models)	importlibimport_modulepkgutiliter_modules__path__	Exceptionloggerwarninginspect
getmembersisclasshasattrgetattrPROCESSOR_MAPPINGitemsr	   )r   r   package_r   ispkgeall_membersclassesr   arch	model_clsprocessor_clsr   r   r   import_processors   s:   



r-   server_argsreturnc                 K   s\   t  D ]\}}|j| jv r|| |||fi |  S qtd| j ddd t  D  )Nz*No processor registered for architecture: z.
Registered architectures: c                 S   s   g | ]}|j qS r   )r	   )r
   r+   r   r   r   r   6   s    z$get_mm_processor.<locals>.<listcomp>)r"   r#   r	   architectures
ValueErrorkeys)	hf_configr.   	processortransport_modekwargsr+   r,   r   r   r   get_mm_processor+   s   

r7   )F)r   r   loggingr   /sglang.srt.multimodal.processors.base_processorr   sglang.srt.server_argsr   	getLoggerr	   r   r"   strboolr-   r7   r   r   r   r   <module>   s   
