
    <#(i+                        d dl m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Z	 dZ	 d	Zd
ZdZdZdZd Zd ZedfdZefded	edefdZefded	edefdZded	edeeegef         defdZdededefdZdededefdZdZdZdedefdZ dS )     )StringIO)
maxunicode)Callable   )floatToGoStringparse_version)_is_valid_legacy_labelname_is_valid_legacy_metric_namez:application/openmetrics-text; version=1.0.0; charset=utf-8z:application/openmetrics-text; version=2.0.0; charset=utf-8escapingzallow-utf-8underscoresdotsvaluesc                    | j         dk    r|j                            d          rdS | j         dv r|j                            d          rdS | j         dv r|j                            d          s|j        | j        k    rdS dS )Ncounter_totalTgaugehistogram_bucket	histogramF)typenameendswith)metricsamples     h/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/prometheus_client/openmetrics/exposition.py_is_valid_exemplar_metricr      s    {iFK$8$8$B$Bt{'((V[-A-A)-L-L(t{{##(<(<Y(G(G#6;Z`ZeKeKet5    c           	         t          | |          st          d| j         d          d                    d                    d t          |j                                                  D                                 }|j        /d                    |t          |j
                  |j                  }n(d                    |t          |j
                            }|S )	zConstructs an exemplar string.zMetric z8 has exemplars, but is not a histogram bucket or counterz{{{0}}},c           	          g | ]W\  }}d                      ||                    dd                              dd                              dd                    XS ){}="{}"\\\
\n"\")formatreplace).0kvs      r   
<listcomp>z,_compose_exemplar_string.<locals>.<listcomp>(   sq     	9 	9 	91 
		qyyu%%--dE::BB3NN
P 
P 	9 	9 	9r   Nz # {} {} {}z # {} {})r   
ValueErrorr   r'   joinsortedlabelsitems	timestampr   value)r   r   exemplarr0   exemplarstrs        r   _compose_exemplar_stringr6   #   s    $VV44 jh6;hhhiiichh	9 	9x446677	9 	9 	9: : ; ;F %#**HN++
 
 !''HN++
 

 r   z1.0.0c                 D	   g }|                                  D ]K}	 |j        }|                    d                    t	          |          t          |j        t          t                                         |                    dt	          |           d|j	         d           |j
        r/|                    dt	          |           d|j
         d           |j        D ]X}t          k    r6t          |j                  s"t	          |j                  }|j        r|dz  }nd}|j        rJt          |j                                                  }|d                    fd|D                       z  }|rd	|z   d
z   }|j        rt%          |||j                  }	nd}	d}
|j        
d|j         }
|j        rt+          |          dk     rd}d}d}d}d}|j        rd}|j        j        |j        j        |j        j        |j        j        |j        j        g}|j        j        rd                    d |j        j        D                       }d                    d |j        j        D                       }|dz  }|                    |           |dz  }|                    |           |j        j        rd                    d |j        j        D                       }d                    d |j        j        D                       }|dz  }|                    |           |dz  }|                    |           |dz  } |j        | }|j        j        r%|j        j        D ]}t%          |||          }|	|z  }	d}|j        r|}n|j         tC          |j                   }t          k    st          |j                  rG|                    d                    t          |j        t                    |||
|	                     -|                    d                    |||
|	                     Z(# tD          $ r}|j#        pd|fz   |_#         d}~ww xY w|                    d           d                    |          $                    d          S )zHReturns the metrics from the registry in latest text format as a string.z# HELP {} {}
z# TYPE  r#   z# UNIT r    c           
          g | ]B\  }}d                      t          |          t          |t          t                              CS )r    )r'   escape_label_name_escape	ALLOWUTF8_is_legacy_labelname_rune)r)   r*   r+   r   s      r   r,   z#generate_latest.<locals>.<listcomp>Q   s[     / / / $1 #))-a::GAyRk<l<ln n / / /r   {}N)r   r   r   z;{{count:{},sum:{},schema:{},zero_threshold:{},zero_count:{}c                 4    g | ]}|d           d|d          S r   :    )r)   nss     r   r,   z#generate_latest.<locals>.<listcomp>v   .    2m2m2m"be3E3Ebe3E3E2m2m2mr   c              3   4   K   | ]}t          |          V  d S N)str)r)   nds     r   	<genexpr>z"generate_latest.<locals>.<genexpr>w   s(      2c2cr3r772c2c2c2c2c2cr   z,negative_spans:[{}]z,negative_deltas:[{}]c                 4    g | ]}|d           d|d          S rB   rE   )r)   pss     r   r,   z#generate_latest.<locals>.<listcomp>   rG   r   c              3      K   | ]}| V  d S rI   rE   )r)   pds     r   rL   z"generate_latest.<locals>.<genexpr>   s$      2c2crb72c2c2c2c2c2cr   z,positive_spans:[{}]z,positive_deltas:[{}]z}}z{}{} {}{}{}
z
{} {}{}{}
)r9   z# EOF
zutf-8)%collectr   appendr'   escape_metric_namer<   documentationr=   r>   r   unitsamplesr
   r0   r/   r1   r.   r4   r6   r2   native_histogramr   count_value	sum_valueschemazero_threshold
