
    ih:                         d dl 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
 d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ er
d dlmZmZmZ 	 d dlZ G d de      Zd Zd Zy# e$ r	  ed      w xY w)    Nwraps)record_token_usage)set_data_normalized)OPSPANDATA)DidNotEnableIntegration)should_send_default_pii)set_span_errored)capture_internal_exceptionsevent_from_exception)TYPE_CHECKING)AnyCallableIterablezHuggingface not installedc                   2    e Zd ZdZde ZddZed        Zy)HuggingfaceHubIntegrationhuggingface_hubzauto.ai.c                     || _         y N)include_prompts)selfr   s     /var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/sentry_sdk/integrations/huggingface_hub.py__init__z"HuggingfaceHubIntegration.__init__   s
    .    c                     t        t        j                  j                  j                  j
                  t        j                        t        j                  j                  j                  _        t        t        j                  j                  j                  j                  t        j                        t        j                  j                  j                  _        y r   )
_wrap_huggingface_taskr   	inference_clientInferenceClienttext_generationr   GEN_AI_GENERATE_TEXTchat_completionGEN_AI_CHAT r   r   
setup_oncez$HuggingfaceHubIntegration.setup_once#   s     #))11AAQQ'' 	!!))99I #))11AAQQ 	!!))99Ir   N)T)__name__
__module____qualname__
identifieroriginr   staticmethodr'   r&   r   r   r   r      s,    "J
|$F/ 
 
r   r   c                     t                t        | t        j                         j                  ddd      \  }}t        j
                  ||       y )Nr   F)typehandled)client_options	mechanism)hint)r   r   
sentry_sdk
get_clientoptionscapture_event)exceventr3   s      r   _capture_exceptionr:   6   sE    &!,,.66,?KE4
 U.r   c                 2     t                fd       }|S )Nc            	      f   t        j                         j                  t               | i |S d }d|v r|d   }nCd|v r|d   }n9t	        |       dk\  r+t        | d   t              st        | d   t              r| d   }| | i |S | d   }|j                  xs |j                  d      xs d}j                  d      d	   }t        j                  | d
| t        j                        j                          j                  t        j                   |       |r j                  t        j"                  |       t%               r)j&                  rt)        t        j*                  |d       t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  t        j8                  t        j:                  d}|j=                         D ]\  \  }}|j                  |d       }	|	t        |	t>        t@        tB        t        f      rj                  ||	       Nt)        ||	d       ^ 	  | i |d }d }g }d}d }d }tK               5  t        t              r|jM                         tO        d      r'jP                  |jM                  jP                         tO        d      rj                  j                  }tO        d      r,tO        jR                  d      rjR                  jT                  }tO        d      rBtO        jR                  d      r,jR                  jV                  jR                  jV                  }tO        d      rjX                  jX                  }tO        d      r͉jZ                  jZ                  D ]  }tO        |d      r|jT                  }tO        |d      r,tO        |j\                  d      r|j\                  j^                  }tO        |d      s`tO        |j\                  d      sw|j\                  j`                  |jM                  |j\                  j`                          | j                  t        jb                  |       |t)        t        jd                  |       t%               ruj&                  ri|+t	        |      dkD  rt)        t        jf                  |d       t	        |      dkD  r.dji                  |      }|rt)        t        jj                  |       |.tm        |jn                  |jp                  |jr                         n|dkD  rtm        |       tu        jv                        sjI                  d d d        cd d d        S |j                  dd      rfd} |       cd d d        S fd} |       cd d d        S # tD        $ r&}
tG        |
       jI                  d d d        |
d d }
~
ww xY w# 1 sw Y   y xY w)Npromptmessages      r   model . )opnamer,   Funpack)toolsfrequency_penalty
max_tokenspresence_penaltytemperaturetop_ptop_kstreamgenerated_textdetailsfinish_reasongenerated_tokensusagechoicesmessage
tool_callscontentinput_tokensoutput_tokenstotal_tokensr^   c               3   \  K   d } g }d}t               5  D ]  }t        |d      rQt        |j                  d      r;|j                  j                  %|j	                  |j                  j                         t        |d      r,t        |j
                  d      r|j
                  j                  } t        |d      rBt        |j
                  d      r,|j
                  j                  |j
                  j                  }|  | t        t        j                  |        t               rHj                  r<t        |      dkD  r.dj                  |      }|rt        t        j                  |       |dkD  rt!        |       d d d        j#                  d d d        y # 1 sw Y   xY ww)	Nr   tokentextrS   rT   rU   rB   r_   )r   hasattrra   rb   appendrS   rT   rU   r   r   GEN_AI_RESPONSE_FINISH_REASONSr   r   lenjoinGEN_AI_RESPONSE_TEXTr   __exit__)rT   response_text_buffertokens_usedchunktext_responseintegrationresspans        r   new_details_iteratorzR_wrap_huggingface_task.<locals>.new_huggingface_task.<locals>.new_details_iterator   s|    $(M68("#K46 ,%( (E 'w 7$+EKK$@$)KK$4$4$@ 4 ; ;EKK<L<L M&ui8W %> 160K0K !(y 9$+EMM;M$N$)MM$B$B$N.3mm.L.L"'K)(, )4/ $ ( G G - 349T9T"#781<028L0M#0$7(,(0(E(E(5%& '?. $-8S,\ MM$d3], ,s   F,E0F F, F)%F,c               3   F  K   d } d }g }d }d }t               5  	D ]m  }t        |d      r|j                  |j                  }t        |d      r|j                  |j                  }t	        |t
              r||j                  |       t        |d      r|j                  |j                  D ]  }t        |d      rQt        |j                  d      r;|j                  j                  %|j                  |j                  j                         t        |d      r|j                  |j                  } t        |d      st        |j                  d      s|j                  j                  |j                  j                  } | p | 
