Ë
    uPêjf  ã                   óö   — U d dl Z d dlmZ d dl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rd dlmZ neZ e«       Zeed<   d	ee   d
efd„Zd
efd„Zd
efd„Z G d„ d«      Z G d„ de«      Z G d„ de«      Zy)é    N)Údatetime)ÚTYPE_CHECKINGÚAnyÚFinal)ÚLogging)ÚPassThroughEndpointLogging)ÚEndpointType)Ú$BaseGoogleGenAIGenerateContentConfigÚ'GLOBAL_PASS_THROUGH_SUCCESS_HANDLER_OBJÚevent_linesÚreturnc                 óH   — dj                  | «      dz   j                  d«      S )Nú
z

zutf-8)ÚjoinÚencode)r   s    úl/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/google_genai/streaming_iterator.pyÚ_encode_google_genai_sse_eventr      s!   € Ø�I‰I�kÓ" VÑ+×3Ñ3°GÓ<Ð<ó    c                 ó¤   — g }	 	 t        | «      }|dk(  r|rt        |«      S Œ |j                  |«       Œ1# t        $ r |rt        |«      cY S ‚ w xY w©NÚ )ÚnextÚStopIterationr   Úappend©Ú	line_iterr   Úlines      r   Ú_next_google_genai_sse_chunkr      sg   € Ø$&€KØ
ð	Ü˜	“?ˆDð
 �2Š:ÙÜ5°kÓBÐBØØ×Ñ˜4Ô ð øô ò 	ÙÜ5°kÓBÒBØð	ús   …5 µAÁAc              ƒ   óÊ   K  — g }	 	 | j                  «       ƒ d {  –—† }|dk(  r|rt        |«      S Œ-|j                  |«       Œ>7 Œ)# t        $ r |rt        |«      cY S ‚ w xY w­wr   )Ú	__anext__ÚStopAsyncIterationr   r   r   s      r   Ú_anext_google_genai_sse_chunkr"   *   ss   è ø€ Ø$&€KØ
ð	Ø"×,Ñ,Ó.×.ˆDð
 �2Š:ÙÜ5°kÓBÐBØØ×Ñ˜4Ô ð à.ùÜ!ò 	ÙÜ5°kÓBÒBØð	üs7   ‚A#‡A šA›A Ÿ%A#ÁA ÁA ÁA#ÁA Á A#c                   óF   — e Zd ZdZ	 d
dededededeeef   dz  f
d„Zd	„ Z	y)Ú/BaseGoogleGenAIGenerateContentStreamingIteratorz–
    Base class for Google GenAI Generate Content streaming iterators that provides common logic
    for streaming response handling and logging.
    NÚlitellm_logging_objÚrequest_bodyÚmodelÚcustom_llm_providerÚhidden_paramsc                 ó*  — || _         || _        t        j                  «       | _        g | _        || _        || _        |t        j                  j                  j                  k(  rt        j                  nt        j                  | _        |xs i | _        y ©N)r%   r&   r   ÚnowÚ
start_timeÚcollected_chunksr'   r(   ÚlitellmÚLlmProvidersÚGEMINIÚvaluer	   Ú	VERTEX_AIÚendpoint_typeÚ_hidden_params)Úselfr%   r&   r'   r(   r)   s         r   Ú__init__z8BaseGoogleGenAIGenerateContentStreamingIterator.__init__@   sz   € ð $7ˆÔ Ø(ˆÔÜ"Ÿ,™,›.ˆŒØ-/ˆÔØˆŒ
Ø#6ˆÔ à#6¼'×:NÑ:N×:UÑ:U×:[Ñ:[Ò#[ŒL×ÒÔam×awÑawð 	Ôð /<Ò.A¸rˆÕr   c              ƒ   ó"  K  — ddl m} t        j                  «       }t	        j
                  |j                  | j                  t        d| j                  xs i | j                  | j                  | j                  || j                  ¬«	      «       y­w)z8Handle the logging after all chunks have been collected.r   )ÚPassThroughStreamingHandlerz/v1/generateContent)	r%   Úpassthrough_success_handler_objÚ	url_router&   r4   r-   Ú	raw_bytesÚend_timer'   N)Ú6litellm.proxy.pass_through_endpoints.streaming_handlerr9   r   r,   ÚasyncioÚcreate_taskÚ#_route_streaming_logging_to_handlerr%   r   r&   r4   r-   r.   r'   )r6   r9   r=   s      r   Ú_handle_async_streaming_loggingzOBaseGoogleGenAIGenerateContentStreamingIterator._handle_async_streaming_loggingS   sz   è ø€ õ	
ô #Ÿ,™,›.ˆÜ×ÑØ'×KÑKØ$(×$<Ñ$<Ü0WØ/Ø!×.Ñ.Ò4°"Ø"×0Ñ0ØŸ?™?Ø×/Ñ/Ø!Ø—j‘jð Ló 
õ	
ùs   ‚BBr+   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚLiteLLMLoggingObjÚdictÚstrr   r7   rB   © r   r   r$   r$   :   sY   „ ñð 04ñBà.ðBð ðBð ð	Bð
 !ðBð ˜C ˜H‘~¨Ñ,óBó&
r   r$   c                   ót   ‡ — e Zd ZdZ	 	 ddededededededz  d	eeef   dz  fˆ fd
„Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )Ú+GoogleGenAIGenerateContentStreamingIteratorzP
    Streaming iterator specifically for Google GenAI generate content API.
    Nr'   Úlogging_objÚ generate_content_provider_configÚlitellm_metadatar(   r&   r)   c	                 ó˜   •— t         ‰	| �  ||xs i |||¬«       || _        || _        || _        || _        |j                  «       | _        y ©N)r%   r&   r'   r(   r)   )Úsuperr7   Úresponser'   rN   rO   Ú