zero_count	neg_spans
neg_deltas	pos_spans
pos_deltasnh_exemplarsr3   r   	Exceptionargsencode)registryr   versionoutputr   mnameslabelstrr1   r5   r2   rW   negative_spansnegative_deltaspositive_spanspositive_deltasnh_sample_templaterc   nh_exnh_exemplarstrr3   	exceptions    `                    r   generate_latestrs   :   s]   F""$$ j ji	KEMM*11"5(33WV=QS\^w5x5xz z { { {MMY$6uh$G$GYY&+YYYZZZ{ _](:5((K(K]]fk]]]^^^^ _ _y((1Maf1U1U(1!&(CCHx ( C!H8 0"18>>#3#344E/ / / /(-/ / /!0 !0 0H  4"X~3H: %":61aj"Q"QKK"$K	;* 1AK 1 1I % -*@*@9*L*L#% !#"$!#"$% ':)f& *6*4*1*9*5D )3 5),2m2mPQPbPl2m2m2m)n)n*-((2c2cQEWEb2c2c2c*c*c*.DD*N333*.EE*O444 )3 5),2m2mPQPbPl2m2m2m)n)n*-((2c2cQEWEb2c2c2c*c*c*.DD*N333*.EE*O444 '$.& (A'9'@$'G$)6 :%&%7%D : :E-EfaQV-W-WN'>9KK% 5,EEW(+AG44E	)).J16.R.R)MM/"8"82KLL !## #     MM-"6"6 !#	# #    u_@  	 	 	'n5&BIN	 MM)776??!!'***s   P"Q  
Q"
QQ"ri   returnc                    t          |           dk    r| S |t          k    rNt          |           s)d                    t	          | |t
                              S t	          | |t
                    S |t          k    r't          |           r| S t	          | |t
                    S |t          k    rt	          | |t
                    S |t          k    r't          |           r| S t	          | |t
                    S | S )z|Escapes the metric name and puts it in quotes iff the name does not
    conform to the legacy Prometheus character set.
    r   "{}")	lenr=   r
   r'   r<   _is_legacy_metric_runeUNDERSCORESDOTSVALUESri   r   s     r   rS   rS      s     1vv{{9+A.. 	O==H6L!M!MNNNq($:;;;	[	 	 '** 	Hq($:;;;	T		q($:;;;	V		'** 	Hq($:;;;Hr   c                    t          |           dk    r| S |t          k    rNt          |           s)d                    t	          | |t
                              S t	          | |t
                    S |t          k    r't          |           r| S t	          | |t
                    S |t          k    rt	          | |t
                    S |t          k    r't          |           r| S t	          | |t
                    S | S )z{Escapes the label name and puts it in quotes iff the name does not
    conform to the legacy Prometheus character set.
    r   rv   )	rw   r=   r	   r'   r<   r>   ry   rz   r{   r|   s     r   r;   r;      s     1vv{{9)!,, 	R==H6O!P!PQQQq($=>>>	[	 	 %a(( 	Hq($=>>>	T		q($=>>>	V		%a(( 	Hq($=>>>Hr   valid_rune_fnc                    |t           k    r>|                     dd                              dd                              dd          S |t          k    rnt                      }t	          |           D ]<\  }} |||          r|                    |           '|                    d           =|                                S |t          k    rt                      }t	          |           D ]t\  }}|dk    r|                    d           !|d	k    r|                    d
           = |||          r|                    |           _|                    d           u|                                S |t          k    r	t                      }|                    d           t	          |           D ]\  }}|dk    r|                    d           ! |||          r|                    |           Ct          |          s|                    d           h|                    d           |                    t          t          |          d                     |                    d           |                                S | S )zPerforms backslash escaping on backslash, newline, and double-quote characters.

    valid_rune_fn takes the input character and its index in the containing string.r!   r"   r#   r$   r%   r&   ___._dot_U___FFFD_x)r=   r(   ry   r   	enumeratewritegetvaluerz   r{   _is_valid_utf8r'   ord)ri   r   r~   escapedibs         r   r<   r<      s    9yyu%%--dE::BB3NNN	[	 	 **aLL 	# 	#DAq}Q"" #a    c""""!!!	T		**aLL 	$ 	$DAqCxxd####cg&&&&q!$$ $a    d####!!!	V		**eaLL 
	# 
	#DAqCxxd####q!$$ #a    #A&& #h''''c"""fSVVS11222c""""!!!Hr   r   r   c                 .    t          | |          p| dk    S )NrC   )r>   r   r   s     r   rx   rx     s    $Q**6a3h6r   c                     t          |           dk    rt          d          d| cxk    odk    nc p+d| cxk    odk    nc p| dk    pd| cxk    od	k    nc o|d
k    S )NrD   z%Input 'b' must be a single character.azAZr   09r   )rw   r-   r   s     r   r>   r>     s    
1vv{{@AAA	S 	'1OOOOOOOO	'H	' 1OOOOOOOO%A	r   i   i  c                     dt          |           cxk    rt          k     rn ndS t          t          |           cxk     rt          k    rn ndS dS )Nr   TF)r   _SURROGATE_MIN_SURROGATE_MAXr   )ri   s    r   r   r     sa    CFF####^#####tA,,,,*,,,,,t5r   N)!ior   sysr   typingr   utilsr   r   
validationr	   r
   CONTENT_TYPE_LATESTCONTENT_TYPE_LATEST_2_0ESCAPING_HEADER_TAGr=   ry   rz   r{   r   r6   rs   rJ   rS   r;   intboolr<   rx   r>   r   r   r   rE   r   r   <module>r      s                     2 2 2 2 2 2 2 2        S  <V  5   		    . (3G p+ p+ p+ p+f 0;  #  s    . /:    c    .)s )c )(C:t;K2L )QT ) ) ) )X7c 7c 7d 7 7 7 7       c d      r   