
    g                         d Z ddlZddlmZmZmZmZmZ ddlZddl	Z	ddl
mZ  G d de      Zdee	j                  ej                  f   deeef   d	eeef   fd
Zy)z3
Common helpers / utils across al OpenAI endpoints
    N)AnyDictListOptionalUnion)BaseLLMExceptionc                        e Zd Z	 	 	 ddededeej                     deej                     dee	e
ej                  f      f
 fdZ xZS )OpenAIErrorstatus_codemessagerequestresponseheadersc                 T   || _         || _        || _        |r|| _        nt	        j
                  dd      | _        |r|| _        n&t	        j                  || j                        | _        t        | %  || j                  | j                  | j                  | j                         y )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         U/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/openai/common_utils.pyr   zOpenAIError.__init__   s     '"DL ==<WXDL$DM!NN'DM 	#LLLLLL]] 	 	
    )NNN)__name__
__module____qualname__intstrr   r   r   r   r   dictHeadersr   __classcell__)r   s   @r   r
   r
      sm    
 ,0-18<

 
 %--(	

 5>>*
 %emm 345
 
r   r
   edatareturnc                 b   g }t        | t        j                        r/| j                  j	                         }|j                  di       }|}n| j                  }|	t        |t              r|j                  d      r|j                  di       }t        |t              r	 t	        j                  |      }|j                  d      }t        |t              rt        |      dkD  rt        |d   t              rn|D ]i  }|j                  d      st        |j                  d      t              s5t        |j                  d            dk(  sS|j                  |d   d          k |j                         D 	
ci c]  \  }	}
|	|vs|	|
 }}	}
|S # t        j                  $ r d|i}Y w xY wc c}
}	w )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
    errorr   detailr   loc      )
isinstancer   HTTPStatusErrorr   jsongetbodyr"   r!   loadsJSONDecodeErrorr   lenlistappenditems)r%   r&   invalid_params
error_jsonerror_message
error_bodyr   r*   
error_dictkvnew_datas               r   +drop_params_from_unprocessable_entity_errorrA   /   so    !#N!U**+ZZ__&
"w3"
VV
z4(NN9%..B/gs#.**W- X&fd#FaJvayRV<W$
NN5)":>>%#8$?JNN512a7"))*U*;A*>? % "&IA.1H1HIO '' .#W-. Js   F 7F+F+F('F()__doc__r0   typingr   r   r   r   r   r   openai)litellm.llms.base_llm.chat.transformationr   r
   UnprocessableEntityErrorr/   r!   rA    r   r   <module>rH      sq     3 3   F
" 
B-V,,e.C.CCD-
sCx.- 
#s(^-r   