iter_linesÚstream_iterator©
r6   rS   r'   rM   rN   rO   r(   r&   r)   Ú	__class__s
            €r   r7   z4GoogleGenAIGenerateContentStreamingIterator.__init__p   s^   ø€ ô 	‰ÑØ +Ø%Ò+¨ØØ 3Ø'ð 	ô 	
ð !ˆŒØˆŒ
Ø0PˆÔ-Ø 0ˆÔð  (×2Ñ2Ó4ˆÕr   c                 ó   — | S r+   rJ   ©r6   s    r   Ú__iter__z4GoogleGenAIGenerateContentStreamingIterator.__iter__Š   ó   € Øˆr   c                 óŽ   — 	 t        | j                  «      }| j                  j                  |«       |S # t        $ r t        ‚w xY wr+   )r   rU   r.   r   r   ©r6   Úchunks     r   Ú__next__z4GoogleGenAIGenerateContentStreamingIterator.__next__�   sE   € ð	 Ü7¸×8LÑ8LÓMˆEØ×!Ñ!×(Ñ(¨Ô/ØˆLøÜò 	 ÜÐð	 ús	   ‚14 ´Ac                 ó   — | S r+   rJ   rY   s    r   Ú	__aiter__z5GoogleGenAIGenerateContentStreamingIterator.__aiter__•   r[   r   c              ƒ   ó    K  — t        d«      ‚­w)NzHUse AsyncGoogleGenAIGenerateContentStreamingIterator for async iteration)ÚNotImplementedErrorrY   s    r   r    z5GoogleGenAIGenerateContentStreamingIterator.__anext__˜   s   è ø€ ô "Ð"lÓmÐmùs   ‚©NN)rC   rD   rE   rF   rI   rG   r
   rH   r   r7   rZ   r_   ra   r    Ú__classcell__©rW   s   @r   rL   rL   k   s‚   ø„ ñð %)Ø/3ñ5ð ð5ð 'ð	5ð
 +Oð5ð ð5ð !ð5ð ˜T‘kð5ð ˜C ˜H‘~¨Ñ,õ5ò4ò òönr   rL   c                   óh   ‡ — e Zd ZdZ	 	 ddededededededz  d	eeef   dz  fˆ fd
„Z	d„ Z
d„ Zˆ xZS )Ú0AsyncGoogleGenAIGenerateContentStreamingIteratorzV
    Async streaming iterator specifically for Google GenAI generate content API.
    Nr'   rM   rN   rO   r(   r&   r)   c	                 ó˜   •— t         ‰	| �  ||xs i |||¬«       || _        || _        || _        || _        |j                  «       | _        y rQ   )rR   r7   rS   r'   rN   rO   Úaiter_linesrU   rV   s
            €r   r7   z9AsyncGoogleGenAIGenerateContentStreamingIterator.__init__£   s^   ø€ ô 	‰ÑØ +Ø%Ò+¨ØØ 3Ø'ð 	ô 	
ð !ˆŒØˆŒ
Ø0PˆÔ-Ø 0ˆÔð  (×3Ñ3Ó5ˆÕr   c                 ó   — | S r+   rJ   rY   s    r   ra   z:AsyncGoogleGenAIGenerateContentStreamingIterator.__aiter__½   r[   r   c              ƒ   óÜ   K  — 	 t        | j                  «      ƒ d {  –—† }| j                  j                  |«       |S 7 Œ!# t        $ r  | j                  «       ƒ d {  –—†7   t        ‚w xY w­wr+   )r"   rU   r.   r   r!   rB   r]   s     r   r    z:AsyncGoogleGenAIGenerateContentStreamingIterator.__anext__À   se   è ø€ ð	%Ü!>¸t×?SÑ?SÓ!T×TˆEØ×!Ñ!×(Ñ(¨Ô/ØˆLð Uùô "ò 	%Ø×6Ñ6Ó8×8Ñ8Ü$Ð$ð	%üs5   ‚A,„A  œ>� A  ½A,¾A  Á A)ÁAÁA)Á)A,rd   )rC   rD   rE   rF   rI   rG   r
   rH   r   r7   ra   r    re   rf   s   @r   rh   rh   ž   sw   ø„ ñð %)Ø/3ñ6ð ð6ð 'ð	6ð
 +Oð6ð ð6ð !ð6ð ˜T‘kð6ð ˜C ˜H‘~¨Ñ,õ6ò4ö%r   rh   )r?   r   Útypingr   r   r   r/   Ú*litellm.litellm_core_utils.litellm_loggingr   rG   Ú4litellm.proxy.pass_through_endpoints.success_handlerr   Ú:litellm.types.passthrough_endpoints.pass_through_endpointsr	   Ú1litellm.llms.base_llm.google_genai.transformationr
   r   Ú__annotations__ÚlistrI   Úbytesr   r   r"   r$   rL   rh   rJ   r   r   ú<module>ru      s—   ðÜ Ý ß ,Ñ ,ã Ý Sõõ Táöð ,/Ð(á1KÓ1MÐ '¨Ó Mð=°°S±	ð =¸eó =ð!¨uó !ð !°eó !÷ .
ñ .
ôb0nÐ2aô 0nôf)%Ð7fõ )%r   