
    i                     z    d dl mZ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mZ ddlmZ  e       Z G d d      Zy)	    )AnyAsyncIterator	CoroutineDictListOptionalUnioncastN)GenericLiteLLMParams)ModelResponse   )GoogleGenAIAdapterc                      e Zd ZdZe	 	 	 	 ddedeeeee	f      eee	f   f   de
eee	f      dede
e   de
eee	f      d	eee	f   fd
       Ze	 	 ddedeeeee	f      eee	f   f   dede
eee	f      ded	eeee	f   ee   f   fd       Ze	 	 	 ddedeeeee	f      eee	f   f   dede
eee	f      deded	eeee	f   ee   ee	e	eeee	f   ee   f   f   f   fd       Zy)"GenerateContentToCompletionHandlerzaHandler for transforming generate_content calls to completion format when provider config is NoneNmodelcontentsconfigstreamlitellm_paramsextra_kwargsreturnc                     t        j                  d| |||d|xs i }t        |      }|d|v r|d   |d<   d|v r|d   |d<   |r||d<   |S )z1Prepare kwargs for litellm.completion/acompletion)r   r   r   r   metadataextra_headersr    )GOOGLE_GENAI_ADAPTER(translate_generate_content_to_completiondict)r   r   r   r   r   r   completion_requestcompletion_kwargss           v/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/google_genai/adapters/handler.py_prepare_completion_kwargsz=GenerateContentToCompletionHandler._prepare_completion_kwargs   s     !II !-	
  %2 	 -11C,D #\)0<Z0H!*-,.5A/5R!/2*0h'      c                   K   t         j                  | |||||      }	 t        j                  di | d{   }|rUt	        |d      s%t
        j                  t        t        |            }|S t
        j                  |      }	|	|	S t        d      t
        j                  t        t        |            }|S 7 # t        $ r}
t        dt        |
             d}
~
ww xY ww)zDHandle generate_content call asynchronously using completion adapterr   r   r   r   r   r   N	__aiter__&Failed to transform streaming responsez8Error calling litellm.acompletion for generate_content: r   )r   r"   litellmacompletionhasattrr   (translate_completion_to_generate_contentr
   r   ,translate_completion_output_params_streaming
ValueError	Exceptionstr)r   r   r   r   r   kwargsr    completion_responsegenerate_content_responsetransformed_streames              r!   async_generate_content_handlerzAGenerateContentToCompletionHandler.async_generate_content_handler6   s     /II!-# J  	"	(/(;(;(P>O(P"P 2K@ -UU 0CD .
 54 *>)j)j+*& *511$%MNN )QQ],?@ *
 109 #Q<  	J3q6(S 	sP   C"B: B86B: .C"/B: C"/B: 7C"8B: :	CCCC"	_is_asyncc           	         |rt        j                  d| ||||d|S t         j                  | |||||      }	 t        j                  di |}|rUt        |d      s%t        j                  t        t        |            }	|	S t        j                  |      }
|
|
S t        d      t        j                  t        t        |            }	|	S # t        $ r}t        dt        |             d}~ww xY w)z5Handle generate_content call using completion adapter)r   r   r   r   r   r%   __iter__Nr'   z7Error calling litellm.completion for generate_content: r   )r   r5   r"   r(   
completionr*   r   r+   r
   r   r,   r-   r.   r/   )r   r   r   r   r   r6   r0   r    r1   r2   r3   r4   s               r!   generate_content_handlerz;GenerateContentToCompletionHandler.generate_content_handlerp   s:     5TT !-   /II!-# J  	"	")"4"4"I7H"I 2J? -UU 0CD .
 54 *>)j)j+*& *511$%MNN )QQ],?@ *
 10 	I#a&R 	s$   AC C /C 	C0C++C0)NFNN)NF)NFF)__name__
__module____qualname____doc__staticmethodr/   r	   r   r   r   r   boolr   r"   r   bytesr5   r   r:   r   r#   r!   r   r      s!   k ,09=15#!#!T#s(^,d38n<=#! c3h(#! 	#!
 !!56#! tCH~.#! 
c3h#! #!J 
 ,077T#s(^,d38n<=7 -7 c3h(	7
 7 
tCH~}U33	47 7r 
 ,0FFT#s(^,d38n<=F -F c3h(	F
 F F 
S#Xe#sE$sCx.-2F"FGGH	J
F Fr#   r   )typingr   r   r   r   r   r   r	   r
   r(   litellm.types.routerr   litellm.types.utilsr   transformationr   r   r   r   r#   r!   <module>rF      s1    S S S  5 - . *+ j jr#   