
    `i(                         d dl mZmZmZ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 ddlmZmZmZmZmZ erd dlmZ d d	lmZ  G d
 de          ZddZ	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZdS )    )TYPE_CHECKINGAnyList	TypedDictOptionalUnion)set_data_normalized)SPANDATA)should_send_default_pii)safe_serialize   )extract_tool_callsextract_finish_reasonsextract_contents_textextract_usage_data	UsageData)Span)GenerateContentResponsec                   L    e Zd ZU ded<   ded<   eed<   ded<   ded<   d	ed
<   dS )AccumulatedResponsezOptional[str]idmodeltextz	List[str]finish_reasonszList[dict[str, Any]]
tool_callszOptional[UsageData]usage_metadataN)__name__
__module____qualname____annotations__str     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sentry_sdk/integrations/google_genai/streaming.pyr   r      sW         
III&&&&))))))r#   r   selfr   otherreturnc                 .   t          t          | d         |d                   t          | d         |d                   t          | d         |d                   t          | d         |d                   t          | d         |d                             S )Ninput_tokensoutput_tokensinput_tokens_cachedoutput_tokens_reasoningtotal_tokens)r)   r*   r+   r,   r-   )r   max)r%   r&   s     r$   element_wise_usage_maxr/      s    n-u^/DEE$/1GHH&'/D)E
 
 !$*+U3L-M!
 !
 n-u^/DEE
 
 
 
r#   chunksList[GenerateContentResponse]c                 B   g }g }g }d}d}d}| D ]}t          |dd          ret          |dg           D ]S}t          |d          rAt          |j        dg           r+t          |j                  }	|	r|                    |	           Tt          |          }
|
r|                    |
           t          |          }|r|                    |           t          |          }||nt          ||          }t          d                    |          |||||          }|S )z?Accumulate streaming chunks into a single response-like object.N
candidatescontentparts )r   r   r   r   r   r   )getattrhasattrr4   r   appendr   extendr   r   r/   r   join)r0   accumulated_textr   r   
usage_dataresponse_idr   chunk	candidateextracted_textextracted_finish_reasonsextracted_tool_callschunk_usage_dataaccumulated_responses                 r$   accumulate_streaming_responserF   -   s    NJJKE 
 
5,-- 	@$UL"== @ @	9i00 @W%w6 6 @ &;9;L%M%MN% @(//???#9%#@#@ # 	<!!":;;;1%88 	42333
 .e44 ! '
4DEE 	
 /WW%&&%!    r#   spanr   integrationr   rE   Nc                    t                      rP|j        rI|                    d          r4|                     t          j        t          |d         g                     |                    d          r!t          | t          j        |d                    |                    d          r3|                     t          j	        t          |d                              |                    d          r&|                     t          j
        |d                    |                    d          r&|                     t          j        |d                    |d         dS |d         d         r,|                     t          j        |d         d                    |d         d	         r,|                     t          j        |d         d	                    |d         d
         r,|                     t          j        |d         d
                    |d         d         r,|                     t          j        |d         d                    |d         d         r.|                     t          j        |d         d                    dS dS )z1Set span data for accumulated streaming response.r   r   r   r   r   r   Nr)   r+   r*   r,   r-   )r   include_promptsgetset_datar
   GEN_AI_RESPONSE_TEXTr   r	   GEN_AI_RESPONSE_FINISH_REASONSGEN_AI_RESPONSE_TOOL_CALLSGEN_AI_RESPONSE_IDGEN_AI_RESPONSE_MODELGEN_AI_USAGE_INPUT_TOKENS GEN_AI_USAGE_INPUT_TOKENS_CACHEDGEN_AI_USAGE_OUTPUT_TOKENS$GEN_AI_USAGE_OUTPUT_TOKENS_REASONINGGEN_AI_USAGE_TOTAL_TOKENS)rG   rH   rE   s      r$   $set_span_data_for_streaming_responserW   a   s   
 	 !!
'
 !$$V,,

 	)089::	
 	
 	

  011 
3 !12	
 	
 	
 -- 
//=>>	
 	
 	

 %% Oh13G3MNNN(( Uh46J76STTT,-5,-n= 
. !12>B	
 	
 	

 ,-.CD 
5 !123HI	
 	
 	

 ,-o> 
/ !12?C	
 	
 	

 ,-.GH 
9 !123LM	
 	
 	

 ,-n= 
. !12>B	
 	
 	
 	
 	

 
r#   )r%   r   r&   r   r'   r   )r0   r1   r'   r   )rG   r   rH   r   rE   r   r'   N)typingr   r   r   r   r   r   sentry_sdk.ai.utilsr	   sentry_sdk.constsr
   sentry_sdk.scoper   sentry_sdk.utilsr   utilsr   r   r   r   r   sentry_sdk.tracingr   google.genai.typesr   r   r/   rF   rW   r"   r#   r$   <module>r`      s   G G G G G G G G G G G G G G G G 3 3 3 3 3 3 & & & & & & 4 4 4 4 4 4                    ;''''''::::::* * * * *) * * *   1 +1 1  1  1  1 h?

?
$?
<Q?
	?
 ?
 ?
 ?
 ?
 ?
r#   