o
    
۾i)	                     @   sT   d dl Z d dl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d Z
dS )    N)LoRARequest)LoRAResolverLoRAResolverRegistryc                	   @   sR   e Zd ZdefddZdedededB fdd	Zded
edededB fddZdS )FilesystemResolverlora_cache_dirc                 C   s
   || _ d S N)r   )selfr    r	   c/home/ubuntu/.local/lib/python3.10/site-packages/vllm/plugins/lora_resolvers/filesystem_resolver.py__init__   s   
zFilesystemResolver.__init__base_model_name	lora_namereturnNc                    s*   t j| j|}| |||I d H }|S r   )ospathjoinr   _get_lora_req_from_path)r   r   r   	lora_pathmaybe_lora_requestr	   r	   r
   resolve_lora   s   
zFilesystemResolver.resolve_lorar   c                    s   t j|rFt j|d}t j|rFt|}t|}W d   n1 s(w   Y  |d dkrF|d |krFt|tt	||d}|S dS )zBuilds a LoraRequest pointing to the lora path if it's a valid
        LoRA adapter and has a matching base_model_name.
        zadapter_config.jsonN	peft_typeLORAbase_model_name_or_path)r   lora_int_idr   )
r   r   existsr   openjsonloadr   abshash)r   r   r   r   adapter_config_pathfileadapter_configlora_requestr	   r	   r
   r      s    

z*FilesystemResolver._get_lora_req_from_path)__name__
__module____qualname__strr   r   r   r   r	   r	   r	   r
   r      s$    
	r   c                  C   sB   t j} | rtj| rtj| stdt| }t	d| dS )z/Register the filesystem LoRA Resolver with vLLMzxVLLM_LORA_RESOLVER_CACHE_DIR must be set to a valid directory                 for Filesystem Resolver plugin to functionzFilesystem ResolverN)
envsVLLM_LORA_RESOLVER_CACHE_DIRr   r   r   isdir
ValueErrorr   r   register_resolver)r   fs_resolverr	   r	   r
   register_filesystem_resolver1   s   r.   )r   r   	vllm.envsr(   vllm.lora.requestr   vllm.lora.resolverr   r   r   r.   r	   r	   r	   r
   <module>   s   &