Ë
    uPêjä¤  ã            $       ó¢  — U d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZ erd dlmZ d dl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 d d
lm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%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-  e(«       Z.e(e/d<   d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dlFmGZGmHZHmIZI d dl+mJZJmKZKmLZLmMZM daNed   e/d<   dBd „ZOedeJfd!„«       ZPe	 	 	 	 	 	 	 	 	 	 	 	 dCd"eQd#eQdz  d$eRdz  d%eQeCz  dz  d&eQdz  d'eQdz  d(eQdz  d)eQdz  d*eQdz  d+eQdz  d,eQdz  d-ed.   dee	e	eJf   fd/„«       ZSe	 	 	 	 	 	 	 	 	 	 	 	 dCd0d1œd"eQd#eQdz  d$eRdz  d%eQeCz  dz  d&eQdz  d'eQdz  d(eQdz  d)eQdz  d*eQdz  d+eQdz  d,eQdz  d-ed0   deJfd2„«       ZSe	 	 	 	 	 	 	 	 	 	 	 	 dCd"eQd#eQdz  d$eRdz  d%eQeCz  dz  d&eQdz  d'eQdz  d(eQdz  d)eQdz  d*eQdz  d+eQdz  d,eQdz  deJee	e	eJf   z  fd3„«       ZSedeJfd4„«       ZTe	 	 	 	 	 dDd5e1d#eQd$eRd&ed6   d'eQdz  d)eQdz  deJfd7„«       ZUe	 	 	 	 	 	 	 	 	 	 	 	 	 	 dEd5e1eVe1   z  dz  d"eQdz  d#eQdz  d8eQdz  d$eRdz  d%eQeCz  dz  d&eQdz  d'eQdz  d)eQdz  d9eWeQe	f   dz  d:eWeQe	f   dz  d;eWeQe	f   dz  d<eXej²                  z  dz  d=eQdz  deJee	e	eJf   z  fd>„«       ZZe	 	 	 	 	 	 	 	 	 	 	 dFd5e1eVe1   z  d#eQd"eQd8eQdz  d$eRdz  d%eQeCz  dz  d&eQdz  d'eQdz  d)eQdz  d9eWeQe	f   dz  d:eWeQe	f   dz  d;eWeQe	f   dz  d<eXej²                  z  dz  d=eQdz  deJfd?„«       Z[d@eQde	fdA„Z\y)Gé    N)Ú	Coroutine)Úpartial)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚOptionalÚcastÚoverload©ÚImageEditRequestUtils)Úclient)ÚDEFAULT_IMAGE_ENDPOINT_MODEL)Úrequest_timeout)ÚLiteLLMUnknownProvider)ÚLogging)Úflatten_form_field_values)Úmock_image_generation)ÚBaseImageEditConfigÚBaseImageGenerationConfig)ÚAsyncHTTPHandlerÚHTTPHandler)ÚBaseLLMHTTPHandler)Ú	CustomLLM)Úexception_typeÚget_litellm_paramsÚllm_http_handler)Ú	FileTypes)Úbfl_image_edit)Úbfl_image_generation)Úazure_chat_completionsÚbase_llm_aiohttp_handlerÚbase_llm_http_handlerÚbedrock_image_editÚbedrock_image_generationÚopenai_chat_completionsÚopenai_image_variations)Úget_secret_str)ÚImageEditOptionalRequestParams)ÚImageGenerationRequestQuality)ÚGenericLiteLLMParams)Ú!LITELLM_IMAGE_VARIATION_PROVIDERSÚLlmProvidersÚall_litellm_params)ÚImageResponseÚProviderConfigManagerÚget_llm_providerÚget_optional_params_image_genr   Ú_ImageEditRequestUtils_cacheÚreturnc                  ót   — t         €%t        j                  t        «      } | j                  a t         €J ‚t         S )z7Get ImageEditRequestUtils, loading it lazily if needed.)r3   Ú	importlibÚimport_moduleÚ__name__r   )Úmodules    úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/images/main.pyÚ_get_ImageEditRequestUtilsr;   D   s8   € ô $Ð+ä!×/Ñ/´Ó9ˆØ'-×'CÑ'CÐ$Ü'Ð3Ð3Ð3Ü'Ð'ó    c               �   óx  K  — t        j                  «       }t        | «      dkD  r| d   n|d   }d|d<   d}	 t        t        g| ¢­i |¤Ž}t        j                  «       }t        |j                  |«      }t        ||j                  dd«      ¬«      \  }}}}|j                  d|«      ƒ d{  –—† }	d}
t        |	t        «      rt        di |	¤Ž}
n2t        |	t        «      r|	}
nt        j                  |	«      r
|	ƒ d{  –—† }
|
€t        d«      ‚|
S 7 Œc7 Œ# t         $ r}|xs d	}t#        |||| |¬
«      ‚d}~ww xY w­w)a•  
    Asynchronously calls the `image_generation` function with the given arguments and keyword arguments.

    Parameters:
    - `args` (tuple): Positional arguments to be passed to the `image_generation` function.
    - `kwargs` (dict): Keyword arguments to be passed to the `image_generation` function.

    Returns:
    - `response` (Any): The response returned by the `image_generation` function.
    r   ÚmodelTÚaimg_generationNÚapi_base©r>   r@   z?Unable to get Image Response. Please pass a valid llm_provider.Úopenai©r>   Úcustom_llm_providerÚoriginal_exceptionÚcompletion_kwargsÚextra_kwargs© )ÚasyncioÚget_event_loopÚlenr   Úimage_generationÚcontextvarsÚcopy_contextÚrunr1   ÚgetÚrun_in_executorÚ
