
    ^h
                         S r SSKrSSKJrJrJrJrJr  SSKrSSK	r	SSK
Jr   " S S\5      rS\	R                  S\\\4   S	\\\4   4S
 jrg)z3
Common helpers / utils across al OpenAI endpoints
    N)AnyDictListOptionalUnion)BaseLLMExceptionc                      ^  \ rS rSr   S	S\S\S\\R                     S\\R                     S\\
\\R                  4      4
U 4S jjjrSrU =r$ )
OpenAIError   status_codemessagerequestresponseheadersc                 N  > Xl         X l        XPl        U(       a  X0l        O[        R
                  " SSS9U l        U(       a  X@l        O#[        R                  " XR                  S9U l        [        TU ]%  UU R                  U R                  U R                  U R                  S9  g )NPOSTzhttps://api.openai.com/v1)methodurl)r   r   )r   r   r   r   r   )
r   r   r   r   httpxRequestr   Responsesuper__init__)selfr   r   r   r   r   	__class__s         Z/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/openai/common_utils.pyr   OpenAIError.__init__   s     '"L ==<WXDL$M!NN'DM 	#LLLLLL]] 	 	
    )r   r   r   r   r   )NNN)__name__
__module____qualname____firstlineno__intstrr   r   r   r   r   dictHeadersr   __static_attributes____classcell__)r   s   @r   r
   r
      sm    
 ,0-18<

 
 %--(	

 5>>*
 %emm 345
 
r   r
   edatareturnc                 n   / nU R                   GbT  [        U R                   [        5      (       Ga4  U R                   R                  S5      (       Ga  U R                   R                  S0 5      n[        U[        5      (       a   [
        R                  " U5      nUR                  S5      n[        U[        5      (       a  [        U5      S:  a  [        US   [        5      (       a~  U Hx  nUR                  S5      (       d  M  [        UR                  S5      [        5      (       d  MA  [        UR                  S5      5      S:X  d  Ma  UR                  US   S   5        Mz     UR                  5        VVs0 s H  u  pgXb;  d  M  Xg_M     nnnU$ ! [
        R                   a    SU0n GNf = fs  snnf )a_  
Helper function to read OpenAI UnprocessableEntityError and drop the params that raised an error from the error message.

Args:
e (UnprocessableEntityError): The UnprocessableEntityError exception
data (Dict[str, Any]): The original data dictionary containing all parameters

Returns:
Dict[str, Any]: A new dictionary with invalid parameters removed
r   detailr   loc      )body
isinstancer%   getr$   jsonloadsJSONDecodeErrorr   lenlistappenditems)	r)   r*   invalid_paramsr   r-   
error_dictkvnew_datas	            r   +drop_params_from_unprocessable_entity_errorr@   /   sP    !#Nvvj66166::i;P;P&&**Y+gs##.**W- X&fd##FaJvayRV<W<W$
NN5))":>>%#8$??JNN512a7"))*U*;A*>? % "&I1HHIO '' .#W-. Js   F 8F1F1F.-F.)__doc__r4   typingr   r   r   r   r   r   openai)litellm.llms.base_llm.chat.transformationr   r
   UnprocessableEntityErrorr$   r@    r   r   <module>rG      s_     3 3   F
" 
B && .238n 	#s(^ r   