
    `i<                     L   d dl mZmZmZmZmZmZ ddlmZm	Z	m
Z
mZ ddlmZ dZ G d d          Z G d d	e          ZeZ G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    )DictListOptionalSequenceTupleUnion   )ExemplarNativeHistogramSample	Timestamp)_validate_metric_name)countergaugesummary	histogramgaugehistogramunknowninfostatesetc                       e Zd ZdZddedededefdZdded	eeef         d
edee	e
ef                  dee         dee         ddfdZdedefdZdefdZd ZdS )MetriczA single metric family and its samples.

    This is intended only for internal use by the instrumentation client.

    Custom collectors should use GaugeMetricFamily, CounterMetricFamily
    and SummaryMetricFamily instead.
     namedocumentationtypunitc                     |r |                     d|z             s|d|z   z  }t          |           || _        || _        || _        |dk    rd}|t
          vrt          d|z             || _        g | _        d S )N_untypedr   zInvalid metric type: )	endswithr   r   r   r   METRIC_TYPES
ValueErrortypesamples)selfr   r   r   r   s        r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/prometheus_client/metrics_core.py__init__zMetric.__init__   s     	cDj11 	C$JDd###	"/	)Cl""4s:;;;	%'    Nlabelsvalue	timestampexemplarnative_histogramreturnc           
      ^    | j                             t          ||||||                     dS )z?Add a sample to the metric.

        Internal-only, do not use.N)r%   appendr   )r&   r   r*   r+   r,   r-   r.   s          r'   
add_samplezMetric.add_sample#   s3     	F4	8M]^^_____r)   otherc                     t          |t                    oO| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S N)
isinstancer   r   r   r$   r   r%   )r&   r3   s     r'   __eq__zMetric.__eq__)   sq    5&)) 2I+2&%*==2 I+2 I+	2
 LEM1	3r)   c                 f    d                     | j        | j        | j        | j        | j                  S )NzMetric({}, {}, {}, {}, {}))formatr   r   r$   r   r%   )r&   s    r'   __repr__zMetric.__repr__1   s4    +22IIIL
 
 	
r)   c                     fd| j         D             }|r)t          | j        | j        | j                  }||_         |S dS )zMBuild a snapshot of a metric with samples restricted to a given set of names.c                 (    g | ]}|d          v |S )r    ).0snamess     r'   
<listcomp>z-Metric._restricted_metric.<locals>.<listcomp><   s"    <<<ademm1mmmr)   N)r%   r   r   r   r$   )r&   r@   r%   ms    `  r'   _restricted_metriczMetric._restricted_metric:   sO    <<<<dl<<< 	ty$"4di@@AAIHtr)   )r   NNN)__name__
__module____qualname____doc__strr(   r   floatr   r   r   r
   r   r2   objectboolr7   r:   rC   r=   r)   r'   r   r      s;        ( (S ( (3 (c ( ( ( (` `s `DcN `5 `U]^cdmotdt^uUv `  JR  S[  J\ `  w  @O  wP `  \` ` ` ` `3F 3t 3 3 3 3
# 
 
 
 
    r)   r   c                       e Zd ZdZ	 	 	 ddededee         deee                  def
d	Zddee         ded
ee	e
ef                  ddfdZdS )UnknownMetricFamilyzOA single unknown metric and its samples.
    For use by custom collectors.
    Nr   r   r   r+   r*   r   c                     t                               | ||d|           ||t          d          |g }t          |          | _        ||                     g |           d S d S )Nr   1Can only specify at most one of value and labels.r   r(   r#   tuple_labelnames
add_metricr&   r   r   r+   r*   r   s         r'   r(   zUnknownMetricFamily.__init__I   sx     	dM9dCCC%"3PQQQ>F ==OOB&&&&& r)   r,   r/   c                     | j                             t          | j        t	          t          | j        |                    ||                     dS )zAdd a metric to the metric family.
        Args:
        labels: A list of label values
        value: The value of the metric.
        Nr%   r1   r   r   dictziprS   r&   r*   r+   r,   s       r'   rT   zUnknownMetricFamily.add_metricY   sG     	F49d3t7G3P3P.Q.QSXZcddeeeeer)   NNr   r5   rE   rF   rG   rH   rI   r   rJ   r   r(   r   r   rT   r=   r)   r'   rN   rN   D   s          +/37' '' #' !' "(3-0	'
 ' ' ' ' f f# fu fRWXachXhRiIj fvz f f f f f fr)   rN   c                       e Zd ZdZ	 	 	 	 	 ddededee         deee                  dee         d	ed
ee         fdZ		 	 	 ddee         dedee         dee
eef                  d
ee         ddfdZdS )CounterMetricFamilyzIA single counter and its samples.

    For use by custom collectors.
    Nr   r   r   r+   r*   createdr   r-   c                    |                     d          r