isinstanceÚdictr/   ÚiscoroutineÚ
ValueErrorÚ	Exceptionr   ©ÚargsÚkwargsÚloopr>   rD   ÚfuncÚctxÚfunc_with_contextÚ_Úinit_responseÚresponseÚes               r:   Úaimage_generationrb   P   sR  è ø€ ô ×(Ñ(Ó*€DÜ! $›i¨!šm�4˜’7°¸±€Eà $€FÐÑØÐð!
äÔ.Ð@°Ò@¸Ñ@ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9Ðä'7¸eÈfÏjÉjÐYcÐeiÓNjÔ'kÑ$ˆÐ  1ð &*×%9Ñ%9¸$Ð@QÓ%R×Rˆà)-ˆÜ�m¤TÔ*Ü$Ñ5 }Ñ5‰HÜ˜¤}Ô5Ø$‰HÜ× Ñ  Ô/Ø*×*ˆHàÐÜÐ^Ó_Ð_àˆð  Søð +ùô ò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsN   ‚4D:·A4D Â+DÂ,AD Ã;DÃ<D ÄD:ÄD ÄD Ä	D7ÄD2Ä2D7Ä7D:Úpromptr>   ÚnÚqualityÚresponse_formatÚsizeÚstyleÚuserÚapi_keyr@   Úapi_versionr?   Tc                 ó   — y ©NrH   ©rc   r>   rd   re   rf   rg   rh   ri   Útimeoutrj   r@   rk   rD   r?   rY   s                  r:   rL   rL   ˆ   ó   € ð& r<   F)r?   c                 ó   — y rm   rH   rn   s                  r:   rL   rL       rp   r<   c                 ól  — 	 t        «       }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  d	d«      }|j                  d
i «      }|j                  d«      }|j                  dd«      }|j                  dd«      }|j                  dd«      xs i }|j                  dd«      }|�|j                  |«       t        j                  j                  «       }d}|€|�t        |||
¬«      \  }}}}
nd}d}||j                  d<   g d¢}t        }||z   } |j                  «       D �!�"ci c]  \  }!}"|!| vsŒ|!|"“Œ }#}!}"d}$|�D|t        j                  j                  «       v r$t        j                  |xs |t        |«      ¬«      }$t        dE|xs |||||||||$dœ	|#¤Ž}%t!        dEi |¤Ž}&|}'|'j#                  ||||%|d||||di dœ|¬«       d|'j$                  vr||'j$                  d<   |�t'        ||¬«      S |dk(  �rwt)        d«      xs d}(|
xs t        j*                  xs t)        d«      }
|xs t        j,                  xs t)        d«      }|	xs< t        j.                  xs* t        j0                  xs t)        d«      xs t)        d «      }	|%j3                  d!d«      })t5        |)t6        «      r|)r|)n
t)        d"«      }*|€`d#d$lm}+ |&j                  d%«      },|&j                  d&«      }-|&j                  d'«      }.|&j                  d(«      xs d)}/|,r|-r|.r |+|,|-|.|/¬*«      }d+d,i}0|	�|	|0d-<   |0j                  «       D ]  \  }!}"|!|vsŒ|"||!<   Œ t=        j>                  || ||	|
|*|||%||||||&¬.«      }|S |t        j                  j@                  t        j                  jB                  t        j                  jD                  t        j                  jF                  t        j                  jH                  t        j                  jJ                  t        j                  jL                  t        j                  jN                  t        j                  jP                  f	v rH|$€tS        d/|› �«      ‚|
xs t        j*                  }1|1|&d0<   tT        jW                  |	|| |$|%||&|||¬1«
      S |d2k(  r,|€tY        d3«      ‚t[        j>                  || ||%|&|||||¬4«
      S |d5k(  rŠd#d6l.m/}2m0}3 |2jc                  |
«      }
|2je                  |	«      }	|�||%d<   tg        d7„ |D «       «      }4d-|4v xs d8|4v }5|5r|n
 |3|	|&d-¬9«      }6d+d,i|6¥|¥}7t=        j>                  || ||	|
d|||%|||||7|&¬.«      }|S |dk(  s/|t        jh                  jj                  k(  s|t        jl                  v r@|�||%d<   |j                  d:d«      }8to        j>                  || ||	xs ||
||%||8|||¬;«      }|S |d<k(  r.|€tY        d=«      ‚tq        j>                  || |||%||||
|	¬>«
      }|S |t        jr                  v ršd}9t        jt                  D ]  }:|:d?   |k(  sŒ|:d@   }9Œ |9€tw        ||¬A«      ‚|dBu r2d};|�t5        |tx        «      r|};|9j{                  || |	|
||%|||;¬C«	      }|S d}<|�t5        |t|        «      r|}<|9j?                  || |	|
||%|||<¬C«	      }|S c c}"}!w # tX        $ r}=t        |||=t        «       |¬D«      ‚d}=~=ww xY w)Fzv
    Maps the https://api.openai.com/v1/images/generations endpoint.

    Currently supports just Azure + OpenAI.
    r?   FÚlitellm_call_idNÚ	logger_fnÚmock_responseÚproxy_server_requestÚazure_ad_token_providerÚ
