o
    ưi                     @   s6   d dl mZmZmZmZ d dlmZ G dd dZdS )    )AnyDictOptionalTuple)ContentPolicyViolationErrorc                   @   s\   e Zd ZdZedededededef
ddZedede	e
eef ee f fd	d
ZdS )AzureOpenAIExceptionMappingz=
    Class for creating Azure OpenAI specific exceptions
    messagemodelextra_informationoriginal_exceptionreturnc           
   
   C   s   t |\}}t|tr|dndp| }t|tr|dnd}t|tr+|dnd}||p1d|p4ddd}	t|d||t|d	d|||pGdd
|	d)z9
        Create a content policy violation error
        r   NtypecodeZinvalid_request_errorZcontent_policy_violation)r   r   r   paramZazureresponse)
innererrorinner_errorazure_error)r   Zllm_providerr	   Zlitellm_debug_infor   Zprovider_specific_fieldsbody)r   _extract_azure_error
isinstancedictgetr   getattr)
r   r	   r
   r   r   r   Zprovider_messageZprovider_typeZprovider_codeZopenai_style_body r   [/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/azure/exception_mapping.py%create_content_policy_violation_error   s<   

zAAzureOpenAIExceptionMapping.create_content_policy_violation_errorc                 C   st   t | ddpi }t|tsi dfS t|dtr |di }n|}|dp5|dp5|dp5|d}||fS )ab  Extract Azure OpenAI error payload and inner error details.

        Azure error formats can vary by endpoint/version. Common shapes:
        - {"innererror": {...}} (legacy)
        - {"error": {"code": "...", "message": "...", "type": "...", "inner_error": {...}}}
        - {"code": "...", "message": "...", "type": "..."} (already flattened)
        r   Nerrorr   r   )r   r   r   r   )r   Z	body_dictr   r   r   r   r   r   @   s   

z0AzureOpenAIExceptionMapping._extract_azure_errorN)__name__
__module____qualname____doc__staticmethodstr	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r      s(    4r   N)typingr   r   r   r   Zlitellm.exceptionsr   r   r   r   r   r   <module>   s    