
    i              	           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 Zd Zd Z	 	 	 	 	 ddZy)    N)wraps)SPANDATA)
start_span)Span)
ContextVar)TYPE_CHECKING)OptionalCallable	AwaitableAnyUnionTypeVarF.)boundai_pipeline_name)defaultc                 .    t         j                  |        y N)_ai_pipeline_nameset)names    x/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namer      s    $    c                  *    t         j                         S r   )r   get r   r   get_ai_pipeline_namer      s      ""r   c                       fd}|S )Nc                       fd} fd}t        j                         r t               |      S  t               |      S )Nc            	      l   t         j                         }j                  d|rdnd      }t        d|d5 }|j                  di       j	                         D ]  \  }}|j                  ||        |j                  di       j	                         D ]  \  }}|j                  ||        |r1|j                  t        j                  |        | i |cd d d        S t         j                         	  | i |}	 t         j                  d        |cd d d        S # t        $ rc}t        j                  j                  |t        j                         j                  ddd	
      \  }	}
t        j                   |	|
       |d d }~ww xY w# t         j                  d        w xY w# 1 sw Y   y xY w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argskwargscurr_pipeliner#   spankvreseeventr+   descriptionfspan_kwargss              r   sync_wrappedz1ai_track.<locals>.decorator.<locals>.sync_wrapped"   s   -113M=xmTBCC{C t"JJ}b9??A 'DAqLLA&'"JJ}b9??A (DAqMM!Q'( MM("?"?Od-f-  &))+6400 *--d3-  % *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L 't
 #00TBT)* *--d3+ sC   BF*"F*8D!F*!	F*AFFFF''F**F3c            	        K   t         j                         }j                  d|rdnd      }t        d|d5 }|j                  di       j	                         D ]  \  }}|j                  ||        |j                  di       j	                         D ]  \  }}|j                  ||        |r9|j                  t        j                  |        | i | d {   cd d d        S t         j                         	  | i | d {   }	 t         j                  d        |cd d d        S 7 T7 '# t        $ rc}t        j                  j                  |t        j                         j                  ddd	
      \  }	}
t        j                   |	|
       |d d }~ww xY w# t         j                  d        w xY w# 1 sw Y   y xY wwr"   r,   r9   s              r   async_wrappedz2ai_track.<locals>.decorator.<locals>.async_wrapped?   s    -113M=xmTBCC{C t"JJ}b9??A 'DAqLLA&'"JJ}b9??A (DAqMM!Q'( MM("?"?O!"D!3F!33  &))+64$%t$6v$66 *--d3-  4 7$ *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L 't
 #00TBT)* *--d3+ s~   9GB"G D3G "
G,G D7D5D7G )
G3G 5D77	F# AFF##F&&F==G  G	G)inspectiscoroutinefunctionr   )rD   rF   rH   rC   rE   s   `  r   	decoratorzai_track.<locals>.decorator    s?    	:	: &&q)58M**58L))r   r   )rC   rE   rK   s   `` r   ai_trackrL      s    ?*B r   c                    t               }|r | j                  t        j                  |       | | j                  t        j                  |       | | j                  t        j
                  |       | | j                  t        j                  |       | | j                  t        j                  |       |	||||z   }|!| j                  t        j                  |       y y r   )	r   r0   r   r1   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)r=   input_tokensinput_tokens_cachedoutput_tokensoutput_tokens_reasoningtotal_tokensr   s          r   record_token_usagerX   d   s     ,-h335EFh88,G&55	

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

  8]=V#m3h88,G  r   )NNNNN)rI   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr3   r   sentry_sdk.tracingr   r   typingr   r	   r
   r   r   r   r   r   r   r   r   rL   rX   r   r   r   <module>r^      s      &  ! # '  II5#s(!3Xc9S>>Q5R!RSTA14@  
#
CP  %Hr   