Ë
    :vžjØ+  ã                   ó  — 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 y) é    )Ú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                 ó8  — | j                   dk(  r|j                  j                  d«      ry| j                   dk(  r|j                  j                  d«      ry| j                   dk(  r5|j                  j                  d«      s|j                  | j                  k(  ryy)NÚcounterÚ_totalTÚgaugehistogramÚ_bucketÚ	histogramF)ÚtypeÚnameÚendswith)ÚmetricÚsamples     úy/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/prometheus_client/openmetrics/exposition.pyÚ_is_valid_exemplar_metricr      sx   € Ø‡{�{�iÒ F§K¡K×$8Ñ$8¸Ô$BØØ‡{�{Ð&Ò&¨6¯;©;×+?Ñ+?À	Ô+JØØ‡{�{�kÒ! v§{¡{×';Ñ';¸IÔ'FÈ&Ï+É+ÐY_×YdÑYdÒJdØØó    c                 óJ  — t        | |«      st        d| j                  › d�«      ‚dj                  dj	                  t        |j                  j                  «       «      D ��cg c]G  \  }}dj                  ||j                  dd«      j                  dd	«      j                  d
d«      «      ‘ŒI c}}«      «      }|j                  �2dj                  |t        |j                  «      |j                  «      }|S dj                  |t        |j                  «      «      }|S c c}}w )zConstructs an exemplar string.zMetric z8 has exemplars, but is not a histogram bucket or counterz{{{0}}}Ú,ú{}="{}"Ú\ú\\Ú
ú\nÚ"ú\"z # {} {} {}z # {} {})r   Ú
ValueErrorr   ÚformatÚjoinÚsortedÚlabelsÚitemsÚreplaceÚ	timestampr   Úvalue)r   r   ÚexemplarÚkÚvr*   Úexemplarstrs          r   Ú_compose_exemplar_stringr3   #   s  € ä$ V¨VÔ4Ü˜7 6§;¡; -Ð/gÐhÓiÐiØ×Ñ˜cŸh™hô ˜xŸ™×4Ñ4Ó6Ô7ô	9á7‘��1ð 
×	Ñ	Øˆq�y‰y˜˜uÓ%×-Ñ-¨d°EÓ:×BÑBÀ3ÈÓNõ
Pà7ò	9ó:ó ;€Fð ×ÑÐ%Ø#×*Ñ*ØÜ˜HŸN™NÓ+Ø×Ñó
ˆð Ðð !×'Ñ'ØÜ˜HŸN™NÓ+ó
ˆð
 Ðùó	9s   Á"ADz1.0.0c                 óÖ
  — g }| j                  «       D �]è  }	 |j                  }|j                  dj                  t	        ||«      t        |j                  t        t        «      «      «       |j                  dt	        ||«      › d|j                  › d�«       |j                  r,|j                  dt	        ||«      › d|j                  › d�«       |j                  D �]  }|t        k(  r=t        |j                  «      s(t	        |j                  |«      }|j                  r|dz  }nd}|j                  rwt        |j                  j                  «       «      }|dj!                  |D �	�
cg c]4  \  }	}
dj                  t#        |	|«      t        |
t        t        «      «      ‘Œ6 c}
}	«      z  }|rd	|z   d
z   }|j$                  rt'        |||j$                  «      }nd}d}|j(                  �d|j(                  › �}|j*                  rt-        |«      dk  r�Œ8d}d}d}d}d}|j*                  �rd}|j*                  j.                  |j*                  j0                  |j*                  j2                  |j*                  j4                  |j*                  j6                  g}|j*                  j8                  r–dj!                  |j*                  j8                  D �cg c]  }|d   › d|d   › �‘Œ c}«      }dj!                  d„ |j*                  j:                  D «       «      }|dz  }|j                  |«       |dz  }|j                  |«       |j*                  j<                  r–dj!                  |j*                  j<                  D �cg c]  }|d   › d|d   › �‘Œ c}«      }dj!                  d„ |j*                  j>                  D «       «      }|dz  }|j                  |«       |dz  }|j                  |«       |dz  } |j                  |Ž }|j*                  j@                  r-|j*                  j@                  D ]  }t'        |||«      }||z  }Œ d}|j*                  r|}n!|jB                  �tE        |jB                  «      }|t        k7  st        |j                  «      r?|j                  dj                  t        |j                  |t        «      ||||«      «       �Œú|j                  dj                  ||||«      «       �Œ �Œë |j                  d«       dj!                  |«      jK                  d«      S c c}
}	w c c}w c c}w # tF        $ r}|jH                  xs d|fz   |_$        ‚ d}~ww xY w)zHReturns the metrics from the registry in latest text format as a string.z# HELP {} {}
z# TYPE Ú r"   z# UNIT r   Ú r   Ú{Ú}N)r   r   r   z;{{count:{},sum:{},schema:{},zero_threshold:{},zero_count:{}r   Ú:é   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Ústr)Ú.0Únds     r   Ú	<genexpr>z"generate_latest.<locals>.<genexpr>w   s   è ø€ Ð2cÑEb¸r´3°r·7ÑEbùs   ‚z,negative_spans:[{}]z,negative_deltas:[{}]c              3   ó"   K  — | ]  }|› –— Œ	 y ­wr<   © )r>   Úpds     r   r@   z"generate_latest.<locals>.<genexpr>€   s   è ø€ Ð2cÑEb¸r°b°T³7ÑEbùs   ‚z,positive_spans:[{}]z,positive_deltas:[{}]z}}z{}{} {}{}{}
z
{} {}{}{}
)r6   z# EOF
zutf-8)&Úcollectr   Úappendr'   Úescape_metric_nameÚ_escapeÚdocumentationÚ	ALLOWUTF8Ú_is_legacy_labelname_runer   ÚunitÚsamplesr
   r*   r)   r+   r(   Úescape_label_namer/   r3   r-   Únative_histogramr   Úcount_valueÚ	sum_valueÚschemaÚzero_thresholdÚ
zero_countÚ	neg_spansÚ
neg_deltasÚ	pos_spansÚ
pos_deltasÚnh_exemplarsr.   r   Ú	ExceptionÚargsÚencode)Úregistryr   ÚversionÚoutputr   ÚmnameÚsÚlabelstrr+   r0   r1   r2   r-   rN   Únegative_spansÚnegative_deltasÚpositive_spansÚpositive_deltasÚnh_sample_templaterZ   ÚnsÚpsÚnh_exÚnh_exemplarstrr.   Ú	exceptions                             r   Úgenerate_latestrl   :   s  € à€FØ×"Ñ"×$ˆði	Ø—K‘KˆEØ�M‰MÐ*×1Ñ1Ü" 5¨(Ó3´W¸V×=QÑ=QÔS\Ô^wÓ5xózô {à�M‰M˜GÔ$6°u¸hÓ$GÐ#HÈÈ&Ï+É+ÈÐVXÐYÔZØ�{Š{Ø—‘ Ô(:¸5À(Ó(KÐ'LÈAÈfÏkÉkÈ]ÐZ\Ð]Ô^Ø—^•^�ØœyÒ(Ô1MÈaÏfÉfÔ1UÜ1°!·&±&¸(ÓC�HØ—x’xØ  C™™à!�Hà—8’8Ü" 1§8¡8§>¡>Ó#3Ó4�Eà §¡ñ ).ô/á(-¡  1ð #×)Ñ)Ü-¨a°Ó:¼GÀAÄyÔRkÓ<lõnà(-ò/ó!0ñ 0�Hñ Ø" X™~°Ñ3�HØ—:’:Ü":¸6À1ÀaÇjÁjÓ"Q‘Kà"$�KØ�	Ø—;‘;Ð*Ø"# A§K¡K =Ð 1�Ið ×%Ò%¬-¸Ó*@À9Ò*LÙà#%Ð Ø!#�Ø"$�Ø!#�Ø"$�à×%Ó%à)fÐ&ð ×*Ñ*×6Ñ6Ø×*Ñ*×4Ñ4Ø×*Ñ*×1Ñ1Ø×*Ñ*×9Ñ9Ø×*Ñ*×5Ñ5ð�Dð ×)Ñ)×3Ò3Ø),¯©ÐPQ×PbÑPb×PlÒPlÓ2mÑPlÈ"°b¸±e°W¸A¸bÀ¹e¸WÒ3EÐPlÑ2mÓ)n˜Ø*-¯(©(Ñ2cÀQ×EWÑEW×EbÒEbÓ2cÓ*c˜Ø*Ð.DÑDÐ*ØŸ™ NÔ3Ø*Ð.EÑEÐ*ØŸ™ OÔ4ð ×)Ñ)×3Ò3Ø),¯©ÐPQ×PbÑPb×PlÒPlÓ2mÑPlÈ"°b¸±e°W¸A¸bÀ¹e¸WÒ3EÐPlÑ2mÓ)n˜Ø*-¯(©(Ñ2cÀQ×EWÑEW×EbÒEbÓ2cÓ*c˜Ø*Ð.DÑDÐ*ØŸ™ NÔ3Ø*Ð.EÑEÐ*ØŸ™ OÔ4ð '¨$Ñ.Ð&ð (AÐ'9×'@Ñ'@À$Ð'GÐ$à×)Ñ)×6Ò6Ø%&×%7Ñ%7×%DÔ%D˜EÜ-EÀfÈaÐQVÓ-W˜NØ'¨>Ñ9™Kð &Eð �Ø×%Ò%Ø,‘EØ—W‘WÐ(Ü+¨A¯G©GÓ4�EØ¤	Ò)Ô.JÈ1Ï6É6Ô.RØ—M‘M /×"8Ñ"8Ü §¡¨Ô2KÓLØ ØØ!Ø#ó#ö ð —M‘M -×"6Ñ"6Ø ØØ!Ø#ó	#ö òu $ð %ðX ‡M�M�)ÔØ�7‰7�6‹?×!Ñ! 'Ó*Ð*ùós/ùòJ 3nùò 3nøôL ò 	Ø'Ÿn™nÒ5°¸&¸ÑBˆIŒNØûð	úsE   ˜EU Å(9T0Æ!D0U ËT6Ë%BU Í=T;ÎE+U Ô0U Õ 	U(Õ	U#Õ#U(r`   Úreturnc                 ó€  — t        | «      dk(  r| S |t        k(  r<t        | «      s dj                  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   ú"{}")	ÚlenrI   r
   r'   rG   Ú_is_legacy_metric_runeÚUNDERSCORESÚDOTSÚVALUES©r`   r   s     r   rF   rF   ­   s´   € ô ˆ1ƒv�‚{ØˆØ”9ÒÜ+¨AÔ.Ø—=‘=¤¨¨HÔ6LÓ!MÓNÐNÜ�q˜(Ô$:Ó;Ð;Ø	”[Ò	 Ü'¨Ô*ØˆHÜ�q˜(Ô$:Ó;Ð;Ø	”TÒ	Ü�q˜(Ô$:Ó;Ð;Ø	”VÒ	Ü'¨Ô*ØˆHÜ�q˜(Ô$:Ó;Ð;Ø€Hr   c                 ó€  — t        | «      dk(  r| S |t        k(  r<t        | «      s dj                  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   ro   )	rp   rI   r	   r'   rG   rJ   rr   rs   rt   ru   s     r   rM   rM   Ä   s´   € ô ˆ1ƒv�‚{ØˆØ”9ÒÜ)¨!Ô,Ø—=‘=¤¨¨HÔ6OÓ!PÓQÐQÜ�q˜(Ô$=Ó>Ð>Ø	”[Ò	 Ü% aÔ(ØˆHÜ�q˜(Ô$=Ó>Ð>Ø	”TÒ	Ü�q˜(Ô$=Ó>Ð>Ø	”VÒ	Ü% aÔ(ØˆHÜ�q˜(Ô$=Ó>Ð>Ø€Hr   Úvalid_rune_fnc                 ó  — |t         k(  r2| j                  dd«      j                  dd«      j                  dd«      S |t        k(  rYt        «       }t	        | «      D ]1  \  }} |||«      r|j                  |«       Œ!|j                  d«       Œ3 |j                  «       S |t        k(  r‡t        «       }t	        | «      D ]_  \  }}|dk(  r|j                  d«       Œ|d	k(  r|j                  d
«       Œ4 |||«      r|j                  |«       ŒO|j                  d«       Œa |j                  «       S |t        k(  rÓt        «       }|j                  d«       t	        | «      D ]š  \  }}|dk(  r|j                  d«       Œ |||«      r|j                  |«       Œ8t        |«      s|j                  d«       ŒU|j                  d«       |j                  t        t        |«      d«      «       |j                  d«       Œœ |j                  «       S | S )z¤Performs 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)rI   r,   rr   r   Ú	enumerateÚwriteÚgetvaluers   rt   Ú_is_valid_utf8r'   Úord)r`   r   rw   ÚescapedÚiÚbs         r   rG   rG   Û   s´  € ð ”9ÒØ�y‰y˜˜uÓ%×-Ñ-¨d°EÓ:×BÑBÀ3ÈÓNÐNØ	”[Ò	 Ü“*ˆÜ˜a–L‰DˆAˆqÙ˜Q Ô"Ø—‘˜aÕ à—‘˜cÕ"ð	 !ð
 ×ÑÓ!Ð!Ø	”TÒ	Ü“*ˆÜ˜a–L‰DˆAˆqØ�CŠxØ—‘˜dÕ#Ø�c’Ø—‘˜gÕ&Ù˜q !Ô$Ø—‘˜aÕ à—‘˜dÕ#ð !ð ×ÑÓ!Ð!Ø	”VÒ	Ü“*ˆØ�‰�eÔÜ˜a–L‰DˆAˆqØ�CŠxØ—‘˜dÕ#Ù˜q !Ô$Ø—‘˜aÕ Ü# AÔ&Ø—‘˜hÕ'à—‘˜cÔ"Ø—‘œf¤S¨£V¨SÓ1Ô2Ø—‘˜cÕ"ð !ð ×ÑÓ!Ð!Ø€Hr   r‡   r†   c                 ó(   — t        | |«      xs | dk(  S )Nr9   )rJ   ©r‡   r†   s     r   rq   rq     s   € Ü$ Q¨Ó*Ò6¨a°3©hÐ6r   c                 ó¸   — t        | «      dk7  rt        d«      ‚d| cxk  xr dk  nc xs0 d| cxk  xr dk  nc xs | dk(  xs d| cxk  xr d	k  nc xr |d
kD  S )Nr:   z%Input 'b' must be a single character.ÚaÚzÚAÚZry   Ú0Ú9r   )rp   r&   r‰   s     r   rJ   rJ     s`   € Ü
ˆ1ƒv�‚{ÜÐ@ÓAÐAà	�Ž�SŒò 	'Ø�1ŽO˜ŒOò	'à�‰Hò	'ð �1ŽO˜ŒOÒ%  A¡ð	r   i Ø  iÿß  c                 óv   — dt        | «      cxk  r	t        k  ry t        t        | «      cxk  r	t        k  ry yy)Nr   TF)r„   Ú_SURROGATE_MINÚ_SURROGATE_MAXr   )r`   s    r   rƒ   rƒ     s7   € ØŒC�‹FÔ#”^Ò#Øð $äœ˜A›Ô,¤*Ò,Øð -ár   N)!Úior   Úsysr   Útypingr   Úutilsr   r   Ú
validationr	   r
   ÚCONTENT_TYPE_LATESTÚCONTENT_TYPE_LATEST_2_0ÚESCAPING_HEADER_TAGrI   rr   rs   rt   r   r3   rl   r=   rF   rM   ÚintÚboolrG   rq   rJ   r’   r“   rƒ   rB   r   r   Ú<module>rž      s#  ðõ Ý Ý ç 2÷ð SÐ Ø <ØVÐ Ø 5Ø Ð ð €	Ø€Ø€Ø	€òòð. (3¸Gó p+ðf 0;ñ ˜#ð ¨ð ¸só ð. /:ñ ˜ð ¨ð ¸có ð.)ˆsð )˜cð )°(¸CÀ¸:ÀtÐ;KÑ2Lð )ÐQTó )ðX7˜cð 7 cð 7¨dó 7ð ð ¨ð °ó ð €Ø€ð�cð ˜dô r   