model_infoÚmetadataÚlitellm_logging_objr   Úextra_headersÚheadersÚ
base_model)r>   rD   r@   údall-e-2rB   r>   )ri   r   r@   rk   rj   Údeployment_idÚorganizationÚbase_urlÚdefault_headersro   Úmax_retriesrd   re   rg   rh   ©r>   Úprovider)	r>   rd   re   rf   rg   rh   ri   rD   Úprovider_config)ro   Úazurers   rt   rv   rx   Úpreset_cache_keyÚstream_response©rY   r>   ri   Úoptional_paramsÚlitellm_paramsrD   rD   )r>   ru   r‡   ÚAZURE_API_TYPEÚAZURE_API_BASEÚAZURE_API_VERSIONÚAZURE_OPENAI_API_KEYÚAZURE_API_KEYÚazure_ad_tokenÚAZURE_AD_TOKENr   )Ú get_azure_ad_token_from_entra_idÚ	tenant_idÚ	client_idÚclient_secretÚazure_scopez,https://cognitiveservices.azure.com/.default)r•   r–   r—   ÚscopezContent-Typezapplication/jsonzapi-key)r>   rc   ro   rj   r@   r’   rw   Úlogging_objr‹   Úmodel_responserk   r?   r   r|   rŒ   z-image generation config is not supported for r@   )
rj   r>   rc   Ú image_generation_provider_configÚ(image_generation_optional_request_paramsrD   rŒ   rš   ro   r   Úblack_forest_labsú+Model needs to be set for black_forest_labs)
r>   rc   r›   r‹   rŒ   rš   ro   r{   r   r?   Úazure_ai)ÚAzureFoundryModelInfoÚget_azure_ai_auth_headersc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrm   )Úlower)Ú.0Únames     r:   ú	<genexpr>z#image_generation.<locals>.<genexpr>´  s   è ø€ Ò+M¸T¨D¯J©J¯LÑ+Mùs   ‚Úauthorization)rj   rŒ   Úapi_key_headerr€   )r>   rc   ro   rj   r@   rš   r‹   r›   r€   r?   r   r|   Úbedrockú!Model needs to be set for bedrock)
r>   rc   ro   rš   r‹   r›   r?   r   r@   rj   r…   Úcustom_handler©r>   rD   T)	r>   rc   rj   r@   r›   r‹   rš   ro   r   rC   rH   )@ÚlocalsrP   ÚupdateÚlitellmÚutilsr/   r1   Ú_hidden_paramsr.   Úitemsr-   Ú_member_map_Úvaluesr0   Ú$get_provider_image_generation_configr2   r   Úupdate_from_kwargsÚmodel_call_detailsr   r(   r@   rk   rj   Ú	azure_keyÚpoprR   ÚstrÚlitellm.llms.azure.common_utilsr”   r!   rL   ÚRECRAFTÚAIMLÚGEMINIÚFAL_AIÚ	STABILITYÚRUNWAYMLÚ	VERTEX_AIÚ
OPENROUTERÚ	DASHSCOPErU   r   Úimage_generation_handlerrV   r    Ú"litellm.llms.azure_ai.common_utilsr¡   r¢   Úget_api_baseÚget_api_keyÚ	frozensetÚLITELLM_PROXYÚvalueÚopenai_compatible_providersr&   r%   Ú_custom_providersÚcustom_provider_mapr   r   rb   r   r   )>rc   r>   rd   re   rf   rg   rh   ri   ro   rj   r@   rk   rD   rY   rX   r?   rs   rt   ru   rv   rw   rx   ry   rz   r   r{   r|   r}   r›   Údynamic_api_keyÚopenai_paramsrŒ   Údefault_paramsÚkÚvÚnon_default_paramsÚimage_generation_configr‹   Úlitellm_params_dictÚloggingÚapi_typeÚazure_ad_token_paramr’   r”   r•   r–   r—   r˜   r‚   Ú	_api_baser¡   r¢   Úcaller_header_namesÚcaller_set_authÚauth_headersÚrequest_headersr€   r¬   ÚitemÚasync_custom_clientÚcustom_clientra   s>                                                                 r:   rL   rL   ¸   sõ  € ð,e
Ü“hˆØ!'§¡Ð,=¸uÓ!EˆØ!'§¡Ð,=¸tÓ!DˆØ!Ÿ:™: k°4Ó8ˆ	Ø+1¯:©:°oÀtÓ+LˆØ&,§j¡jÐ1GÈÓ&NÐØ"(§*¡*Ð-FÈÓ"MÐØ"ŸJ™J |°TÓ:ˆ
Ø Ÿ*™* Z°Ó4ˆØ8>¿
¹
ÐCXÓ8YÐØŸ
™
 8¨TÓ2ˆØ%Ÿz™z¨/¸4Ó@ˆØ%Ÿz™z¨)°TÓ:Ò@¸bˆØ"ŸJ™J |°TÓ:ˆ
