
    ghT                         S SK r S SKJr  S SKJr  S SKrS SKJr  S SKJ	r	  S SKJ
r
  S SKJr  \(       a
  S SKJrJrJr  \
" S	SS
9rS rS rS r     SS jrg)    N)wraps)SPANDATA)
start_span)Span)
ContextVar)TYPE_CHECKING)OptionalCallableAnyai_pipeline_name)defaultc                 .    [         R                  U 5        g N)_ai_pipeline_nameset)names    [/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namer      s    $    c                  *    [         R                  5       $ r   )r   get r   r   get_ai_pipeline_namer      s      ""r   c                    ^ ^ U U4S jnU$ )Nc                    >^  UU U4S jnUU U4S jn[         R                  " T 5      (       a  [        T 5      " U5      $ [        T 5      " U5      $ )Nc            	        > [         R                  5       nTR                  SU(       a  SOS5      n[        STUS.TD6 nUR                  S0 5      R	                  5        H  u  pVUR                  XV5        M     UR                  S0 5      R	                  5        H  u  pVUR                  XV5        M     U(       a1  UR                  [        R                  U5        T" U 0 UD6sS S S 5        $ [         R                  T5         T" U 0 UD6n [         R                  S 5        UsS S S 5        $ ! [         a]  n[        R                  R                  U[        R                  " 5       R                  SSS	.S
9u  p[        R                   " XS9  US eS nAff = f! [         R                  S 5        f = f! , (       d  f       g = f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_wrapped1ai_track.<locals>.decorator.<locals>.sync_wrapped    s   -113M=xmTBCC{Ct"JJ}b9??ADALL& B"JJ}b9??ADAMM!' B MM("?"?Od-f- DC &))+6400 *--d3- DC % *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L '
 #00BT)* *--d3+ DCsC   B#F/,F/D+F/+
F5AFFFF,,F//
F=c            	        >#    [         R                  5       nTR                  SU(       a  SOS5      n[        STUS.TD6 nUR                  S0 5      R	                  5        H  u  pVUR                  XV5        M     UR                  S0 5      R	                  5        H  u  pVUR                  XV5        M     U(       a9  UR                  [        R                  U5        T" U 0 UD6I S h  vN sS S S 5        $ [         R                  T5         T" U 0 UD6I S h  vN n [         R                  S 5        UsS S S 5        $  NT N'! [         a]  n[        R                  R                  U[        R                  " 5       R                  SSS	.S
9u  p[        R                   " XS9  US eS nAff = f! [         R                  S 5        f = f! , (       d  f       g = f7fr   r'   r4   s              r   async_wrapped2ai_track.<locals>.decorator.<locals>.async_wrapped=   s    -113M=xmTBCC{Ct"JJ}b9??ADALL& B"JJ}b9??ADAMM!' B MM("?"?O!"D!3F!33 DC &))+64$%t$6v$66 *--d3- DC 4 7$ *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L '
 #00BT)* *--d3+ DCs   >GB'G(D=)G,
G6GED?EG3
G=G?E
F(AF##F((F++GG
GG)inspectiscoroutinefunctionr   )r?   rA   rD   r>   r@   s   `  r   	decoratorai_track.<locals>.decorator   s>    	:	: &&q))8M**8L))r   r   )r>   r@   rH   s   `` r   ai_trackrJ      s    ?*B r   c                    [        5       nU(       a   U R                  [        R                  U5        Ub   U R                  [        R                  U5        Ub   U R                  [        R
                  U5        Ub   U R                  [        R                  U5        Ub   U R                  [        R                  U5        Uc
  Ub  Ub  X-   nUb!  U R                  [        R                  U5        g g r   )	r   r+   r   r,   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)r8   input_tokensinput_tokens_cachedoutput_tokensoutput_tokens_reasoningtotal_tokensr   s          r   record_token_usagerV   b   s     ,-h335EFh88,G&55	

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

  8]=V#3h88,G  r   )NNNNN)rF   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr.   r   sentry_sdk.tracingr   r   typingr   r	   r
   r   r   r   r   rJ   rV   r   r   r   <module>r\      s\      &  ! # '  ..14@  
#
CP  %Hr   