
    .`i@                         d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ  e	e          Z G d de          Ze G d d	                      Z e            Zd
S )    )ABCabstractmethod)Set)	dataclassfield)init_logger)LoRARequestc                   <    e Zd ZdZededededz  fd            ZdS )LoRAResolvera  Base class for LoRA adapter resolvers.

    This class defines the interface for resolving and fetching LoRA adapters.
    Implementations of this class should handle the logic for locating and
    downloading LoRA adapters from various sources (e.g. S3, cloud storage,
    etc.).
    base_model_name	lora_namereturnNc                 
   K   dS )a  Abstract method to resolve and fetch a LoRA model adapter.

        Implements logic to locate and download LoRA adapter based on the name.
        Implementations might fetch from a blob storage or other sources.

        Args:
            base_model_name: The name/identifier of the base model to resolve.
            lora_name: The name/identifier of the LoRA model to resolve.

        Returns:
            Optional[LoRARequest]: The resolved LoRA model information, or None
            if the LoRA model cannot be found.
        N )selfr   r   s      f/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/lora/resolver.pyresolve_lorazLoRAResolver.resolve_lora   s      " 	    )__name__
__module____qualname____doc__r   strr	   r   r   r   r   r   r      s[          "/2	t	   ^  r   r   c                   ~    e Zd ZU  ee          Zeeef         ed<   de	e         fdZ
dededdfdZdedefd	ZdS )
_LoRAResolverRegistry)default_factory	resolversr   c                 4    | j                                         S )z"Get all registered resolver names.)r   keys)r   s    r   get_supported_resolversz-_LoRAResolverRegistry.get_supported_resolvers/   s    ~""$$$r   resolver_nameresolverNc                 d    || j         v rt                              d||           || j         |<   dS )zRegister a LoRA resolver.
        Args:
            resolver_name: Name to register the resolver under.
            resolver: The LoRA resolver instance to register.
        z`LoRA resolver %s is already registered, and will be overwritten by the new resolver instance %s.N)r   loggerwarning)r   r!   r"   s      r   register_resolverz'_LoRAResolverRegistry.register_resolver3   sF     DN**NN?	   )1}%%%r   c           	          || j         vr9t          d| dt          | j                                                              | j         |         S )a  Get a registered resolver instance by name.
        Args:
            resolver_name: Name of the resolver to get.
        Returns:
            The resolver instance.
        Raises:
            KeyError: If the resolver is not found in the registry.
        zLoRA resolver 'z"' not found. Available resolvers: )r   KeyErrorlistr   )r   r!   s     r   get_resolverz"_LoRAResolverRegistry.get_resolverG   sk     ..F- F F(,T^-@-@-B-B(C(CF F   ~m,,r   )r   r   r   r   dictr   r   r   __annotations__r   r    r&   r*   r   r   r   r   r   +   s         ).t)D)D)DItC%&DDD%S % % % %11 1 
	1 1 1 1(-# -, - - - - - -r   r   N)abcr   r   collections.abcr   dataclassesr   r   vllm.loggerr   vllm.lora.requestr	   r   r$   r   r   LoRAResolverRegistryr   r   r   <module>r3      s    $ # # # # # # #       ( ( ( ( ( ( ( ( # # # # # # ) ) ) ) ) )	X		    3   : )- )- )- )- )- )- )- )-X -,..   r   