o
    i                     @   s$  d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ erZd dlmZmZmZmZmZmZ ed	eed
ef ed
ee f f dZedddZd&ddZd'ddZdeddddfddZ						d(						 		!		"		#			d)d$d%ZdS )*    N)wraps)SPANDATA)
start_span)Span)
ContextVarreraisecapture_internal_exceptions)TYPE_CHECKING)OptionalCallable	AwaitableAnyUnionTypeVarF.)boundai_pipeline_name)defaultnameOptional[str]returnc                 C   s   t |  d S N)_ai_pipeline_nameset)r    r   U/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_name   s   r   c                   C   s   t  S r   )r   getr   r   r   r   get_ai_pipeline_name   s   r   descriptionspan_kwargsr   zCallable[[F], F]c                    s   d fdd}|S )Nfr   r   c                    sF   d	 fdd}d	 fdd}t  rt |S t |S )
Nargsr   kwargsr   c                     s  t  }d|rdnd}td |d}|di  D ]
\}}||| q!|di  D ]
\}}||| q4|rV|tj| | i |W  d    S t 	  zVz	| i |}W nE t
y } z9t }	t   tjj|t jddd	d
\}
}tj|
|d W d    n1 sw   Y  t|	  W Y d }~nd }~ww W t 	d  nt 	d  w |W  d    S 1 sw   Y  d S Nopzai.runzai.pipeline)r   r%   sentry_tagssentry_dataai_monitoringF)typehandled)client_options	mechanism)hintr   r   r   popr   itemsset_tagset_datar   GEN_AI_PIPELINE_NAMEr   	Exceptionsysexc_infor   
sentry_sdkutilsevent_from_exception
get_clientoptionscapture_eventr   r"   r#   curr_pipeliner%   spankvreser6   eventr-   r   r!   r    r   r   sync_wrapped   s>   
	
$z1ai_track.<locals>.decorator.<locals>.sync_wrappedc                     s  t  }d|rdnd}td |d}|di  D ]
\}}||| q"|di  D ]
\}}||| q5|rZ|tj| | i |I d H W  d    S t 	  zYz| i |I d H }W nE t
y } z9t }	t   tjj|t jddd	d
\}
}tj|
|d W d    n1 sw   Y  t|	  W Y d }~nd }~ww W t 	d  nt 	d  w |W  d    S 1 sw   Y  d S r$   r.   r=   rE   r   r   async_wrapped=   s@   
	
$z2ai_track.<locals>.decorator.<locals>.async_wrapped)r"   r   r#   r   r   r   )inspectiscoroutinefunctionr   )r!   rF   rG   r   r    )r!   r   	decorator   s
   
zai_track.<locals>.decorator)r!   r   r   r   r   )r   r    rK   r   rJ   r   ai_track   s   BrL   r?   r   input_tokensOptional[int]input_tokens_cachedinput_tokens_cache_writeoutput_tokensoutput_tokens_reasoningtotal_tokensc                 C   s   t  }|r| tj| |d ur| tj| |d ur"| tj| |d ur-| tj| |d ur8| tj| |d urC| tj| |d u rS|d urS|d urS|| }|d ur`| tj	| d S d S r   )
r   r2   r   r3   GEN_AI_USAGE_INPUT_TOKENS GEN_AI_USAGE_INPUT_TOKENS_CACHED%GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITEGEN_AI_USAGE_OUTPUT_TOKENS$GEN_AI_USAGE_OUTPUT_TOKENS_REASONINGGEN_AI_USAGE_TOTAL_TOKENS)r?   rM   rO   rP   rQ   rR   rS   r   r   r   r   record_token_usagec   s6   
rZ   )r   r   r   N)r   r   )NNNNNN)r?   r   rM   rN   rO   rN   rP   rN   rQ   rN   rR   rN   rS   rN   r   N)rH   r5   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr7   r   sentry_sdk.tracingr   r   r   r   typingr	   r
   r   r   r   r   r   r   r   r   r   strrL   rZ   r   r   r   r   <module>   sN     (

H