
    h                         d dl mZmZmZmZ d dl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mZ er	d dlmZ eZneZ G d	 d
e      Zy)    )TYPE_CHECKINGAnyListOptionalN)BaseImageGenerationConfig)get_secret_str)AllMessageValues#OpenAIImageGenerationOptionalParams)#RecraftImageGenerationRequestParams)ImageObjectImageResponse)Loggingc                   P   e Zd ZU dZeed<   dZeed<   dedee   fdZ	de
d	e
ded
ede
f
dZ	 ddee   dee   ded	e
de
dee   defdZ	 	 dde
dedee   d	e
de
dee   dee   de
fdZdeded	e
de
de
de
fdZ	 	 ddedej&                  dedede
d	e
de
dedee   dee   defdZy) RecraftImageGenerationConfigzhttps://external.api.recraft.aiDEFAULT_BASE_URLzv1/images/generationsIMAGE_GENERATION_ENDPOINTmodelreturnc                 
    g dS )z<
        https://www.recraft.ai/docs#generate-image
        )nresponse_formatsizestyle )selfr   s     p/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/recraft/image_generation/transformation.pyget_supported_openai_paramsz8RecraftImageGenerationConfig.get_supported_openai_params   s    
 	
    non_default_paramsoptional_paramsdrop_paramsc           
          | j                  |      }|j                         D ]9  }||j                         vs||v r	||   ||<   #|r&t        d| d| d| d       |S )Nz
Parameter z is not supported for model z. Supported parameters are z6. Set drop_params=True to drop unsupported parameters.)r   keys
ValueError)r   r   r    r   r!   supported_paramsks          r   map_openai_paramsz.RecraftImageGenerationConfig.map_openai_params)   s      ;;EB#((*A,,..(();A)>OA& $$QC'CE7Jefvew  xn  o  + r   Napi_baseapi_keylitellm_paramsstreamc                     |xs t        d      xs | j                  }|j                  d      }| d| j                   }|S )zi
        Get the complete url for the request

        Some providers need `model` in `api_base`
        RECRAFT_API_BASE/)r   r   rstripr   )r   r(   r)   r   r    r*   r+   complete_urls           r   get_complete_urlz-RecraftImageGenerationConfig.get_complete_url>   sW      %01%$$ 	 $**3/&q)G)G(HIr   headersmessagesc                 N    |xs t        d      }|st        d      d| |d<   |S )NRECRAFT_API_KEYzRECRAFT_API_KEY is not setzBearer Authorization)r   r$   )	r   r2   r   r3   r    r*   r)   r(   final_api_keys	            r   validate_environmentz1RecraftImageGenerationConfig.validate_environmentV   sA      .,- 	 9::%,]O#< r   promptc                 4    t        d||d|}t        |      S )z
        Transform the image generation request to the recraft image generation request body

        https://www.recraft.ai/docs#generate-image
        )r9   r   r   )r   dict)r   r   r9   r    r*   r2   &recratft_image_generation_request_bodys          r   "transform_image_generation_requestz?RecraftImageGenerationConfig.transform_image_generation_requestl   s7     Wz W
W
 W
.
 :;;r   raw_responsemodel_responselogging_objrequest_dataencoding	json_modec           
      f   	 |j                         }|j
                  sg |_        |d   D ]H  }|j
                  j                  t        |j                  dd      |j                  dd                   J |S # t        $ r0}| j                  d| |j                  |j                        d}~ww xY w)z
        Transform the image generation response to the litellm image response

        https://www.recraft.ai/docs#generate-image
        z.Error transforming image generation response: )error_messagestatus_coder2   Ndataurlb64_json)rH   rI   )	json	Exceptionget_error_classrF   r2   rG   appendr   get)r   r   r>   r?   r@   rA   r    r*   rB   r)   rC   response_datae
image_datas                 r   #transform_image_generation_responsez@RecraftImageGenerationConfig.transform_image_generation_response   s    $	(--/M """$N'/J&&{NN5$/#
D9(  0   	&& NqcR(44$,, '  	s   A7 7	B0 +B++B0)N)NN)__name__
__module____qualname__r   str__annotations__r   r   r
   r   r;   boolr'   r   r1   r	   r8   r=   httpxResponser   LiteLLMLoggingObjr   rR   r   r   r   r   r      s   =c=%<s<

	1	2
   	
  
8 "&3- # 	
    
> "&"&  '(	
   # 3- 
,<< < 	<
 < < 
<< "&$(## nn# &	#
 '# # # # # ## D># 
#r   r   )typingr   r   r   r   rY   5litellm.llms.base_llm.image_generation.transformationr   litellm.secret_managers.mainr   litellm.types.llms.openair	   r
   litellm.types.llms.recraftr   litellm.types.utilsr   r   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjr[   r   r   r   r   <module>rd      sG    5 5  8 K :X*K#< Kr   