|d d         }t                              | ||d|           ||t          d          |g }t	          |          | _        ||                     g |||           d S d S )N_totalir   rP   )r-   )r!   r   r(   r#   rR   rS   rT   )r&   r   r   r+   r*   r_   r   r-   s           r'   r(   zCounterMetricFamily.__init__l   s     =="" 	9DdM9dCCC%"3PQQQ>F ==OOBwOBBBBB r)   r,   r/   c                 X   | j                             t          | j        dz   t	          t          | j        |                    |||                     |T| j                             t          | j        dz   t	          t          | j        |                    ||                     dS dS )zAdd a metric to the metric family.

        Args:
          labels: A list of label values
          value: The value of the metric
          created: Optional unix timestamp the child was created at.
        ra   N_createdrW   )r&   r*   r+   r_   r,   r-   s         r'   rT   zCounterMetricFamily.add_metric   s     	F49x#7c$BRTZ>[>[9\9\^cenpxyyzzzLty:'=tCHXZ`DaDa?b?bdkmv w wxxxxx r)   )NNNr   NrD   )rE   rF   rG   rH   rI   r   rJ   r   r
   r(   r   r   rT   r=   r)   r'   r^   r^   f   s1         +/37,004C CC #C !C "(3-0	C
 #5/C C $H-C C C C0 /3BF26y y#C=yy %UOy 'uY-='>?	y
 &h/y y y y y y yr)   r^   c                       e Zd ZdZ	 	 	 ddededee         deee                  def
d	Zddee         ded
ee	e
ef                  ddfdZdS )GaugeMetricFamilyzGA single gauge and its samples.

    For use by custom collectors.
    Nr   r   r   r+   r*   r   c                     t                               | ||d|           ||t          d          |g }t          |          | _        ||                     g |           d S d S )Nr   rP   rQ   rU   s         r'   r(   zGaugeMetricFamily.__init__   sx     	dM7DAAA%"3PQQQ>F ==OOB&&&&& r)   r,   r/   c                     | j                             t          | j        t	          t          | j        |                    ||                     dS )z|Add a metric to the metric family.

        Args:
          labels: A list of label values
          value: A float
        NrW   rZ   s       r'   rT   zGaugeMetricFamily.add_metric   sG     	F49d3t7G3P3P.Q.QSXZcddeeeeer)   r[   r5   r\   r=   r)   r'   re   re      s          +/37' '' #' !' "(3-0	'
 ' ' ' ' f f# fu fRWXachXhRiIj fvz f f f f f fr)   re   c                       e Zd ZdZ	 	 	 	 ddededee         dee         deee                  d	efd
Z		 ddee         dededee
eef                  ddf
dZdS )SummaryMetricFamilyzIA single summary and its samples.

    For use by custom collectors.
    Nr   r   r   count_value	sum_valuer*   r   c                    t                               | ||d|           |d u |d u k    rt          d          ||t          d          |g }t          |          | _        |||                     g ||           d S d S d S )Nr   z4count_value and sum_value must be provided together.rP   rQ   )r&   r   r   rj   rk   r*   r   s          r'   r(   zSummaryMetricFamily.__init__   s     	dM9dCCC;$#677STTT+"9PQQQ>F =="y'<OOBY77777 #"'<'<r)   r,   r/   c                 N   | j                             t          | j        dz   t	          t          | j        |                    ||                     | j                             t          | j        dz   t	          t          | j        |                    ||                     dS )zAdd a metric to the metric family.

        Args:
          labels: A list of label values
          count_value: The count value of the metric.
          sum_value: The sum value of the metric.
        _count_sumNrW   )r&   r*   rj   rk   r,   s        r'   rT   zSummaryMetricFamily.add_metric   s     	F49x#7c$BRTZ>[>[9\9\^iktuuvvvF49v#5tC@PRX<Y<Y7Z7Z\egpqqrrrrrr)   NNNr   r5   )rE   rF   rG   rH   rI   r   intrJ   r   r(   r   r   rT   r=   r)   r'   ri   ri      s          /3.2378 88 #8 'sm8 %UO	8
 "(3-08 8 8 8 82 8<s s#C=s #s $s
 E%"234s s s s s s sr)   ri   c                   <   e Zd ZdZ	 	 	 	 ddededeeeeee	f         eee	e
f         f                           dee	         deee                  d	efd
Z	 ddee         deeeee	f         eee	e
f         f                  dee	         deeee	f                  ddf
dZdS )HistogramMetricFamilyzKA single histogram and its samples.

    For use by custom collectors.
    Nr   r   r   bucketsrk   r*   r   c                     t                               | ||d|           ||t          d          ||t          d          |g }t          |          | _        ||                     g ||           d S d S )Nr   z-sum value cannot be provided without buckets.3Can only specify at most one of buckets and labels.rQ   )r&   r   r   rt   rk   r*   r   s          r'   r(   zHistogramMetricFamily.__init__   s     	dM;EEE W_LMMM'"5RSSS>F ==OOB33333 r)   r,   r/   c                    |D ]}|dd         \  }}d}t          |          dk    r|d         }| j                            t          | j        dz   t          t          t          | j        |                    d|fgz             |||                     t          |d         d                   dk    r|| j                            t          | j        dz   t          t          | j        |                    |d         d	         |                     | j                            t          | j        d
z   t          t          | j        |                    ||                     dS dS dS )az  Add a metric to the metric family.

        Args:
          labels: A list of label values
          buckets: A list of lists.
              Each inner list can be a pair of bucket name and value,
              or a triple of bucket name, value, and exemplar.
              The buckets must be sorted, and +Inf present.
          sum_value: The sum value of the metric.
        N      _bucketler   rn   r	   ro   )
lenr%   r1   r   r   rX   listrY   rS   rJ   )	r&   r*   rt   rk   r,   bbucketr+   r-   s	            r'   rT   z HistogramMetricFamily.add_metric   s     	 	AbqbEMFEH1vv{{Q4L	I%T#d.7788T6N;KKLL! !     A1$$)>Lty8+T#d6F2O2O-P-PRYZ\R]^_R`bklln n nLty6)4D4Df0M0M+N+NPY[deeg g g g g	 %$)>)>r)   rp   r5   )rE   rF   rG   rH   rI   r   r   r   r   rJ   r
   r(   r   rT   r=   r)   r'   rs   rs      sO         gk.2374 44 #4 #8E%U