ØÐ$Ø�N‰N˜=Ô)Ü(/¯©×(CÑ(CÓ(EˆØ&*ˆØÐÐ 3Ð ?ÜDTØØ$7Ø!ôEÑAˆEÐ&¨¹ð ˆEØ"*ÐØ16ˆ×%Ñ% gÑ.ò 
ˆô" !3ˆØ -°Ñ >ˆà#Ÿ\™\›^÷%
Ù�Q˜¨q¸Ò/FˆAˆq‰Dð%
Ðñ %
ð EIÐØÐ*Ð/BÄl×F_ÑF_×FfÑFfÓFhÑ/hÜ&;×&`Ñ&`Ø Ò) EÜ%Ð&9Ó:ô'Ð#ô
 "?ð "
ØÒ% ØØØ+ØØØØ 3Ø3ñ"
ð !ñ"
ˆô &8Ñ%A¸&Ñ%AÐà"5ˆØ×"Ñ"ØØØØ+à"ØØ#2Ø&Ø(<Ø(Ø$(Ø#%ñ	ð !4ð 	#ô 	
ð" !¨×(BÑ(BÑBØ@SˆG×&Ñ&Ð'<Ñ=ØÐ$Ü(¨uÀMÔRÐRà 'Ó)ä,Ð-=Ó>ÒIÀ'ˆHàÒW¤7×#3Ñ#3ÒW´~ÐFVÓ7WˆHà%Òc¬×)<Ñ)<ÒcÄÐObÓ@cˆKð ò 3Ü—?‘?ò3ä×$Ñ$ò3ô "Ð"8Ó9ò3ô " /Ó2ð ð +:×*=Ñ*=Ð>NÐPTÓ*UÐ ô Ð2´CÔ8Ñ=Qñ %ä#Ð$4Ó5ð ð 'Ð.õð
 $7×#:Ñ#:¸;Ó#G�	Ø#6×#:Ñ#:¸;Ó#G�	Ø':×'>Ñ'>¸Ó'O�Ø1×5Ñ5°mÓDÒvÐHv�ñ ¡©}Ù.NØ"+Ø"+Ø&3Ø)ô	/Ð+ð Ð 2ðˆOð
 Ð"Ø-4� 	Ñ*à'×-Ñ-Ó/ò #‘��1Ø˜GÒ#Ø!"�G˜A’Jð#ô 4×DÑDØØØØØ!Ø-Ø(?Ø/Ø /Ø-Ø'Ø /ØØØ2ôˆNðF Ðð_ !Ü× Ñ ×(Ñ(Ü× Ñ ×%Ñ%Ü× Ñ ×'Ñ'Ü× Ñ ×'Ñ'Ü× Ñ ×*Ñ*Ü× Ñ ×)Ñ)Ü× Ñ ×*Ñ*Ü× Ñ ×+Ñ+Ü× Ñ ×*Ñ*ð
%
ñ 

ð 'Ð.Ü Ð#PÐQdÐPeÐ!fÓgÐgð  (Ò;¬7×+;Ñ+;ˆIØ.7Ð 
Ñ+ä#×<Ñ<ØØØØ1HØ9HØ$7Ø2Ø/ØØð =ó ð ð !Ð$7Ò7àˆ}ÜÐ MÓNÐNÜ'×8Ñ8ØØØ-Ø /Ø2Ø/ØØ+ØØ /ôð ð ! JÒ.÷ð
 -×9Ñ9¸(ÓCˆHØ+×7Ñ7¸Ó@ˆGØÐ(Ø3@� Ñ0ä"+Ñ+MÀWÔ+MÓ"MÐØ'Ð+>Ð>ÒhÀ/ÐUhÐBhˆOñ #ñ á.Ø#Ø#6Ø#,ôð ð Ð 2ð&àð&ð ð&ˆOô 4×DÑDØØØØØ!Ø#Ø(?Ø/Ø /Ø-Ø'Ø /ØØ'Ø2ôˆNðJ Ððg   8Ò+Ø"¤l×&@Ñ&@×&FÑ&FÒFØ"¤g×&IÑ&IÑIàÐ(Ø3@� Ñ0à.4¯j©j¸ÈÓ.NˆLÜ4×EÑEØØØØÒ2 ?Ø!Ø/Ø /Ø-Ø)Ø /ØØôˆNðV Ðð{ ! IÒ-Øˆ}ÜÐ CÓDÐDÜ5×FÑFØØØØ/Ø /Ø-Ø /ØØ!ØôˆNðt Ðð] !¤G×$=Ñ$=Ñ=à/3ˆNÜ×3Ñ3ò <�Ø˜
Ñ#Ð':Ó:Ø%)Ð*:Ñ%;‘Nð<ð Ð%Ü,°5ÐNaÔbÐbð  $Ñ&Ø?CÐ#ØÐ%¬*°VÔ=MÔ*NØ*0Ð'ð "0×!AÑ!AØØ!Ø#Ø%Ø#1Ø$3Ø 3Ø#Ø.ð "Bó 
"�ð: Ðð# 59�ØÐ%¬*°V¼[Ô*IØ$*�Mð "0×!@Ñ!@ØØ!Ø#Ø%Ø#1Ø$3Ø 3Ø#Ø(ð "Aó 
"�ð ÐùóY	%
øôZ	 ò 
äØØ 3Ø Ü$›hØô
ð 	
ûð
úsr   ‚E7\ Å9\Æ\ÆB<\ ÉE\ Î,\ ÏD,\ Ó20\ Ô#B\ Ö2A3\ Ø&2\ Ù/\ Ú	A\ Û1\ Ü\ Ü	\3Ü\.Ü.\3c               �   óÒ  K  — t        j                  «       }|j                  dd«      }|j                  dd«      }d|d<   	 t        t        g| ¢­i |¤Ž}t        j                  «       }t        |j                  |«      }|€$|�"t        ||j                  dd«      ¬«      \  }}}}|j                  d|«      ƒ d{  –—† }	t        |	t        «      st        |	t        «      rt        |	t        «      rt        d
i |	¤Ž}	|	}
|
S t        j                  |	«      r|	ƒ d{  –—† }
|
S |j                  d|«      ƒ d{  –—† }
|
S 7 Œ€7 Œ$7 Œ
# t        $ r}|xs d}t        |||| |¬	«      ‚d}~ww xY w­w)a‘  
    Asynchronously calls the `image_variation` function with the given arguments and keyword arguments.

    Parameters:
    - `args` (tuple): Positional arguments to be passed to the `image_variation` function.
    - `kwargs` (dict): Keyword arguments to be passed to the `image_variation` function.

    Returns:
    - `response` (Any): The response returned by the `image_variation` function.
    r>   NrD   TÚ
async_callr@   rA   rB   rC   rH   )rI   rJ   rP   r   Úimage_variationrM   rN   rO   r1   rQ   rR   rS   r/   rT   rV   r   rW   s               r:   Úaimage_variationræ   6  s€  è ø€ ô ×(Ñ(Ó*€DØ—:‘:˜g tÓ,€EØ Ÿ*™*Ð%:¸DÓAÐà€Fˆ<Ñð
äœoÐ?°Ò?¸Ñ?ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐàÐ&¨5Ð+<Ü+;À%ÐRX×R\ÑR\Ð]gÐimÓRnÔ+oÑ(ˆAÐ" A qð #×2Ñ2°4Ð9JÓK×KˆÜ�m¤TÔ*¬j¸ÌÔ.VÜ˜-¬Ô.Ü -Ñ >°Ñ >�Ø$ˆHð ˆô × Ñ  Ô/Ø*×*ˆHð ˆð "×1Ñ1°$Ð8IÓJ×JˆHØˆð Løð +øð Kùäò 
Ø1Ò=°XÐÜØØ 3Ø Ø"Øô
ð 	
ûð
üsy   ‚>E'ÁA8E  Â9D:Â:AE  Ã<E'Ã=E  ÄD<ÄE  ÄE'ÄE  Ä3D>Ä4E  Ä9E'Ä:E  Ä<E  Ä>E  Å 	E$Å	EÅE$Å$E'Úimage)ÚurlÚb64_jsonc                 ó*  — |j                  dd «      }t        t        |j                  d«      «      }t        di |¤Ž}	t	        ||	j                  dd «      |	j                  dd «      |	j                  dd «      ¬«      \  }}
}}	 t        |
«      }t        |«      }t        «       }d }t        j                  |xs d	|¬
«      }|€t        d|
› dt        › �«      ‚|j                  |	j                  dd «      «      }|j                  |	j                  dd «      «      }|t        j                  k(  rJ|€t        d«      ‚|€t        d«      ‚t        j                  ||||| |	j                  dd «      |
|i |	¬«
      }ne|t        j                   k(  rR|€t        d«      ‚|€t        d«      ‚t#        j                  ||||| |	j                  dd «      xs t$        |
|i |	|¬«      }|€t        d|
› dt        › �«      ‚|S # t        $ r t        d|
› dt        › �«      ‚w xY w)Nr   rz   rD   r@   rj   )r>   rD   r@   rj   z"Invalid image variation provider: z. Supported providers are: Ú r„   z_image variation provider has no known model info config - required for getting api keys, etc.: z/API key is required for OpenAI image variationsz0API base is required for OpenAI image variationsro   )
r›   rj   r@   r>   rç   ro   rD   rš   r‹   rŒ   z.API key is required for Topaz image variationsz/API base is required for Topaz image variations)r›   rj   r@   r>   rç   ro   rD   rš   r‹   rŒ   r   rH   )rP   r
   ÚLiteLLMLoggingObjr   r1   r-   r,   rU   r/   r0   Úget_provider_model_inforÉ   rÈ   ÚOPENAIr'   Úimage_variationsÚTOPAZr"   ÚDEFAULT_REQUEST_TIMEOUT)rç   r>   rd   rf   rg   ri   rY   r   rz   rŒ   rD   rÐ   r@   Úllm_providerÚimage_variation_providerr›   r`   r†   rj   s                      r:   rå   rå   i  s£  € ð —J‘J˜x¨Ó.€Fä!%Ô&7¸¿¹ÐDYÓ9ZÓ![Ðô /Ñ8°Ñ8€Nä<LØØ*×.Ñ.Ð/DÀdÓKØ×#Ñ# J°Ó5Ø×"Ñ" 9¨dÓ3ô	=Ñ9€EÐ °ð
