
    h                         d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ ddlmZ er	d dlm Z! e!Z"neZ" G d de      Z#y)    )BufferedReader)TYPE_CHECKINGAnyDictListOptionalTuplecastN)RequestFiles)ImageEditRequestUtils)BaseImageEditConfig)get_secret_str)ImageEditOptionalRequestParamsImageEditRequestParams)	FileTypes)GenericLiteLLMParams)ImageResponse   )OpenAIError)Loggingc                       e Zd ZdedefdZdedededefdZ	dedede
d	ed
ededeeef   fdZdedej"                  dedefdZ	 ddededee   defdZdedee   d
edefdZy)OpenAIImageEditConfigmodelreturnc                 
    g dS )z=
        All OpenAI Image Edits params are supported
        )imageprompt
backgroundmaskr   nqualityresponse_formatsizeuserextra_headersextra_query
extra_bodytimeout )selfr   s     i/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/openai/image_edit/transformation.pyget_supported_openai_paramsz1OpenAIImageEditConfig.get_supported_openai_params   s    
 	
    image_edit_optional_paramsdrop_paramsc                     t        |      S )z:No mapping applied since inputs are in OpenAI spec already)dict)r*   r.   r   r/   s       r+   map_openai_paramsz'OpenAIImageEditConfig.map_openai_params3   s     .//r-   r   r   "image_edit_optional_request_paramslitellm_paramsheadersc                    t        d|||d|}t        t        |      }|j                  d      xs g }	|j	                         D 
ci c]  \  }
}|
dk7  s|
| }}
}g }|	D ]^  }t        j                  |      }t        |t              r!|j                  d|j                  ||ff       I|j                  dd||ff       ` ||fS c c}}
w )z
        No transform applied since inputs are in OpenAI spec already

        This handles buffered readers as images to be sent as multipart/form-data for OpenAI
        )r   r   r   r   zimage[]z	image.pngr)   )r   r
   r   getitemsr   get_image_content_type
isinstancer   appendname)r*   r   r   r   r3   r4   r5   requestrequest_dict_imageskvdata_without_images
files_list_imageimage_content_types                   r+   transform_image_edit_requestz2OpenAIImageEditConfig.transform_image_edit_request<   s     ) 

 1	
 D'*
 ""7+1r0<0B0B0DU1Wq!tUU,.
F&;&R&R' &.1!!f6H IJ !!f6H IJ  #J.. Vs   CCraw_responselogging_objc                     	 |j                         }t        di |S # t        $ r" t        |j                  |j                        w xY w)z=No transform applied since outputs are in OpenAI spec already)messagestatus_coder)   )json	Exceptionr   textrK   r   )r*   r   rG   rH   raw_response_jsons        r+   transform_image_edit_responsez3OpenAIImageEditConfig.transform_image_edit_responsef   sV    	 , 1 1 3
 1011	  	$))|7O7O 	s	    +ANapi_keyc                     |xs/ t         j                  xs t         j                  xs t        d      }|j	                  dd| i       |S )NOPENAI_API_KEYAuthorizationzBearer )litellmrQ   
openai_keyr   update)r*   r5   r   rQ   s       r+   validate_environmentz*OpenAIImageEditConfig.validate_environmentu   s\      00!!0 ./	 	 	77)!4	

 r-   api_basec                     |xs. t         j                  xs t        d      xs t        d      xs d}|j                  d      }| dS )z;
        Get the endpoint for OpenAI responses API
        OPENAI_BASE_URLOPENAI_API_BASEzhttps://api.openai.com/v1/z/images/edits)rU   rY   r   rstrip)r*   r   rY   r4   s       r+   get_complete_urlz&OpenAIImageEditConfig.get_complete_url   s_      ++/0+ /0+ + 	 ??3'=))r-   )N)__name__
__module____qualname__strlistr,   r   boolr   r2   r   r   r1   r	   r   rF   httpxResponseLiteLLMLoggingObjr   rP   r   rX   r_   r)   r-   r+   r   r      s&   
 
 
*0$B0 0 	0
 
0(/(/ (/ 	(/
 -1(/ -(/ (/ 
t\!	"(/T22 nn2 '	2
 
2& "&	  #	
 
&** 3-* 	*
 
*r-   r   )$ior   typingr   r   r   r   r   r	   r
   rf   httpx._typesr   rU   litellm.images.utilsr   /litellm.llms.base_llm.image_edit.transformationr   litellm.secret_managers.mainr   litellm.types.images.mainr   r   litellm.types.llms.openair   litellm.types.routerr   litellm.utilsr   common_utilsr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjrh   r   r)   r-   r+   <module>rv      sW     H H H  %  6 O 7 0 5 ' &X**/ *r-   