
    i	                         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      Z	 G d d	      Z
e
j                          y)
zK
JSON-based provider configuration loader for OpenAI-compatible providers.
    N)Path)DictOptional)verbose_loggerc                        e Zd ZdZdedefdZy)SimpleProviderConfigz*Simple data class for JSON provider configslugdatac                 L   || _         |d   | _        |d   | _        |j                  d      | _        |j                  dd      | _        |j                  di       | _        |j                  di       | _        |j                  di       | _        |j                  d	g       | _	        y )
Nbase_urlapi_key_envapi_base_env
base_class
openai_gptparam_mappingsconstraintsspecial_handlingsupported_endpoints)
r	   r   r   getr   r   r   r   r   r   )selfr	   r
   s      u/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/openai_like/json_loader.py__init__zSimpleProviderConfig.__init__   s    	Z(. HH^4((<>"hh'7<88M26 $);R @#'88,A2#F     N)__name__
__module____qualname____doc__strdictr    r   r   r   r      s    4	GS 	G 	Gr   r   c                       e Zd ZU dZi Zeeef   ed<   dZ	e
d        Ze
dedee   fd       Ze
dedefd       Ze
dedefd	       Ze
defd
       Zy)JSONProviderRegistryz'Load providers from JSON once on import
_providersFc                    | j                   ryt        t              j                  dz  }|j	                         sd| _         y	 t        |      5 }t        j                  |      }ddd       j                         D ]  \  }}t        ||      | j                  |<     d| _         y# 1 sw Y   BxY w# t        $ r)}t        j                  d|        d| _         Y d}~yd}~ww xY 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)cls	json_pathfr
   r	   configes          r   r+   zJSONProviderRegistry.load!   s     ;;N)),<<	!CK	iAyy| ! !%

f';D&'It$ !- CK !  	""A!E CKK		s1   B1 B%$A B1 %B.*B1 1	C#:CC#r	   returnc                 8    | j                   j                  |      S )z$Get a provider configuration by slug)r#   r   r/   r	   s     r   r   zJSONProviderRegistry.get<   s     ~~!!$''r   c                     || j                   v S )z'Check if a provider is defined via JSON)r#   r6   s     r   r(   zJSONProviderRegistry.existsA   s     s~~%%r   c                 Z    | j                   j                  |      }|yd|j                  v S )z3Check if a JSON provider supports the Responses APIFz/v1/responses)r#   r   r   )r/   r	   providers      r   supports_responses_apiz+JSONProviderRegistry.supports_responses_apiF   s2     >>%%d+(">">>>r   c                 H    t        | j                  j                               S )z"List all registered provider slugs)listr#   keys)r/   s    r   list_providersz#JSONProviderRegistry.list_providersN   s     CNN'')**r   N)r   r   r   r   r#   r   r   r   __annotations__r%   classmethodr+   r   r   boolr(   r:   r<   r>   r    r   r   r"   r"      s    124JS../4G 4 (s (x(<= ( ( &# &$ & & ?# ?$ ? ? +t + +r   r"   )r   r*   pathlibr   typingr   r   litellm._loggingr   r   r"   r+   r    r   r   <module>rE      s=      ! +G G6+ 6+t    r   