2CU3PUW_K_E`2`,a#bc4 %UO	4
 "(3-04 4 4 4 4. CG	!g !g#C=!g$U5e+<eCPXDX>Y+Y%Z[!g 'uo!g 'uY-='>?	!g LP	!g !g !g !g !g !gr)   rs   c                       e Zd ZdZ	 	 	 	 ddededeeeeef                           dee         deee                  d	efd
Z		 ddee         deeeef                  dee         dee
eef                  ddf
dZdS )GaugeHistogramMetricFamilyzQA single gauge histogram and its samples.

    For use by custom collectors.
    Nr   r   r   rt   
gsum_valuer*   r   c                     t                               | ||d|           ||t          d          |g }t          |          | _        ||                     g ||           d S d S )Nr   rv   rQ   )r&   r   r   rt   r   r*   r   s          r'   r(   z#GaugeHistogramMetricFamily.__init__#  s{     	dM3CTJJJ'"5RSSS>F ==OOB44444 r)   r,   r/   c                    |D ]j\  }}| j                             t          | j        dz   t	          t          t          | j        |                    d|fgz             ||                     k| j                             t          | j        dz   t	          t          | j        |                    |d         d         |          t          | j        dz   t	          t          | j        |                    ||          g           dS )a  Add a metric to the metric family.

        Args:
          labels: A list of label values
          buckets: A list of pairs of bucket names and values.
              The buckets must be sorted, and +Inf present.
          gsum_value: The sum value of the metric.
        rz   r{   _gcountr|   r	   _gsumN)	r%   r1   r   r   rX   r~   rY   rS   extend)r&   r*   rt   r   r,   r   r+   s          r'   rT   z%GaugeHistogramMetricFamily.add_metric4  s    % 	# 	#MFEL	I%T#d.7788T6N;KKLLy!" !" # # # #
 	49y($s43CV/L/L*M*MwWY{[\~_hii49w&S1A6-J-J(K(KZYbcc
 	 	 	 	 	r)   rp   r5   )rE   rF   rG   rH   rI   r   r   r   rJ   r(   r   r   rT   r=   r)   r'   r   r     s         CG/3375 55 #5 #8E#u*,=#>?5 &e_	5
 "(3-05 5 5 5 5* CG	 #C=$U3:%67  ( 'uUI-='>?	
      r)   r   c                       e Zd ZdZ	 	 ddededeeeef                  deee                  fdZ	 ddee         deeef         dee	e
ef                  d	dfd
ZdS )InfoMetricFamilyzFA single info and its samples.

    For use by custom collectors.
    Nr   r   r+   r*   c                     t                               | ||d           ||t          d          |g }t          |          | _        ||                     g |           d S d S )Nr   rP   rQ   r&   r   r   r+   r*   s        r'   r(   zInfoMetricFamily.__init__U  sv     	dM6:::%"3PQQQ>F ==OOB&&&&& r)   r,   r/   c                     | j                             t          | j        dz   t	          t	          t          | j        |                    fi |d|                     dS )zAdd a metric to the metric family.

        Args:
          labels: A list of label values
          value: A dict of labels
        _infor	   NrW   rZ   s       r'   rT   zInfoMetricFamily.add_metricd  sl     	FIc$*F3344>>>>	
 
 	 	 	 	 	r)   NNr5   )rE   rF   rG   rH   rI   r   r   r   r(   r   r   rJ   rT   r=   r)   r'   r   r   O  s          4837	' '' #' !c3h0' "(3-0	' ' ' '$ CG #C=sCx. 'uY-='>? 	     r)   r   c                       e Zd ZdZ	 	 ddededeeeef                  deee                  fdZ		 ddee         deeef         dee
