U
    d                     @   s$   d dl mZ dZdd Zdd ZdS )   )floatToGoStringz:application/openmetrics-text; version=0.0.1; charset=utf-8c                 C   s8   | j dkr|jdrdS | j dkr4|jdr4dS dS )NcounterZ_totalT)Z	histogramZgaugehistogramZ_bucketF)typenameendswith)metricsample r	   L/tmp/pip-unpacked-wheel-2bcd7zt2/prometheus_client/openmetrics/exposition.py_is_valid_exemplar_metric
   s
    r   c           
      C   s  g }|   D ]}zv|j}|d||jdddddd |d| d	|j d |jr|d
| d	|j d |jD ]}|j	rdd
dd t|j	 D }nd}|jrFt||std|j ddd
dd t|jj	 D }|jjdk	r0d|t|jj|jj}nd|t|jj}nd}d}|jdk	rfd	|j }|d|j|t|j|| qW q tk
r }	 z|	jpd|f |	_ W 5 d}	~	X Y qX q|d d
|dS )zHReturns the metrics from the registry in latest text format as a string.z# HELP {} {}
\\\
\n"\"z# TYPE  z# UNIT z{{{0}}},c              	   S   s4   g | ],\}}d  ||ddddddqS z{}="{}"r   r   r   r   r   r   formatreplace.0kvr	   r	   r
   
<listcomp>    s
    z#generate_latest.<locals>.<listcomp> zMetric z8 has exemplars, but is not a histogram bucket or counterc              	   S   s4   g | ],\}}d  ||ddddddqS r   r   r   r	   r	   r
   r   )   s
    Nz # {} {} {}z # {} {}z{}{} {}{}{}
)r   z# EOF
zutf-8)Zcollectr   appendr   Zdocumentationr   r   unitZsampleslabelsjoinsorteditemsZexemplarr   
ValueError	timestampr   value	Exceptionargsencode)
registryoutputr   ZmnamesZlabelstrr    Zexemplarstrr%   	exceptionr	   r	   r
   generate_latest   sj     




r.   N)utilsr   ZCONTENT_TYPE_LATESTr   r.   r	   r	   r	   r
   <module>   s   