j                  t        j                  |       | t        
t        j                   |        t#               ruj$                  ri|+t'        |      dkD  rt        
t        j(                  |d	
       t'        |      dkD  r.dj+                  |      }|rt        
t        j,                  |       |-t/        
|j0                  |j2                  |j4                         
j7                  d d d        d d d        y # 1 sw Y   y xY ww)NrA   rV   rW   deltarZ   rT   rY   r   FrH   rB   r[   )r   rc   rA   rV   
isinstancestrrd   rW   rs   rZ   rT   rY   set_datar   GEN_AI_RESPONSE_MODELr   re   r   r   rf   GEN_AI_RESPONSE_TOOL_CALLSrg   rh   r   prompt_tokenscompletion_tokensr^   ri   )rT   response_modelrj   rY   rV   rl   choicerm   rn   ro   rp   s           r   new_iteratorzJ_wrap_huggingface_task.<locals>.new_huggingface_task.<locals>.new_iterator"  sg    $(M%)N68(!%J E46 L8%( #(E&ug65;;;R16&ug65;;;R(-)%5#(#4$8$?$?$F&ui8U]]=V.3mm !MF(/(@,3FLL),L,2LL,@,@,L(<(C(C,2LL,@,@)*
 )0(H,2,@,@,L8>8L8L )0(@,3FLL,,O,2LL,C,C,O5;\\5L5L
+!M. #(KG#(J *5 MM ( > > )4/ $ ( G G - 349T9T)5#j/A:M 3$($,$G$G$.+0	!"  ##781<028L0M#0$7(,(0(E(E(5%& !,. $-2-@-@.3.E.E-2-?-?	 dD$7YL8 L8 L8s0   J!D&J?JJ-DJ	J!JJ!)<r4   r5   get_integrationr   rf   rt   ru   listrA   getsplit
start_spanr,   	__enter__rv   r   GEN_AI_OPERATION_NAMEGEN_AI_REQUEST_MODELr   r   r   GEN_AI_REQUEST_MESSAGESGEN_AI_REQUEST_AVAILABLE_TOOLS GEN_AI_REQUEST_FREQUENCY_PENALTYGEN_AI_REQUEST_MAX_TOKENSGEN_AI_REQUEST_PRESENCE_PENALTYGEN_AI_REQUEST_TEMPERATUREGEN_AI_REQUEST_TOP_PGEN_AI_REQUEST_TOP_KGEN_AI_RESPONSE_STREAMINGitemsintfloatbool	Exceptionr:   ri   r   rd   rc   rR   rS   rT   rU   rV   rW   rX   rY   rZ   rw   re   rx   rg   rh   r   ry   rz   r^   inspectisgenerator)argskwargsr=   clientrA   operation_nameattribute_mapping	attributespan_attributevalueerT   r{   rj   rk   rY   rV   r|   rm   rq   r}   rn   ro   rp   frF   s                        @@@r   new_huggingface_taskz4_wrap_huggingface_task.<locals>.new_huggingface_taskD   s    !++-==>WXd%f%%vH%F6!J'FY!^$q'3':d1gt+Da>d%f%%a9

7 39r#r*$$"#1UG,,33

 	h44nEMM(77? #$)D)Dh66u
 <<!)!J!J"<< ( H H#>>222288	
 *;)@)@)B 	S%I~JJy$/E ec5$%<=MM.%8'neER	S	T$V$C *,
(* g	&#s#$++C0s,-#2D2D2P$++C,>,>?sG$)>!$sI&73;;+P # 9 9 Y'CKK);<KK00<!kk::sG$)>		sI&3;;+B!kk LFv7(.(<(<vy1g7 &,^^%>%>
	2#FNNI>"NN22>,33FNN4J4JKL )h<<nM(#;;! '([-H-H)c*o.A' ;;"$	 +,q0$&GG,@$AM$+ $99)  "!&!4!4"'"9"9!&!3!3	 q"!, &&s+dD$/gg	& g	&j zz)U+44l ,-[g	& g	&bT8l $~Og	& g	&  	q!MM$d+	g	& g	&sD   &W5 F(X'-X'X'EX'5X'X'5	X$>!XX$'X0r   )r   rF   r   s   `` r   r   r   B   s$    
1Xs& s&j	  r   ) r   	functoolsr   r4   sentry_sdk.ai.monitoringr   sentry_sdk.ai.utilsr   sentry_sdk.constsr   r   sentry_sdk.integrationsr	   r
   sentry_sdk.scoper   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   typingr   r   r   r   !huggingface_hub.inference._clientr   ImportErrorr   r:   r   r&   r   r   <module>r      sp       7 3 * = 4 5
 !..4,

 
6	/x W  4
2
334s   A( (A6