
    h!                         d Z ddlmZmZ ddlZddlmZmZ ddlZddl	m
Z
mZmZ ddlmZ ddlmZ dd	lmZ d
dlmZ  G d d      Zy)z!
OpenAI Image Variations Handler
    )CallableOptionalN)AsyncOpenAIOpenAI)	FileTypesImageResponseLlmProviders)ProviderConfigManager   )BaseImageVariationConfig)LiteLLMLoggingObj   )OpenAIErrorc                       e Zd Zdee   defdZdee   dedefdZde	de	dee	   dee   d	ed
edee	   dee
   dedededededededef dZ	 	 	 	 	 ddede	de	dee	   dedee
   de	dedededee   dee	   d
ee   defdZy)OpenAIImageVariationsHandlerclientinit_client_paramsc                 (    |t        di |}|S |}|S N )r   selfr   r   openai_clients       h/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/openai/image_variations/handler.pyget_sync_clientz,OpenAIImageVariationsHandler.get_sync_client   s0    
 >" $M
  #M    returnc                 (    |t        di |}|S |}|S r   )r   r   s       r   get_async_clientz-OpenAIImageVariationsHandler.get_async_client!   s0     >' $M
  #Mr   api_keyapi_baseorganizationdataheadersmodeltimeoutmax_retrieslogging_objmodel_responseoptional_paramslitellm_paramsimageprovider_configc                   K   	 ||t         j                  ||	|d}| j                  ||      } |j                  j                  j
                  di | d {   }|j                         }|j                         }|
j                  ||||d       |j                  |t        di |t        j                  dt        j                  dd      	      |
||||d |

      S 7 # t        $ ra}t        |dd      }t        |dd       }t        |dt!        |            }t        |dd       }||rt        |dd       }t#        |||      d }~ww xY ww)Nr    base_urlhttp_clientr&   r'   r"   r   r   r$   r!   r    original_responseadditional_args   GEThttps://litellm.aimethodurlstatus_coderequest
r%   r)   raw_responser(   request_datar,   r*   r+   encodingr    r>     r$   textresponser>   messager$   r   )litellmclient_sessionr   imageswith_raw_responsecreate_variationparse
model_dump	post_call"transform_response_image_variationr   httpxResponseRequest	Exceptiongetattrstrr   )r   r    r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r   rA   rF   response_jsoner>   error_headers
error_texterror_responses                            r   async_image_variationsz3OpenAIImageVariationsHandler.async_image_variations,   s    $7	"$&55"* ," **2D + F "R!@!@!Q!Q!YTX!YYL#))+H$//1M !!"/& (! "  #EE,=}="^^ #!MM$*> (! /- F   Z@  		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		s=   EAC# C!BC#  E!C# #	E,AEEENcustom_llm_providerprint_verbosec                 0   	 t        j                  |xs dt        j                        }|t	        d| d      |	j                  dd      }|j                  |||	|xs i       }|j                  d      }|st	        d	|       |j                  d||||d
       |
j                  dd      r$| j                  |||xs i |||||||||||	|
      S ||t        j                  |||d}| j                  ||      } |j                  j                  j                  di |}|j!                         }|j#                         }|j%                  ||||d       |j'                  |t)        di |t+        j,                  dt+        j.                  dd            ||||	|
d |
      S # t0        $ ra}t3        |dd      }t3        |dd       }t3        |dt5        |            }t3        |dd       }||rt3        |dd       }t7        |||      d }~ww xY w) N )r%   providerz$image variation provider not found: .r'   r   )r%   r,   r*   r$   r#   z9data field is required, for openai image variations. Got=)r$   r!   complete_input_dict)inputr    r6   
async_callF)r!   r#   r$   r)   r    r(   r%   r&   r'   r"   r   r-   r,   r*   r+   r/   r2   r3   r4   r7   r8   r9   r:   r=   r@   r>   rD   r$   rE   rF   rG   r   )r
   #get_provider_image_variation_configr	   OPENAI
ValueErrorpop!transform_request_image_variationgetpre_callr]   rI   rJ   r   rK   rL   rM   rN   rO   rP   rQ   r   rR   rS   rT   rU   rV   rW   r   )r   r)   r    r!   r%   r,   r&   r^   r(   r*   r+   r_   	logger_fnr   r"   r$   r-   r'   r#   	json_datar   rA   rF   rX   rY   r>   rZ   r[   r\   s                                r   image_variationsz-OpenAIImageVariationsHandler.image_variationsw   s   $k	3WWkr%,,O
 & :;N:OqQ  *--mQ?K"DD /2	 E D (I OPTvV    & (+/! !  !!,622%"#Mr#1# +# +!-!$3$3#1 3  & #$&55"* ," ))2D * F L6==::KKXiXL#))+H$//1M !!"/& (! "  #EE,=}="^^ #!MM$*> (& /- F  "  		!!]C8K#Ay$7M FCF3J$Q
D9N$ '	4 H'] 		s    CF+ CF+ +	H4AHH)NNNNN)__name__
__module____qualname__r   r   dictr   r   r   rW   floatintr   r   r   r   r]   r   rp   r   r   r   r   r      s     !	{+	AE			II I sm	I
 %I I I }I %I I 'I &I I I I  2!I" 
#In -1&*"&!}%} } 	}
 }} } %} !} '} } }  )} sm}  $!}" 
#}r   r   )__doc__typingr   r   rR   openair   r   rI   litellm.types.utilsr   r   r	   litellm.utilsr
   (base_llm.image_variations.transformationr   custom_httpx.llm_http_handlerr   common_utilsr   r   r   r   r   <module>r      s6    &  &  F F / P > &a ar   