Ü*Ð+>Ó?ˆÜ*KÈLÓ*YÐ ô
 *›O€Nà%)€Hä2×JÑJØŠk�rØô€Oð
 ÐÜØmð  oBð  nCð  C^ô  _@ð  ^Að  Bó
ð 	
ð %×0Ñ0°×1CÑ1CÀIÈtÓ1TÓU€GØ×+Ñ+¨N×,>Ñ,>¸zÈ4Ó,PÓQ€HàÔ#D×#KÑ#KÒKØˆ?ÜÐNÓOÐOØÐÜÐOÓPÐPä*×;Ñ;Ø)ØØØØØ"×&Ñ& y°$Ó7Ø 3Ø+ØØ)ô
‰ð 
"Ô%F×%LÑ%LÒ	LØˆ?ÜÐMÓNÐNØÐÜÐNÓOÐOä+×<Ñ<Ø)ØØØØØ"×&Ñ& y°$Ó7ÒRÔ;RØ 3Ø+ØØ)Øô
ˆð ÐÜØ0Ð1DÐ0EÐE`ô  bCð  aDð  Eó
ð 	
ð €OøôA ò 
ÜØ0Ð1DÐ0EÐE`ô  bCð  aDð  Eó
ð 	
ð
ús   ÂG3 Ç3HÚmaskr{   Úextra_queryÚ
extra_bodyro   rD   c                 óH
  — t        «       }	 g d¢}t        }||z   }|j                  «       D ��ci c]  \  }}||vsŒ||“Œ }}}|j                  d«      }|j                  dd«      }|j                  dd«      }|j                  di «      }|j	                  dd«      d	u }t        | t        «      r| n| �| gng }|j                  d
