o
    ưi^                     @   s\   d Z ddlZddlmZ ddlmZmZ ddlmZ G dd dZ	G dd	 d	Z
e
  dS )
zK
JSON-based provider configuration loader for OpenAI-compatible providers.
    N)Path)DictOptional)verbose_loggerc                   @   s"   e Zd ZdZdedefddZdS )SimpleProviderConfigz*Simple data class for JSON provider configslugdatac                 C   sb   || _ |d | _|d | _|d| _|dd| _|di | _|di | _|di | _d S )	Nbase_urlapi_key_envapi_base_env
base_classZ
openai_gptparam_mappingsconstraintsspecial_handling)	r   r	   r
   getr   r   r   r   r   )selfr   r    r   [/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/openai_like/json_loader.py__init__   s   

zSimpleProviderConfig.__init__N)__name__
__module____qualname____doc__strdictr   r   r   r   r   r      s    r   c                   @   sx   e Zd ZU dZi Zeeef ed< dZ	e
dd Ze
dedee fdd	Ze
dedefd
dZe
defddZdS )JSONProviderRegistryz'Load providers from JSON once on import
_providersFc              
   C   s   | j rdS ttjd }| sd| _ dS z0t|}t|}W d   n1 s*w   Y  | D ]\}}t	||| j
|< q3d| _ W dS  tyc } ztd|  d| _ W Y d}~dS d}~ww )z+Load providers from JSON configuration fileNzproviders.jsonTz/Warning: Failed to load JSON provider configs: )_loadedr   __file__parentexistsopenjsonloaditemsr   r   	Exceptionr   warning)clsZ	json_pathfr   r   configer   r   r   r#       s$   
zJSONProviderRegistry.loadr   returnc                 C   s   | j |S )z$Get a provider configuration by slug)r   r   r'   r   r   r   r   r   9   s   zJSONProviderRegistry.getc                 C   s
   || j v S )z'Check if a provider is defined via JSON)r   r,   r   r   r   r    >   s   
zJSONProviderRegistry.existsc                 C   s   t | j S )z"List all registered provider slugs)listr   keys)r'   r   r   r   list_providersC   s   z#JSONProviderRegistry.list_providersN)r   r   r   r   r   r   r   r   __annotations__r   classmethodr#   r   r   boolr    r-   r/   r   r   r   r   r      s   
 
r   )r   r"   pathlibr   typingr   r   Zlitellm._loggingr   r   r   r#   r   r   r   r   <module>   s    0