
    Mh                     d    d dl mZ d dlmZmZ dZ	 d Zd ZdedefdZ	dedefd	Z
dedefd
ZdS )   )floatToGoString)_is_valid_legacy_labelname_is_valid_legacy_metric_namez:application/openmetrics-text; version=1.0.0; charset=utf-8c                    | 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/test/jupyter/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                    g }|                                  D ]}	 |j        }|                    d                    t	          |          t          |j                                       |                    dt	          |           d|j         d           |j        r.|                    dt	          |           d|j         d           |j	        D ];}t          |j                  s!t	          |j                  }|j        r|dz  }nd}|j        rHt          |j                                                  }|d                    d	 |D                       z  }|rd
|z   dz   }|j        rt!          ||          st#          d|j         d          d                    d                    d t          |j        j                                                  D                                 }|j        j        9d                    |t'          |j        j                  |j        j                  }n0d                    |t'          |j        j                            }nd}d}	|j        
d|j         }	t          |j                  rE|                    d                    |j        |t'          |j                  |	|                     |                    d                    |t'          |j                  |	|                     =# t*          $ 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  
z# UNIT z,  ,c                 t    g | ]5\  }}d                      t          |          t          |                    6S ){}="{}")formatescape_label_name_escape.0kvs      r   
<listcomp>z#generate_latest.<locals>.<listcomp>-   sO     / / / $1 #))-a00'!**> > / / /r   {}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 )r   \\\r   \n"\")r   replacer   s      r   r"   z#generate_latest.<locals>.<listcomp>7   sy     K K K $1 #))qyyu55==dEJJRRSVX]^^` ` K K Kr   Nz # {} {} {}z # {} {}z{}{} {}{}{}
z
{} {}{}{}
)r   z# EOF
zutf-8)collectr   appendr   escape_metric_namer   documentationr   unitsamplesr   labelssorteditemsjoinexemplarr   
ValueError	timestampr   value	Exceptionargsencode)registryoutputr   mnameslabelstrr4   r2   exemplarstrr8   	exceptions              r   generate_latestrD      s   F""$$ A A@	KEMM*11"5))763G+H+HJ J K K KMMO$6u$=$=OOOOOPPP{ US(:5(A(ASSFKSSSTTT^ 6 63AF;; "1!&99Hx ) D(!H8 0"18>>#3#344E/ /(-/ / /!0 !0 0H  4"X~3H: %4VQ?? z()x6;)x)x)xyyy&--chhK K(.qz/@/F/F/H/H(I(IK K K/L /L M MF z+7&3&:&:"+AJ,<==J0' ' '1&7&7"+AJ,<==' '
 #%K	;* 1AK 1 1I/77 MM/"8"8 '00!## #     MM-"6"6 '00!#	# #    c6n  	 	 	'n5&BIN	 MM)776??!!'***s   K6L
L5L00L5r@   returnc                 h    t          |           r| S d                    t          |                     S )z|Escapes the metric name and puts it in quotes iff the name does not
    conform to the legacy Prometheus character set.
    "{}")r   r   r   r@   s    r   r.   r.   a   s1     $A&& ==$$$r   c                 h    t          |           r| S d                    t          |                     S )z{Escapes the label name and puts it in quotes iff the name does not
    conform to the legacy Prometheus character set.
    rG   )r   r   r   rH   s    r   r   r   j   s1     "!$$ ==$$$r   c                 ~    |                      dd                               dd                               dd          S )zOPerforms backslash escaping on backslash, newline, and double-quote characters.r&   r'   r   r(   r)   r*   )r+   rH   s    r   r   r   s   s6    99T5!!))$66>>sEJJJr   N)utilsr   
validationr   r   CONTENT_TYPE_LATESTr   rD   strr.   r   r    r   r   <module>rP      s    $ # # # # #        S  8  G+ G+ G+T%# %# % % % %% % % % % %Ks Ks K K K K K Kr   