o
    پi                     @   s>   d dl Z d dlZd dlmZmZ d dlmZ G dd dZdS )    N)DictOptional)snapshot_downloadc                	   @   sn   e Zd Z			ddee dee dee ddfddZe	ddedee dd fdd	ZdddZ	dd Z
dS )
LoRAConfigNpathconfig_dictadded_tokens_configreturnc                 C   sx   || _ |d ur|| _|| _n
|  | _|  | _| jd | _| jd | _| jd | _| jd ur7t| j| _	d S d| _	d S )Ntarget_modulesr
lora_alphar   )
r   	hf_configr   get_lora_configget_added_tokens_configr
   r   r   lenlora_added_tokens_size)selfr   r   r    r   O/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/lora/lora_config.py__init__   s   

zLoRAConfig.__init__c                 C   s   | ||dS )N)r   r   r   )clsr   r   r   r   r   	from_dict-   s   zLoRAConfig.from_dictFc                 C   sv   |rt  tj| jst| jdgd}n| j}d}ttj||d}t|W  d    S 1 s4w   Y  d S )N*.jsonallow_patternszadapter_config.jsonr   )	NotImplementedErrorosr   isdirr   openjoinjsonload)r   dummyweights_dirconfig_namefr   r   r   r   5   s   $zLoRAConfig.get_lora_configc              
   C   s   t j| jst| jdgd}n| j}t j|d}t j|s"dS zt|d}t|W  d   W S 1 s9w   Y  W dS  tj	ye } zddl
}|t}|d|  W Y d}~dS d}~ww )z;Load added tokens from the LoRA adapter if the file exists.r   r   zadded_tokens.jsonNr   r   z#Failed to parse added_tokens.json: )r   r   r   r   r   existsr   r    r!   JSONDecodeErrorlogging	getLogger__name__warning)r   r#   added_tokens_pathr%   er(   loggerr   r   r   r   A   s"   (
z"LoRAConfig.get_added_tokens_config)NNN)N)F)r*   
__module____qualname__r   strr   r   classmethodr   r   r   r   r   r   r   r      s0    

r   )r    r   typingr   r   huggingface_hubr   r   r   r   r   r   <module>   s
   