«      }i }t        |t        «      r|j                  |«       t        |	t        «      r|j                  |	«       |rt        |«      }	t        d$i |¤Ž}t        |xs t        |¬«      \  }}}}|t        j                  v �r8d} t        j                  D ]  }!|!d   |k(  sŒ|!d   } Œ | €t        ||¬«      ‚t!        «       }"|r|d}#|j                  d«      �0t        |j                  d«      t"        «      r|j                  d«      }#| j%                  ||||"|j                  d«      |j                  d«      ||||#¬«
      S d}$|j                  d«      �0t        |j                  d«      t&        «      r|j                  d«      }$| j)                  ||||"|j                  d«      |j                  d«      ||||$¬«
      S t+        j,                  |t        j.                  |«      ¬«      }%|%€t1        d|› �«      ‚|j                  |«       t3        «       j5                  |«      }&t3        «       j7                  ||%|&|j                  d«      |j                  d«      ¬«      }'|dk(  s|dk(  s|t        j8                  v r-|'j                  t;        |t        |t        «      r|nd«      «       |j=                  |||t        |'«      i |'¥||dœ¥|¬«       |dk(  rt|€t?        d«      ‚|'j                  |«       tA        j(                  ||||||'t!        «       ||j                  d«      |j                  d«      |	|j                  d«      ¬«      S |dk(  rJ|'j                  |«       tC        jD                  ||||%|'||||	||xs tF        ||j                  d«      ¬«      S |d k(  rT|€t?        d!«      ‚|'j                  |«       tI        j(                  ||||'|||xs tF        |	|j                  d«      |¬"«
      S tC        jD                  ||||%|'||||	||xs tF        ||j                  d«      ¬«      S c c}}w # t>        $ r}(t        jJ                  |||(||¬#«      ‚d}(~(ww xY w)%zW
    Maps the image edit functionality, similar to OpenAI's images/edits endpoint.
    )ri   r   r@   rk   rj   r   r€   r�   r‚   ro   rƒ   rd   re   rg   rh   rä   rz   rs   Nrx   ry   rä   FTr|   r­   r…   r¬   r   rj   r@   )
r>   rç   rc   r›   rj   r@   r‹   rš   ro   r   r„   z image edit is not supported for Údrop_paramsÚadditional_drop_params)r>   Úimage_edit_provider_configÚimage_edit_optional_paramsrø   rù   rB   r‡   )rs   rx   rŠ   rª   r«   )r>   rç   rc   ro   rš   r‹   r›   Úaimage_editr   r@   r{   rj   Ú	stability)r>   rç   rc   rú   Ú"image_edit_optional_request_paramsrD   rŒ   rš   r{   rö   ro   Ú	_is_asyncr   rž   rŸ   )
r>   rç   rc   rþ   rŒ   rš   ro   r{   r   rü   rC   rH   )&r®   r.   r³   rP   rº   rR   ÚlistrS   r¯   r+   r1   r   r°   rÎ   rÏ   r   r/   r   rü   r   Ú
image_editr0   Úget_provider_image_edit_configr-   rU   r;   Ú'get_requested_image_edit_optional_paramÚget_optional_params_image_editrÍ   r   r·   rV   r$   r#   Úimage_edit_handlerrñ   r   r   ))rç   rc   r>   rô   rd   re   rf   rg   ri   r{   rõ   rö   ro   rD   rY   Ú
local_varsrÑ   Úlitellm_params_listrÒ   rÓ   rÔ   rÕ   rz   rs   rx   ry   rÿ   ÚimagesÚheaders_from_kwargsÚmerged_extra_headersrŒ   r^   r¬   rà   r›   rá   râ   rú   rû   Úimage_edit_request_paramsra   s)                                            r:   r  r  É  s»  € ô0 ›€Jð_
ò 
ˆô$ &8ÐØ -Ð0CÑ Cˆà#Ÿ\™\›^÷%
Ù�Q˜¨q¸Ò/FˆAˆq‰Dð%
Ðñ %
ð 9?¿
¹
ÐCXÓ8YÐØ-3¯Z©ZÐ8IÈ4Ó-PˆØ"ŸJ™J |°TÓ:ˆ
Ø Ÿ*™* Z°Ó4ˆØ!Ÿ:™: l°EÓ:¸dÐBˆ	ô ",¨E´4Ô!8™È%ÐJ[À¹wÐacˆà%+§Z¡Z°	Ó%:ÐØ68ÐÜÐ)¬4Ô0Ø ×'Ñ'Ð(;Ô<Ü�m¤TÔ*Ø ×'Ñ'¨Ô6áÜ Ð!5Ó6ˆMô !5Ñ >°vÑ >ˆÜ+;ØÒ7Ô7Ø 3ô,
Ñ(ˆÐ" A qð ¤'×";Ñ";Ò;Ø/3ˆNÜ×3Ñ3ò <�Ø˜
Ñ#Ð':Ó:Ø%)Ð*:Ñ%;‘Nð<ð Ð%Ü,°5ÐNaÔbÐbä$1£OˆNáØ?CÐ#Ø—:‘:˜hÓ'Ð3¼
À6Ç:Á:ÈhÓCWÔYiÔ8jØ*0¯*©*°XÓ*>Ð'à%×1Ñ1ØØ Ø!Ø#1Ø"ŸJ™J yÓ1Ø#ŸZ™Z¨
Ó3Ø$*Ø 3Ø#Ø.ð 2ó ð ð 59�Ø—:‘:˜hÓ'Ð3¼
À6Ç:Á:ÈhÓCWÔYdÔ8eØ$*§J¡J¨xÓ$8�Mà%×0Ñ0ØØ Ø!Ø#1Ø"ŸJ™J yÓ1Ø#ŸZ™Z¨
Ó3Ø$*Ø 3Ø#Ø(ð 1ó ð ô BW×AuÑAuØÜ×)Ñ)Ð*=Ó>ôB
Ð"ð
 &Ð-ÜÐ?Ð@SÐ?TÐUÓVÐVà×Ñ˜&Ô!ô 'Ó(×PÑPÐQ[Ó\ð 	#ô 2LÓ1M×1lÑ1lØØ'AØ'AØŸ
™
 =Ó1Ø#)§:¡:Ð.FÓ#Gð 2mó 2
Ð!ð   8Ò+Ø" gÒ-Ø"¤g×&IÑ&IÑIà%×,Ñ,Ü)Ø&Ü",¨Z¼Ô">‘JÀDóôð 	×.Ñ.ØØØÜ Ð!:Ó;ðØ+ðà#2Ø(òð
 !4ð 	/ô 	