eef                  d	dfd
ZdS )StateSetMetricFamilyzJA single stateset and its samples.

    For use by custom collectors.
    Nr   r   r+   r*   c                     t                               | ||d           ||t          d          |g }t          |          | _        ||                     g |           d S d S )Nr   rP   rQ   r   s        r'   r(   zStateSetMetricFamily.__init__}  sv     	dM:>>>%"3PQQQ>F ==OOB&&&&& r)   r,   r/   c                 6   t          |          }t          |                                          D ]g\  }}|rdnd}| j                            t          | j        t          t          | j	        | j        fz   ||fz                       ||                     hdS )zAdd a metric to the metric family.

        Args:
          labels: A list of label values
          value: A dict of string state names to booleans
        r	   r   N)
rR   sorteditemsr%   r1   r   r   rX   rY   rS   )r&   r*   r+   r,   stateenabledvs          r'   rT   zStateSetMetricFamily.add_metric  s     v$U[[]]33 	 	NE7$1AL	S)TYL8&E8:KLLMM	! !    	 	r)   r   r5   )rE   rF   rG   rH   rI   r   r   rL   r   r(   r   r   rJ   rT   r=   r)   r'   r   r   w  s          5937	' '' #' !c4i1' "(3-0	' ' ' '$ CG #C=sDy/ 'uY-='>? 	     r)   r   N)typingr   r   r   r   r   r   r%   r
   r   r   r   
validationr   r"   r   rN   UntypedMetricFamilyr^   re   ri   rs   r   r   r   r=   r)   r'   <module>r      s+   ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A A A A A A A A A A A A - - - - - -5 5 5 5 5 5 5 5pf f f f f& f f f> * +y +y +y +y +y& +y +y +y\f f f f f f f f@)s )s )s )s )s& )s )s )sX:g :g :g :g :gF :g :g :gz/ / / / / / / /d% % % % %v % % %P( ( ( ( (6 ( ( ( ( (r)   