
    tni}              	       D   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
 d dlmZ er;d 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                   Z e
dd          Zd!dZd"dZdeddddfdZ	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 	 	 d$d ZdS )%    N)wraps)SPANDATA)
start_span)Span)
ContextVar)TYPE_CHECKING)OptionalCallable	AwaitableAnyUnionTypeVarF.)boundai_pipeline_name)defaultnameOptional[str]returnc                 :    t                               |            d S N)_ai_pipeline_nameset)r   s    U/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namer      s    $    c                  4    t                                           S r   )r   get r   r   get_ai_pipeline_namer       s      """r   descriptionspan_kwargsr   zCallable[[F], F]c                      d fd}|S )Nfr   r   c                      d fd}d fd}t          j                   r t                     |          S  t                     |          S )Nargsr   kwargsr   c            	         t                                           }                    d|rdnd          }t          d|d5 }|                    di                                           D ]\  }}|                    ||           |                    di                                           D ]\  }}|                    ||           |r4|                    t          j        |            | i |cd d d            S t           	                               	  | i |}ni# t          $ r\}t          j                            |t          j                    j        ddd	
          \  }	}
t          j        |	|
           |d d }~ww xY w	 t           	                    d            n# t           	                    d            w xY w|cd d d            S # 1 swxY w 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
sentry_sdkutilsevent_from_exception
get_clientoptionscapture_eventr&   r'   curr_pipeliner*   spankvreseeventr2   r!   r$   r"   s              r   sync_wrappedz1ai_track.<locals>.decorator.<locals>.sync_wrapped   sx   -1133M='SxxmTTBCCC{CC t"JJ}b99??AA ' 'DAqLLA&&&&"JJ}b99??AA ( (DAqMM!Q''''  MM("?OOO1d-f--        &))+6664a000$ * * *&0&6&K&K+5+@+B+B+J/>5&Q&Q 'L ' 't
 #0TBBBBT)*  *--d3333)--d3333-                 sP   B2GGD'&F,'
F1AFFF,G,GGG Gc            	        K   t                                           }                    d|rdnd          }t          d|d5 }|                    di                                           D ]\  }}|                    ||           |                    di                                           D ]\  }}|                    ||           |r:|                    t          j        |            | i | d {V cd d d            S t           	                               	  | i | d {V }ni# t          $ r\}t          j                            |t          j                    j        ddd	
          \  }	}
t          j        |	|
           |d d }~ww xY w	 t           	                    d            n# t           	                    d            w xY w|cd d d            S # 1 swxY w Y   d S r)   r3   r@   s              r   async_wrappedz2ai_track.<locals>.decorator.<locals>.async_wrapped:   s     -1133M='SxxmTTBCCC{CC t"JJ}b99??AA ' 'DAqLLA&&&&"JJ}b99??AA ( (DAqMM!Q''''  MM("?OOO!"D!3F!3!3333333        &))+6664$%At$6v$6$6666666$ * * *&0&6&K&K+5+@+B+B+J/>5&Q&Q 'L ' 't
 #0TBBBBT)*  *--d3333)--d3333-                 sP   B8G'G'&D54F:5
F?AFFF:G':GG''G+.G+)r&   r   r'   r   r   r   )inspectiscoroutinefunctionr   )r$   rH   rJ   r!   r"   s   `  r   	decoratorzai_track.<locals>.decorator   s    	 	 	 	 	 	 	 	8	 	 	 	 	 	 	 	8 &q)) 	*588M***588L)))r   )r$   r   r   r   r   )r!   r"   rM   s   `` r   ai_trackrN      s0    <* <* <* <* <* <* <*| r   rB   r   input_tokensOptional[int]input_tokens_cachedoutput_tokensoutput_tokens_reasoningtotal_tokensc                    t                      }|r |                     t          j        |           | |                     t          j        |           | |                     t          j        |           | |                     t          j        |           | |                     t          j        |           |	||||z   }|"|                     t          j        |           d S d S r   )	r    r7   r   r8   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)rB   rO   rQ   rR   rS   rT   r   s          r   record_token_usager[   ^   s     ,-- Gh35EFFFh8,GGG&5	
 	
 	

  h9=III*9#	
 	
 	

  8]=V#m3h8,GGGGG  r   )r   r   r   N)r   r   )NNNNN)rB   r   rO   rP   rQ   rP   rR   rP   rS   rP   rT   rP   r   N)rK   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr:   r   sentry_sdk.tracingr   r   typingr   r	   r
   r   r   r   r   r   r   r   r    strrN   r[   r   r   r   <module>rb      s          & & & & & &     ! ! ! ! ! ! # # # # # # ' ' ' ' ' '             UIIIIIIIIIIIIIIII5#s(!3Xc9S>>Q5R!RSTTTAJ14@@@        # # # #?# ?e ?8J ? ? ? ?H %)+/%)/3$(#H
#H!#H )#H #	#H
 -#H "#H 
#H #H #H #H #H #Hr   