ð  )Ò+Øˆ}ÜÐ CÓDÐDØ%×,Ñ,Ð-?Ô@Ü%×0Ñ0ØØØØØ/Ø 9Ü,›Ø%Ø—z‘z (Ó+ØŸ™ JÓ/Ø+ØŸ
™
 9Ó-ôð ð ! KÒ/Ø%×,Ñ,Ð-?Ô@Ü(×;Ñ;ØØØØ+EØ3LØ$7Ø-Ø/Ø+Ø%ØÒ:Ô#:Ø#Ø—z‘z (Ó+ôð ð !Ð$7Ò7àˆ}ÜÐ MÓNÐNØ%×,Ñ,Ð-?Ô@Ü!×,Ñ,ØØØØ3LØ-Ø/ØÒ:Ô#:Ø+Ø—z‘z (Ó+Ø%ôð ô %×7Ñ7ØØØØ'AØ/HØ 3Ø)Ø+Ø'Ø!ØÒ6Ô6ØØ—:‘:˜hÓ'ô
ð 	
ùóg%
øôF ò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
úsW   Œ"S9 ®S3»S3Á D.S9 Å/BS9 ÈA;S9 Ê	FS9 ÐAS9 Ñ!AS9 Ò:8S9 Ó3S9 Ó9	T!ÔTÔT!c              ‹   óF  K  — t        «       }	 t        j                  «       }d|d<   |€,t        j                  ||j                  dd«      ¬«      \  }}}}t        | t        «      r| n| g}t        t        f||||||||||	|
|||dœ|¤Ž}t        j                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }t        j                  |«      r|ƒ d{  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}t        j                   |||||¬«      ‚d}~ww xY w­w)a}  
    Asynchronously calls the `image_edit` function with the given arguments and keyword arguments.

    Parameters:
    - `args` (tuple): Positional arguments to be passed to the `image_edit` function.
    - `kwargs` (dict): Keyword arguments to be passed to the `image_edit` function.

    Returns:
    - `response` (Any): The response returned by the `image_edit` function.
    Trä   Nr�   rA   )rç   rc   rô   r>   rd   re   rf   rg   ri   r{   rõ   rö   ro   rD   rC   )r®   rI   rJ   r°   r1   rP   rR   r   r   r  rM   rN   rO   rQ   rT   rV   r   )rç   r>   rc   rô   rd   re   rf   rg   ri   r{   rõ   rö   ro   rD   rY   r  rZ   r^   r  r[   r\   r]   r_   r`   ra   s                            r:   rü   rü   Ä  sW  è ø€ ô> ›€Jð0
Ü×,Ñ,Ó.ˆØ#ˆˆ|Ñð Ð&Ü+2×+CÑ+CØ j§n¡n°ZÀÓ&Fô,Ñ(ˆAÐ" A qô ",¨E´4Ô!8™¸u¸gˆäÜð
àØØØØØØ+ØØØ'Ø#Ø!ØØ 3ñ
ð  ñ!
ˆô& !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×Rˆä×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHàˆð  Søð +ùô
 ò 
Ü×$Ñ$ØØ 3Ø Ø(Øô
ð 	
ûð
üsY   ‚D!ŽB:C6 ÃC2Ã	C6 Ã'C4Ã(C6 Ã-D!Ã.C6 Ã1D!Ã2C6 Ã4C6 Ã6	DÃ?DÄDÄD!r¦   c                 ó–   — | dk(  r0ddl m} t        j                  t        «      }||j
                  d<   |S t        dt        ›d| ›�«      ‚)z*Lazy import handler for images.main moduler   é   r   zmodule z has no attribute )r±   r   r6   r7   r8   Ú__dict__ÚAttributeError)r¦   Ú_ImageEditRequestUtilsr9   s      r:   Ú__getattr__r    sN   € àÐ&Ò&åJô "×/Ñ/´Ó9ˆØ3Iˆ�‰Ð/Ñ0Ø%Ð%Ü
˜7¤8 ,Ð.@ÀÀÐIÓ
JÐJr<   )r4   r   )NNNNNNNiX  NNNN)r~   r  rè   NN)NNNNNNNNNNNNNN)NNNNNNNNNNN)]rI   rM   r6   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   Úlitellm.images.utilsr   Úhttpxr°   r   Úlitellm.constantsr   r   rñ   Úlitellm.exceptionsr   Ú*litellm.litellm_core_utils.litellm_loggingr   rì   Ú,litellm.litellm_core_utils.llm_request_utilsr   Ú)litellm.litellm_core_utils.mock_functionsr   Úlitellm.llms.base_llmr   r   Ú&litellm.llms.custom_httpx.http_handlerr   r   Ú*litellm.llms.custom_httpx.llm_http_handlerr   Úlitellm.llms.custom_llmr   Úlitellm.utilsr   r   r   Ú__annotations__Ú.openai.types.audio.transcription_create_paramsr   Ú1litellm.llms.black_forest_labs.image_edit.handlerr   Ú7litellm.llms.black_forest_labs.image_generation.handlerr    Úlitellm.mainr!   r"   r#   r$   r%   r&   r'   Úlitellm.secret_managers.mainr(   Úlitellm.types.images.mainr)   Úlitellm.types.llms.openair*   Úlitellm.types.routerr+   Úlitellm.types.utilsr,   r-   r.   r/   r0   r1   r2   r3   r;   rb   r»   ÚintrL   ræ   rå   r   rS   ÚfloatÚTimeoutr  rü   r  rH   r<   r:   ú<module>r/     s  ðÜ Û Û Ý %Ý ß O× OÑ OáÝ:ã ã õ Ý :Ý HÝ 5Ý >Ý SÝ RÝ Kß Pß PÝ IÝ -ß <ñ (:Ó';Ð Ð$Ó ;Ý Dõ MÝ X÷÷ ñ õ 8Ý DÝ CÝ 5÷ñ ÷
ó ð CGÐ ˜hÐ'>Ñ?Ó Fó(ð ð1
°ò 1
ó ð1
ðn 
ð ØØ:>Ø"&ØØØØØØØ"ØñØðà�‰:ðð ˆT�zðð Ð0Ñ0°4Ñ7ð	ð
 ˜4‘Zðð �‰*ðð �‰:ðð �‰*ðð �4‰Zðð �D‰jðð �t‘ðð ˜T‘]ðð" ˆs�C˜Ð&Ñ'ò#ó 
ðð. 
ð ØØ:>Ø"&ØØØØØØØ"Øðð ',òØðà�‰:ðð ˆT�zðð Ð0Ñ0°4Ñ7ð	ð
 ˜4‘Zðð �‰*ðð �‰:ðð �‰*ðð �4‰Zðð �D‰jðð �t‘ðð ˜U‘^ðð" ò#ó 
ðð. ð ØØ:>Ø"&ØØØØØØØ"Øñz
Øðz
à�‰:ðz
ð ˆT�zðz
ð Ð0Ñ0°4Ñ7ð	z
ð
 ˜4‘Zðz
ð �‰*ðz
ð �‰:ðz
ð �‰*ðz
ð �4‰Zðz
ð �D‰jðz
ð �t‘ðz
ð �Y˜s C¨Ð6Ñ7Ñ7òz
ó ðz
ðz ð/
¨}ò /
ó ð/
ðd ð ØØ27ØØñ\Øð\àð\ð ð\ð Ð.Ñ/ð	\ð
 �‰*ð\ð �‰*ð\ð ò\ó ð\ð~ à04ØØØØØ:>Ø"&ØØð ,0Ø)-Ø(,Ø,0à&*ñ#w
Ø�t˜I‘Ñ&¨Ñ-ðw
à�$‰Jðw
ð �‰:ðw
ð �‰*ð	w
ð
 ˆT�zðw
ð Ð0Ñ0°4Ñ7ðw
ð ˜4‘Zðw
ð �‰*ðw
ð �‰*ðw
ð ˜˜S˜‘> DÑ(ðw
ð �c˜3�h‘ $Ñ&ðw
ð �S˜#�X‘ Ñ%ðw
ð �U—]‘]Ñ" TÑ)ðw
ð" ˜t™ð#w
ð& �Y˜s C¨Ð6Ñ7Ñ7ò'w
ó ðw
ðt ð
 ØØ:>Ø"&ØØð ,0Ø)-Ø(,Ø,0à&*ñ#O
Ø�t˜I‘Ñ&ðO
àðO
ð ðO
ð �‰*ð	O
ð
 ˆT�zðO
ð Ð0Ñ0°4Ñ7ðO
ð ˜4‘ZðO
ð �‰*ðO
ð �‰*ðO
ð ˜˜S˜‘> DÑ(ðO
ð �c˜3�h‘ $Ñ&ðO
ð �S˜#�X‘ Ñ%ðO
ð �U—]‘]Ñ" TÑ)ðO
ð" ˜t™ð#O
ð& ò'O
ó ðO
ðd
K�cð 
K˜cô 
Kr<   