
    ^h                     X    S SK JrJrJr  S SKJrJr  S SKJr  S SK	J
r
Jr   " S S5      rg)    )ListOptionalUnion)print_verboseverbose_logger)LATENCY_BUCKETS)ServiceLoggerPayloadServiceTypesc            	           \ rS rSrSr SS\4S jjrS\4S jrS rS\	S	\	4S
 jr
 SS\	S	\	S\\\	      4S jjrS\	S\4S jr/ 4S\	S\S\\\	      4S jjrS\4S jrS\4S jrS\4S jrS\S\\	\4   4S jrSrg)PrometheusServicesLogger   Nmock_testingc                 <     SSK JnJnJn  XPl        X@l        X0l        [        R                  " S5        [         Vs/ s H  ofR                  PM     snU l
        0 U l        U R                   HH  nU R                  USS9nU R                  USSS	/S
9n	U R                  USS9n
UU	U
/U R                  U'   MJ     0 U l        Xl        SU l        SU l        g ! [         a    [        S5      ef = fs  snf ! [
         a  n[%        S['        U5       35        UeS nAff = f)Nr   )REGISTRYCounter	Histogramz>Missing prometheus_client. Run `pip install prometheus-client`z#in init prometheus services metricslatency)type_of_requestfailed_requestserror_classfunction_name)r   additional_labelstotal_requestsz(Got exception on init prometheus client )prometheus_clientr   r   r   ImportError	Exceptionr   debugr
   valueservicespayload_to_prometheus_mapcreate_histogramcreate_counterprometheus_to_amount_mapr   mock_testing_success_callsmock_testing_failure_callsr   str)selfr   kwargsr   r   r   itemservice	histogramcounter_failed_requestcounter_total_requestses               b/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/prometheus_services.py__init__!PrometheusServicesLogger.__init__   sR   
/	JJ 'N"L$M  !FG4@ALDZZLADM  *  == 11'91U	)-)<)<$5'4o&F *= *&
 *.)<)<-= *= *& **;..w7 )"  )
 !-./D+./D+Q  T  B>  	DSVHMNG	s4   
C 0C3 C.BC3 C++C3 3
D=DDreturnc                 h    U R                   R                  5        H  nXR                  :X  d  M    g   g)NTF)r   collectname)r'   metric_namemetrics      r/   is_metric_registered-PrometheusServicesLogger.is_metric_registeredG   s+    mm++-Fkk) .     c                 L    U R                   R                  R                  U5      $ )z<
Helper function to get a metric from the registry by name.
)r   _names_to_collectorsget)r'   r6   s     r/   _get_metric$PrometheusServicesLogger._get_metricM   s     }}1155kBBr:   r*   r   c                     SR                  X5      nU R                  U5      nU(       a  U R                  U5      $ U R                  USR                  U5      U/[        S9$ )Nlitellm_{}_{}zLatency for {} service)
labelnamesbuckets)formatr8   r>   r   r   )r'   r*   r   r6   is_registereds        r/   r!   )PrometheusServicesLogger.create_histogramS   se    %,,WF11+>##K00~~$++G4y#	  
 	
r:   r   c                     SR                  X5      nU R                  U5      nU(       a  U R                  U5      $ U R                  USR                  X!5      U/U=(       d    / -   S9$ )NrA   zTotal {} for {} service)rB   )rD   r8   r>   r   )r'   r*   r   r   r6   rE   s         r/   r"   'PrometheusServicesLogger.create_counter_   so     &,,WF11+>##K00||%,,_Fy$5$;<  
 	
r:   labelsamountc                 |    [        XR                  5      (       d   eUR                  U5      R                  U5        g N)
isinstancer   rI   observe)r'   r+   rI   rJ   s       r/   observe_histogram*PrometheusServicesLogger.observe_histogramo   s2     )^^4444 ((0r:   c                     [        XR                  5      (       d   eU(       a#  UR                  " U/UQ76 R                  U5        g UR                  U5      R                  U5        g rL   )rM   r   rI   inc)r'   counterrI   rJ   r   s        r/   increment_counter*PrometheusServicesLogger.increment_countery   sP     '<<0000NN66$56::6BNN6"&&v.r:   payloadc                 .   U R                   (       a  U =R                  S-  sl        UR                  R                  U R                  ;   a  U R                  UR                  R                     nU H  n[        X0R                  5      (       a1  U R                  UUR                  R                  UR                  S9  MN  [        X0R                  5      (       d  Mj  SUR                  ;   d  M|  U R                  UUR                  R                  SS9  M     g g )N   r+   rI   rJ   r   rS   rI   rJ   r   r$   r*   r   r    rM   r   rO   durationr   _namerT   r'   rV   prom_objectsobjs       r/   service_success_hook-PrometheusServicesLogger.service_success_hook   s    ++q0+??  D$B$BB99'//:O:OPL#c>>22**"%&44&// + 
  \\227G3997T** #&44  +  $ Cr:   c                 t   U R                   (       a  U =R                  S-  sl        UR                  R                  U R                  ;   an  U R                  UR                  R                     nU HD  n[        X0R                  5      (       d  M  U R                  UUR                  R                  SS9  MF     g g )NrX   rZ   )r   r%   r*   r   r    rM   r   rT   r^   s       r/   service_failure_hook-PrometheusServicesLogger.service_failure_hook   s    ++q0+??  D$B$BB99'//:O:OPL#c<<00** #&44  +  $ Cr:   c                 6  #    U R                   (       a  U =R                  S-  sl        UR                  R                  U R                  ;   a  U R                  UR                  R                     nU H  n[        X0R                  5      (       a1  U R                  UUR                  R                  UR                  S9  MN  [        X0R                  5      (       d  Mj  SUR                  ;   d  M|  U R                  UUR                  R                  SS9  M     gg7f)z#
Log successful call to prometheus
rX   rY   r   rZ   Nr[   r^   s       r/   async_service_success_hook3PrometheusServicesLogger.async_service_success_hook   s      ++q0+??  D$B$BB99'//:O:OPL#c>>22**"%&44&// + 
  \\227G3997T** #&44  +  $ Cs   CDD.+Derrorc                   #    U R                   (       a  U =R                  S-  sl        UR                  R                  nUR                  nUR
                  R                  U R                  ;   ap  U R                  UR
                  R                     nU HF  n[        X`R                  5      (       d  M  U R                  UUR
                  R                  X4/SS9  MH     g g 7f)NrX   )rS   rI   r   rJ   )r   r%   	__class____name__	call_typer*   r   r    rM   r   rT   )r'   rV   ri   r   r   r_   r`   s          r/   async_service_failure_hook3PrometheusServicesLogger.async_service_failure_hook   s     
 ++q0+oo..))??  D$B$BB99'//:O:OPL#c<<00** #&44+6*F  +  $ Cs   B-C 3-C )	r   r   r   r   r%   r$   r    r#   r   )FrL   )rl   
__module____qualname____firstlineno__litellm_service_latencyboolr0   r8   r>   r&   r!   r   r   r"   floatrO   rT   r	   ra   rd   rg   r   r   rn   __static_attributes__ r:   r/   r   r      s    " #44l4 C

 

c 

  26	

 
 $DI.	
 1 1 	1 24/ / 	/
 $DI./,@ (,@ 8L .% S)^$r:   r   N)typingr   r   r   litellm._loggingr   r   %litellm.types.integrations.prometheusr   litellm.types.servicesr	   r
   r   rw   r:   r/   <module>r|      s"    ) ( : A EH Hr:   