
    Mix              %       d   % S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJrJr  S SKrS SKrS SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJ r   S SK!J"r"J#r#  S SK$J%r%  S SK&J'r'  \%" 5       r(\%\)S'   S SK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9  S SK:J;r;J<r<J=r=J>r>  S SK?J@r@JArAJBrBJCrC  SSKDJErE  \S\@4S j5       rF\            S8S\GS\
\G   S\
\H   S\
\\G\74      S\
\G   S\
\G   S \
\G   S!\
\G   S"\
\G   S#\
\G   S$\
\G   S%\	S&   S\\\\@4   4S' jj5       rI\            S8S(S).S\GS\
\G   S\
\H   S\
\\G\74      S\
\G   S\
\G   S \
\G   S!\
\G   S"\
\G   S#\
\G   S$\
\G   S%\	S(   S\@4S* jjj5       rI\            S8S\GS\
\G   S\
\H   S\
\\G\74      S\
\G   S\
\G   S \
\G   S!\
\G   S"\
\G   S#\
\G   S$\
\G   S\\@\\\\@4   4   4S+ jj5       rI\S\@4S, j5       rJ\     S9S-\<S\GS\HS\	S.   S\
\G   S!\
\G   S\@4S/ jj5       rK\            S:S-\\<\\<   4   S\GS\
\G   S0\
\G   S\
\H   S\
\\G\74      S\
\G   S\
\G   S!\
\G   S1\
\\G\4      S2\
\\G\4      S3\
\\G\4      S4\
\\L\R                  4      S5\
\G   S\\@\\\\@4   4   4S6 jj5       rN\           S;S-\\<\\<   4   S\GS\GS0\
\G   S\
\H   S\
\\G\74      S\
\G   S\
\G   S!\
\G   S1\
\\G\4      S2\
\\G\4      S3\
\\G\4      S4\
\\L\R                  4      S5\
\G   S\@4S7 jj5       rOg)<    N)partial)	Any	CoroutineDictListLiteralOptionalUnioncastoverload)Loggingclientexception_typeget_litellm_params)DEFAULT_IMAGE_ENDPOINT_MODEL)request_timeout)LiteLLMUnknownProvider)r   )mock_image_generation)BaseImageEditConfigBaseImageGenerationConfig)AsyncHTTPHandlerHTTPHandler)BaseLLMHTTPHandler)	CustomLLMllm_http_handler)azure_chat_completionsbase_llm_aiohttp_handlerbase_llm_http_handlerbedrock_image_generationopenai_chat_completionsopenai_image_variationsvertex_image_generation)get_secret_str)ImageEditOptionalRequestParams)ImageGenerationRequestQuality)GenericLiteLLMParams)!LITELLM_IMAGE_VARIATION_PROVIDERS	FileTypesLlmProvidersall_litellm_params)ImageResponseProviderConfigManagerget_llm_providerget_optional_params_image_gen   )ImageEditRequestUtilsreturnc            	        #    [         R                  " 5       n[        U 5      S:  a  U S   OUS   nSUS'   Sn [        [        /U Q70 UD6n[
        R                  " 5       n[        UR                  U5      n[        X1R                  SS5      S9u  p  nUR                  SU5      I Sh  vN n	Sn
[        U	[        5      (       a  [        S0 U	D6n
O=[        U	[        5      (       a  U	n
O%[         R                  " U	5      (       a
  U	I Sh  vN n
U
c  [        S5      eU
$  Nt N! [          a  nU=(       d    S	n[#        UUUU US
9eSnAff = f7f)ay  
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r3   r5   z?Unable to get Image Response. Please pass a valid llm_provider.openair3   custom_llm_provideroriginal_exceptioncompletion_kwargsextra_kwargs )asyncioget_event_looplenr   image_generationcontextvarscopy_contextrunr-   getrun_in_executor
isinstancedictr+   iscoroutine
ValueError	Exceptionr   argskwargsloopr3   r9   funcctxfunc_with_context_init_responseresponsees               m/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/litellm/images/main.pyaimage_generationrX   6   s[     !!#D4y1}DG&/E $F%
'9$9&9 &&(#CGGT2'7**Z">(
$1
 #2249JKK,0mT**$5}5H}55$H  //**HQ   L +  
1=X 3 "
 	

sN   6EA0D" )D*AD" 	D 
D" ED"  D" "
E	,EE		Epromptr3   nqualityresponse_formatsizestyleuserapi_keyr5   api_versionr4   Tc                    g Nr=   rY   r3   rZ   r[   r\   r]   r^   r_   timeoutr`   r5   ra   r9   r4   rN   s                  rW   rA   rA   r       &     F)r4   c                    g rc   r=   rd   s                  rW   rA   rA      rf   rg   c                 <    [        5       nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S5      nUR                  S
0 5      nUR                  S5      nUR                  SS5      nUR                  SS5      nUR                  SS5      =(       d    0 nUR                  SS5      nUb  UR                  U5        [        R                  R                  5       nSnUc  Ub  [        UUU
S9u  pnn
OSnSnUUR                  S'   / SQn[        nUU-   n UR                  5        V!V"s0 s H  u  n!n"U!U ;  d  M  U!U"_M     n#n!n"Sn$UbI  U[        R                  R                  5       ;   a'  [        R                  " U=(       d    U[        U5      S9n$[        SCU=(       d    UUUUUUUUU$S.	U#D6n%[!        SC0 UD6n&Un'U'R#                  UUU%USUUUUUS0 S.	US9  SU'R$                  ;  a  UU'R$                  S'   Ub
  ['        UUS9$ US:X  Ga2  [)        S5      =(       d    Sn(U
=(       d"    [        R*                  =(       d    [)        S5      n
U=(       d"    [        R,                  =(       d    [)        S5      nU	=(       dK    [        R.                  =(       d4    [        R0                  =(       d    [)        S5      =(       d    [)        S 5      n	U%R3                  S!S5      =(       d    [)        S"5      n)S#U	S$.n*U*R                  5        H  u  n!n"U!U;  d  M  U"UU!'   M     [4        R6                  " UU UU	U
U)UUU%UUUUUU&S%9nU$ U[        R                  R8                  [        R                  R:                  [        R                  R<                  [        R                  R>                  [        R                  R@                  4;   a-  U$c  [C        S&U 35      e[D        RG                  U	UU U$U%UU&UUUS'9
$ US(:X  a  S)S*K$J%n+  U+RM                  U
5      n
U+RO                  U	5      n	Ub  UU%S'   S#U	S$.n*U*R                  5        H  u  n!n"U!U;  d  M  U"UU!'   M     [4        R6                  " UU UU	U
SUUU%UUUUUU&S%9nU$ US:X  d2  U[        RP                  RR                  :X  d  U[        RT                  ;   a;  UR                  S+S5      n,[V        R6                  " UU UU	=(       d    UU
UU%UU,UUS,9nU$ US-:X  a-  Uc  [Y        S.5      e[Z        R6                  " UU UUU%UUUU
U	S/9
nU$ US0:X  GaC  U%R3                  S1S5      =(       d;    U%R3                  S2S5      =(       d"    [        R\                  =(       d    [)        S35      n-U%R3                  S4S5      =(       d;    U%R3                  S5S5      =(       d"    [        R^                  =(       d    [)        S65      n.U%R3                  S7S5      =(       d$    U%R3                  S8S5      =(       d    [)        S95      n/U
=(       d4    [        R*                  =(       d    [)        S:5      =(       d    [)        S;5      n
[`        R6                  " UU UUU%UU-U.U/UU
US<9nU$ U[        Rb                  ;   a  Sn0[        Rd                   H  n1U1S=   U:X  d  M  U1S>   n0M     U0c	  [g        XS?9eUS@L a5  Sn2Ub  [i        U[j        5      (       a  Un2U0Rm                  UU U	U
UU%UUU2SA9	nU$ Sn3Ub  [i        U[n        5      (       a  Un3U0R7                  UU U	U
UU%UUU3SA9	nU$ s  sn"n!f ! [X         a  n4[q        UUU4[        5       USB9eSn4A4ff = f)Dzj
Maps the https://api.openai.com/v1/images/generations endpoint.

Currently supports just Azure + OpenAI.
r4   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)r3   r9   r5   dall-e-2r7   r3   )r_   r   r5   ra   r`   deployment_idorganizationbase_urldefault_headersre   max_retriesrZ   r[   r]   r^   r3   provider)	r3   rZ   r[   r\   r]   r^   r_   r9   provider_config)	re   azurerj   rk   rm   ro   rp   preset_cache_keystream_responser3   r_   optional_paramslitellm_paramsr9   r9   )r3   rl   r~   AZURE_API_TYPEAZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEYazure_ad_tokenAZURE_AD_TOKENzapplication/json)zContent-Typezapi-key)r3   rY   re   r`   r5   r   rn   logging_objr   model_responsera   r4   r   rs   r   z-image generation config is not supported for )
r`   r3   rY    image_generation_provider_config(image_generation_optional_request_paramsr9   r   r   re   r   azure_air   )AzureFoundryModelInforw   )r3   rY   re   r`   r5   r   r   r   rw   r4   r   bedrockz!Model needs to be set for bedrock)
r3   rY   re   r   r   r   r4   r   r5   r`   	vertex_aivertex_projectvertex_ai_projectVERTEXAI_PROJECTvertex_locationvertex_ai_locationVERTEXAI_LOCATIONvertex_credentialsvertex_ai_credentialsVERTEXAI_CREDENTIALSVERTEXAI_API_BASEVERTEX_API_BASE)r3   rY   re   r   r   r   r   r   r   r4   r5   r   r|   custom_handlerr3   r9   T)	r3   rY   r`   r5   r   r   r   re   r   r8   r=   )9localsrE   updatelitellmutilsr+   r-   _hidden_paramsr*   itemsr)   _member_map_valuesr,   $get_provider_image_generation_configr.   r   update_environment_variablesmodel_call_detailsr   r#   r5   ra   r`   	azure_keypopr   rA   RECRAFTAIMLGEMINIFAL_AIRUNWAYMLrJ   r   image_generation_handler"litellm.llms.azure_ai.common_utilsr   get_api_baseget_api_keyLITELLM_PROXYvalueopenai_compatible_providersr    rK   r   r   r   r"   _custom_providerscustom_provider_mapr   rG   r   rX   r   r   )5rY   r3   rZ   r[   r\   r]   r^   r_   re   r`   r5   ra   r9   rN   rM   r4   rj   rk   rl   rm   rn   ro   rp   rq   r   rr   rs   rt   r   dynamic_api_keyopenai_paramsr   default_paramskvnon_default_paramsimage_generation_configr   litellm_params_dictloggingapi_typer   ry   r   rw   r   r   r   r   itemasync_custom_clientcustom_clientrV   s5                                                        rW   rA   rA      s   2Y
x **%6> **%6=JJ{D1	'-zz/4'H%zz*@$G"(**-F"MZZd3
::j"-17<Q1RHd+

?D9

9d39rZZd3
$NN=)(/(C(C(E)- 3 ?DT$7!EAE E"*16%%g.
" ,&7#\\^
+TQq/FDAqD^ 	 
 HL+#|'@'@'G'G'II &JJ$-)*=> $ 8 
%+ 33
 !
 1:6:.,,+"#2&(<($$(#%
 !4 	- 	
" !(B(BB@SG&&'<=$(uMRR')%&67B7HW7#3#3W~FV7WH  7&&7!"56   3??3$$3 ""893 "/2  -00 $ 2 01 
 !3"O (--/1G#!"GAJ 0 4DD!-(?/ /-' /2NT m !  ((  %%  ''  ''  ))%
 
 '. CDWCXY  $<<1H9H$72/ =   !J.P,99(CH+77@G(3@0 !3"O (--/1G#!"GAJ 0 4DD!#(?/ /-' /2N\ y  8+"l&@&@&F&FF"g&I&II +1**^T*JL4EE2?!/ /-) /Nl S !I-} CDD5FF/ /- /!NL u !K/##$4d; 6"&&':DA6))6 ""45	   ##$5t< 7"&&';TB7**7 ""56	   ##$8$? :"&&'>E:!"89   5##5!"565 ""34	  5EE/ /-0 2#5 /!N@ c  7#<#<< 37N33
#'::%)*:%;N 4 %, 
 $&BF#%*V=M*N*N*0' "0!A!A!#%#1$3 3#. "B 
": # 8<%*V[*I*I$*M "0!@!@!#%#1$3 3#( "A 
" A	
B	  
 3 $h
 	

sy   E;]7 =]1]1C]7 D]7 &,]7 B/]7 A]7 ,]7 	A2]7 <2]7 /E	]7 90]7 -A]7 <4]7 1]7 7
^^^c            	         #    [         R                  " 5       nUR                  SS5      nUR                  SS5      nSUS'    [        [        /U Q70 UD6n[
        R                  " 5       n[        UR                  U5      nUc   Ub  [        X1R                  SS5      S9u  p  nUR                  SU5      I Sh  vN n	[        U	[        5      (       d  [        U	[        5      (       a$  [        U	[        5      (       a  [        S
0 U	D6n	U	n
U
$ [         R                  " U	5      (       a  U	I Sh  vN n
U
$ UR                  SU5      I Sh  vN n
U
$  N N$ N
! [         a  nU=(       d    Sn[        UUUU US	9eSnAff = f7f)au  
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.
r3   Nr9   T
async_callr5   r6   r7   r8   r=   )r>   r?   rE   r   image_variationrB   rC   rD   r-   rF   rG   rH   r+   rI   rK   r   rL   s               rW   aimage_variationr     s     !!#DJJw%E **%:DAF<#
888 &&(#CGGT2&5+<+;jjT&B,(AAq
 #2249JKKmT**j=/
 /
 -.. - > >$H    //**H  "11$8IJJH L + K 
1=X 3 "
 	

sy   ?E>A6E 8E9AE 
E> E +E,E 1E>2E EE E>E E E 
E;E66E;;E>image)urlb64_jsonc                 :   UR                  SS 5      n[        [        UR                  S5      5      n[        S0 UD6n	[	        UU	R                  SS 5      U	R                  SS 5      U	R                  SS 5      S9u  pp [        U
5      n[        U5      n[        5       nS n[        R                  " U=(       d    S	US
9nUc  [        SU
 S[         35      eUR                  U	R                  SS 5      5      nUR                  U	R                  SS 5      5      nU[        R                  :X  aJ  Uc  [        S5      eUc  [        S5      e[        R                  " UUUUU U	R                  SS 5      U
U0 U	S9
nOkU[        R                   :X  aW  Uc  [        S5      eUc  [        S5      e["        R                  " UUUUU U	R                  SS 5      =(       d    [$        U
U0 U	US9nUc  [        SU
 S[         35      eU$ ! [         a    [        SU
 S[         35      ef = f)Nr   rq   r9   r5   r`   )r3   r9   r5   r`   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 variationsre   )
r   r`   r5   r3   r   re   r9   r   r   r   z.API key is required for Topaz image variationsz/API base is required for Topaz image variations)r   r`   r5   r3   r   re   r9   r   r   r   r   r=   )rE   r   LiteLLMLoggingObjr   r-   r)   r'   rJ   r+   r,   get_provider_model_infor   r   OPENAIr!   image_variationsTOPAZr   DEFAULT_REQUEST_TIMEOUT)r   r3   rZ   r\   r]   r_   rN   r   rq   r   r9   r   r5   llm_providerimage_variation_providerr   rU   r}   r`   s                      rW   r   r   N  s    ZZ$'F0&**=R2ST (1&1N<L*../DdK##J5""9d3	=9E
#$78#D\#R 
 #_N(,H+CCkrO
 m  oB  nC  C^  _@  ^A  B
 	
 )).*<*<Y*MNG++N,>,>z4,PQH#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+)
 01D0EE`  bC  aD  E
 	
 OA  
01D0EE`  bC  aD  E
 	

s   =G: : Hmaskrr   extra_query
extra_bodyre   r9   c                    [        5       n UR                  S5      nUR                  SS5      nUR                  SS5      SL n[        U [        5      (       a  U OU /nUR                  S5      n0 n[        U[
        5      (       a  UR                  U5        [        U	[
        5      (       a  UR                  U	5        U(       a  [        U5      n	[        S0 UD6n[        U=(       d    [        US9u  p-  n[        R                  " U[        R                  " U5      S	9nUc  [        S
U 35      eUR                  U5        [        R                   " U5      n[        R"                  " UUUS9nUR%                  UU[        U5      SU0UEUS9  [&        R(                  " UUUUUUUUU	UU=(       d    [*        UUR                  S5      S9$ ! [,         a  n[        R.                  " UUUUUS9eSnAff = f)zO
Maps the image edit functionality, similar to OpenAI's images/edits endpoint.
rq   rj   Nr   FTrs   r   r{   z image edit is not supported for )r3   image_edit_provider_configimage_edit_optional_paramsr   r   )r3   r   rY   r   "image_edit_optional_request_paramsr9   r   r   rr   r   re   	_is_asyncr   r8   r=   )r   rE   r   rG   listrH   r   r&   r-   r   r,   get_provider_image_edit_configr   r)   rJ   r0   'get_requested_image_edit_optional_paramget_optional_params_image_editr   r   image_edit_handlerr   rK   r   )r   rY   r3   r   rZ   r[   r\   r]   r_   rr   r   r   re   r9   rN   
local_varsrq   rj   r   imagesheaders_from_kwargsmerged_extra_headersr   rS   r   r   image_edit_request_paramsrV   s                               rW   
image_editr     s$   0 JW
17<Q1R)/4Et)LJJ|U3t;	 %UD11w$jj3/1)400 ''(;<mT** ''6 !56M .77+;77 3,
(Aq "@@ --.AB 	# &-?@S?TUVV&! "II*U 	# "@@+E+E 	" 	88 !:;!?+ !4 	9 		
 %77'A/H 3)+'!66::h'
 	
   
$$ 3 (
 	

s   F:G 
G.G))G.c                 T  #    [        5       n [        R                  " 5       nSUS'   Uc)  [        R                  " XR                  SS5      S9u  nn  n[        U [        5      (       a  U OU /n[        [        4UUUUUUUUUUUS.UD6n[        R                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  n[        R                   " UUUUUS9eSnAff = f7f)aa  
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   Nrx   r6   )r   rY   r   r3   rZ   r[   r\   r]   r_   re   r9   r8   )r   r>   r?   r   r-   rE   rG   r   r   r   rB   rC   rD   rF   rI   rK   r   )r   r3   rY   r   rZ   r[   r\   r]   r_   rr   r   r   re   r9   rN   r   rO   rS   r   rP   rQ   rR   rT   rU   rV   s                            rW   aimage_editr   !  sP    > J-
%%'#| &+2+C+CnnZ&F,(A"Aq %UD11w
+ 3
 
  &&(#CGGT2"2249JKK}--**H  %H L +
  
$$ 3 (
 	

sY   D(B<C> 
C:$C> /C<0C> 5D(6C> 9D(:C> <C> >
D%D  D%%D()NNNNNNNiX  NNNN)ru   r/   r   NN)NNNNNNNNNNNN)NNNNNNNNNNN)Pr>   rB   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   httpxr   r   r   r   r   litellm.constantsr   r   r   litellm.exceptionsr   *litellm.litellm_core_utils.litellm_loggingr   )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   r   __annotations__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*   litellm.utilsr+   r,   r-   r.   r   r0   rX   strintrA   r   r   floatTimeoutr   r   r=   rg   rW   <module>r     s      W W W   G G : H 5 S K P P I - (:'; $ ;   8 D C 5   ) 5
 5
 5
v 
  CG%)!"!%C= } eC!>>?@	
 c] 3- C= 3- c] sm # T]" sC&'# 
. 
  CG%)!"!% ',C= } eC!>>?@	
 c] 3- C= 3- c] sm # U^" # 
.   CG%)!"!%q
q
C=q
 }q
 eC!>>?@	q

 c]q
 3-q
 C=q
 3-q
 c]q
 smq
 #q
 c3%&(q
 q
h 3
} 3
 3
l  27\\\ \ ./	\
 3-\ 3-\ \ \~   CG%) /3,0+/59)-#o
DO+,o
o
 C=o
 3-	o

 }o
 eC!>>?@o
 c]o
 3-o
 3-o
 DcN+o
 $sCx.)o
 c3h(o
 eE5==012o
" "##o
& =)Cm$;<<='o
 o
d 
 CG%) /3,0+/59)-#L
DO+,L
L
 L
 3-	L

 }L
 eC!>>?@L
 c]L
 3-L
 3-L
 DcN+L
 $sCx.)L
 c3h(L
 eE5==012L
" "##L
& 'L
 L
rg   