
    ^h
                         S r SSKrSSKJrJr  SSKJrJrJrJ	r	J
r
JrJr  SSKrSSKJr  SSKJr  \(       a	  SSKJr  \rO\r " S S	\5      r " S
 S\5      rg)z*
Common base config for all LLM providers
    N)ABCabstractmethod)TYPE_CHECKINGAnyAsyncIteratorIteratorListOptionalUnion)AllMessageValues)ModelResponse)Loggingc                      ^  \ rS rSr   S	S\S\S\\\\	R                  4      S\\	R                     S\\	R                     4
U 4S jjjrSrU =r$ )
BaseLLMException   status_codemessageheadersrequestresponsec                   > Xl         X l        X0l        U(       a  X@l        O[        R
                  " SSS9U l        U(       a  XPl        O#[        R                  " XR                  S9U l        [        TU ]%  U R                  5        g )NPOSTzhttps://docs.litellm.ai/docs)methodurl)r   r   )
r   r   r   r   httpxRequestr   Responsesuper__init__)selfr   r   r   r   r   	__class__s         c/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/base_llm/chat/transformation.pyr   BaseLLMException.__init__   sj     '#"L ==#ADL $M!NN'DM 	LL	
    )r   r   r   r   r   )NNN)__name__
__module____qualname____firstlineno__intstrr
   r   dictr   Headersr   r   r   __static_attributes____classcell__)r!   s   @r"   r   r      sm    
 9=+/-1

 
 %emm 345	

 %--(
 5>>*
 
r$   r   c                      \ rS rSrS r\S 5       r S%S\S\\	   S\\   S\	4S	 jjr
\S\S\4S
 j5       r\S\S\S\S\	S\4
S j5       r\ S%S\S\S\\   S\S\\   S\4S jj5       rS\S\S\4S jr\S\S\\   S\S\S\S\4S j5       r\  S&S\S\R,                  S\S\S\S\\   S\S\S\S\\   S\\	   S\4S jj5       r\S\S\S\\\R:                  4   S\4S  j5       r S'S!\\ \   \!\   \4   S"\	S\\	   S\4S# jjr"S$r#g)(
BaseConfig3   c                     g N )r    s    r"   r   BaseConfig.__init__4   s    r$   c                 L   U R                   R                  5        VVs0 s Hw  u  pUR                  S5      (       a  M  UR                  S5      (       a  M5  [        U[        R
                  [        R                  [        [        45      (       a  Mp  Uc  Mu  X_My     snn$ s  snnf )N___abc)	__dict__items
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod)clskvs      r"   
get_configBaseConfig.get_config7   s     **,
,<<%  LL(  &&-- 		   AD,
 	
 
s   B B 7B B B Nmodelstreamcustom_llm_providerreturnc                     g)z7
Returns True if the model/provider should fake stream
Fr4   )r    rG   rH   rI   s       r"   should_fake_streamBaseConfig.should_fake_streamJ   s     r$   c                     g r3   r4   )r    rG   s     r"   get_supported_openai_params&BaseConfig.get_supported_openai_paramsU   s    r$   non_default_paramsoptional_paramsdrop_paramsc                     g r3   r4   )r    rQ   rR   rG   rS   s        r"   map_openai_paramsBaseConfig.map_openai_paramsY   s     	r$   r   messagesapi_keyc                     g r3   r4   )r    r   rG   rW   rR   rX   s         r"   validate_environmentBaseConfig.validate_environmentc        	r$   api_basec                     U$ )z[
OPTIONAL

Get the complete url for the request

Some providers need `model` in `api_base`
r4   )r    r]   rG   s      r"   get_complete_urlBaseConfig.get_complete_urln   s	     r$   litellm_paramsc                     g r3   r4   )r    rG   rW   rR   ra   r   s         r"   transform_requestBaseConfig.transform_requestx   r\   r$   raw_responsemodel_responselogging_objrequest_dataencoding	json_modec                     g r3   r4   )r    rG   re   rf   rg   rh   rW   rR   ra   ri   rX   rj   s               r"   transform_responseBaseConfig.transform_response   s     	r$   error_messager   c                     g r3   r4   )r    rn   r   r   s       r"   get_error_classBaseConfig.get_error_class   s     	r$   streaming_responsesync_streamc                     g r3   r4   )r    rr   rs   rj   s       r"   get_model_response_iterator&BaseConfig.get_model_response_iterator   s     	r$   r4   r3   )NN)F)$r%   r&   r'   r(   r   r@   rE   r*   r
   boolrL   r   listrO   r+   rU   r	   r   rZ   r_   rc   r   r   r   LiteLLMLoggingObjr   rl   r)   r   r,   r   rp   r   r   ru   r-   r4   r$   r"   r0   r0   3   s    
 
, .2			 	 &c]		
 
	        	
  
   "&  '(	
  # 
  S S   '( 	
   
   "&$( nn &	
 '  '(    # D> 
    /2=B4CV=W	  %*	!(3-s1C]"RS  D>	
 
 r$   r0   )__doc__r=   abcr   r   typingr   r   r   r   r	   r
   r   r   litellm.types.llms.openair   litellm.types.utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjry   	Exceptionr   r0   r4   r$   r"   <module>r      sP     # U U U  6 -X*
y 
:m mr$   