
    hD0              	          S SK rS SKrS SKrS SKJrJrJrJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJrJrJr  S\S\\   4S	 jrS
SSS.rS\\   S\4S jr\R0                  " S5      r\R0                  " S5      rS\S\4S jrS\S\4S jrS\S\S\4S jrS&S\S\S\\\4   4S jjr S\S\S\\\4   4S jr!S'S\S\S\S\4S jjr"S\S\S\4S jr#S'S jr$S  r%S\S\\&\	\&   4   4S! jr'S" r(S# r)S$\
S\\   4S% jr*g)(    N)DictIterableListMatchOptionalTextIOTuple   )Metric)Sample)_is_valid_legacy_metric_name_validate_labelname_validate_metric_nametextreturnc              #   ^   #    [        [        R                  " U 5      5       Sh  vN   g N7f)zUParse Prometheus text format from a unicode string.

See text_fd_to_metric_families.
N)text_fd_to_metric_familiesStringIO)r   s    kC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\prometheus_client/parser.pytext_string_to_metric_familiesr      s      
 *(*;*;D*ABBBs   #-+-\
")z\\z\nz\"matchc                 2    [         U R                  S5         $ )Nr   )ESCAPE_SEQUENCESgroup)r   s    r   replace_escape_sequencer      s    EKKN++    z\\[\\n]z\\[\\n"]sc                 6    [         R                  [        U 5      $ N)HELP_ESCAPING_REsubr   r    s    r   _replace_help_escapingr&   $   s     7;;r   c                 6    [         R                  [        U 5      $ r"   )ESCAPING_REr$   r   r%   s    r   _replace_escapingr)   (   s    ??2A66r   charposc                 p    SnX:  a(  XS-
  U-
     S:X  a  US-  nX:  a  XS-
  U-
     S:X  a  M  US-  S:H  $ )Nr   r
   r       )r    r*   num_bslashess      r   _is_character_escapedr/   ,   sW    L!1|+,4 !1|+,4!q  r   labels_stringopenmetricsc                    0 nU R                  5       nU(       a  U(       a  US   S:X  a  [        SU -   5      e U(       Gam  [        X15      u  pCU(       d  U(       a  [        SU -   5      eM3  Sn[        US5      nUS:X  a  SnS	nO#[        US5      n[	        US U 5      u  puXHS
-   S  nU(       d  [        U5      (       d  [        S5      eUR                  5       nU(       a	  US   S:w  a  [        eS
n	U	[        U5      :  a=  UR                  SU	5      n	[        US U	 U	5      (       d  OU	S
-  n	U	[        U5      :  a  M=  U	S
-   n
U
[        U5      :w  a  [        SU -   5      e[	        US U
 5      u  pUS	:X  a  [        U5        O[        U5        Xr;   a  [        SU -   5      eXU'   U(       a  GMm  U$ ! [         a    [        SU -   5      ef = f)Nr   ,zleading comma: zempty term in line: F=T__name__r
   zunquoted UTF-8 metric namer   zunexpected text after quote: z$invalid line, duplicate label name: zInvalid labels: )strip
ValueError
_next_term_next_unquoted_char_unquote_unescaper   lenindexr/   r   r   )r0   r1   labels
sub_labelstermquoted_nameoperator_pos
label_namevalue_starti	quote_endlabel_value_s                r   parse_labelsrI   4   s   F $$&Jzjms&:*]:;;5=  **BD$%;m%KLLK.tS9Lr!"'
1$<*;D+<N*O'
!O,-'CJ'O'O !=>> ::<D47c>   Ac$i-JJsA&,T"1Xq99Q	 c$i- AICI% !@=!PQQ.tJY/?@NKZ'%j1#J/# !G-!WXX!,:a jb  =+m;<<=s   DF0 >A-F0 .F0 0G	c                    U S   S:X  a!  U SS n U (       d  gU S   S:X  a  [        S5      e[        U S5      nUS:X  a  [        U 5      nU SU nU(       d  U(       a  [        S	U5      eXS nUR                  5       UR                  5       4$ )
zExtract the next comma-separated label term from the text.

Returns the stripped term and the stripped remainder of the string, 
including the comma.

Raises ValueError if the term is empty and we're in openmetrics mode.
r   r3   r
   N) rK   zmultiple commasz,}r5   zempty term:)r8   r:   r<   r7   )r   r1   splitposr@   	sublabelss        r   r9   r9   s   s     Aw#~ABx7c>.//"4.H2~t9	?DK--YI::<***r   chsstartidxc                     UnSnUc  [         R                  nU[        U 5      :  aF  X   S:X  a  [        X5      (       d  U(       + nU(       d
  X   U;   a  U$ US-  nU[        U 5      :  a  MF  g)zReturn position of next unquoted character in tuple, or -1 if not found.

It is always assumed that the first character being checked is not already
inside quotes.
Fr   r
   r5   )string
whitespacer<   r/   )r   rN   rO   rE   	in_quotess        r   r:   r:      sp     	AI
{
c$i-7c>"7"@"@%Iw#~	Q c$i- r   c                     [        U 5      S-
  nSnUc  [        R                  nUS:  a=  X   S:X  a  [        X5      (       d  U(       + nU(       d
  X   U;   a  U$ US-  nUS:  a  M=  g)zGReturn position of last unquoted character in list, or -1 if not found.r
   Fr   r   r5   )r<   rQ   rR   r/   )r   rN   rE   rS   s       r   _last_unquoted_charrU      sn    D	AAI
{
a%7c>"7"@"@%Iw#~	Q a% r   c                    S/nSnU[        U 5      :  as  [        XU5      nUS:X  a  XS US'   [        U 5      nM5  US:  a  [        U5      U:  a
  XS US'    U$ XU US'   US-   nUR                  S5        U[        U 5      :  a  Ms  U$ )z^Splits on split_ch similarly to strings.split, skipping separators if
they are inside quotes.
rK   r   r5   Nr
   )r<   r:   append)r   	separatormaxsplittokensx	split_poss         r   _split_quotedr]      s    
 TF	A
c$i-';	?bF2JD	Aa<CK(2bF2J M I&r
Mb c$i- Mr   c                     U (       d  U S4$ SnU R                  5       n U S   S:X  a*  [        U 5      S:X  d	  U S   S:w  a  [        S5      eU SS n SnSU ;   a  [        U 5      n X4$ )	z.Returns the string, and true if it was quoted.Fr   r   r
   r5   zmissing close quoteTr   )r7   r<   r8   r)   )r   quoteds     r   r;   r;      st    U{F::<DAw#~t9>T"X_233Abzt| &<r   c                 V   U R                  5       n SnX;  a  SnU R                  U5       Vs/ s H)  o"R                  5       (       d  M  UR                  5       PM+     nnU(       d  [        U 5      S 4$ [	        US   5      n[        U5      S:  a  [	        US   5      S-  OS nX$4$ s  snf )N 	r   r
   r5   i  )lstripsplitr7   float_parse_valuer<   )r    rX   valuevalues	timestamps        r   _parse_value_and_timestamprj      s    	
AI	)*);M);{{}mekkm);FMQx~#E58[1_fRj)D0$I Ns   B&	B&c                     SR                  U 5      n X R                  5       :w  d  SU ;   a  [        SU < 35      e [        U 5      $ ! [         a    [	        U 5      s $ f = f)NrK   rH   zInvalid value: )joinr7   r8   intre   )rg   s    r   rf   rf      s[    GGENE?5)4555z U|s   
A AAc                    Sn[        U S5      nUS:X  d  XS U ;   a^  [        U S5      nU S U R                  5       n[        U5      (       d  [        SU -   5      eXS-   S  n[	        U5      u  pg[        U0 Xg5      $ U S U R                  5       n[        U S5      n[        XS-   U S5      n	U(       d  S	U	;  a  [        eU	S	   nU	S		 OS	U	;   a  [        S
5      eXS-   S  n[	        U5      u  pg[        XIXg5      $ )Nz # {r5   z 	zinvalid metric name:r
   }Fr6   z$metric name specified more than once)r:   r7   r   r8   rj   r   rI   )
r   rX   label_startname_endnameremaining_textrg   ri   	label_endr>   s
             r   _parse_samplerv      s"   I%dC0KbIl{);;&tU3IX$$&+D113d:;;lm,5nEdB11##%D#D#.I$Qy95AFV#j!:	v	?@@a-.)N1.AE$11r   fdc           
   #   4  #    SnSnSn/ n/ nS[         S[         S[         S[        [           S[        4
S jnU  GH  nUR	                  5       nUR                  S	5      (       Ga4  [        US
S5      n[        U5      S:  a  MI  Su  p[        U5      S:  aA  US   S:w  a  US   S:w  a  Mp  [        US   5      u  pU
(       d  [        U	5      (       d  [        eUS   S:X  aB  X:w  a  US:w  a  U" XX45      v   U	nSn/ nU	/n[        U5      S:X  a  [        US   5      nM  SnM  US   S:X  ak  [        U5      S:  a  [        eX:w  a  US:w  a  U" XX45      v   U	nSn/ nUS   nS/S// SQ/ SQS.R                  US/5      nU Vs/ s H  oU-   PM	     nnGM\  GM_  US:X  a  GMh  [        U5      nUR                  U;  a.  US:w  a  U" XX45      v   SnSnSn/ n/ nU" US   X#U/5      v   GM  UR                  U5        GM     US:w  a  U" XX45      v   g
g
s  snf 7f)zParse Prometheus text format from a file descriptor.

This is a laxer parser than the main Go parser,
so successful parsing does not imply that the parsed
text meets the specification.

Yields Metric's.
rK   untypedrs   documentationtypsamplesr   c           	          US:X  aM  U R                  S5      (       a  U S S n O1/ nU H)  nUR                  [        US   S-   /USS  Q76 5        UnM+     [        XU5      nX6l        U$ )Ncounter_totalir   r
   )endswithrW   r   r   r|   )rs   rz   r{   r|   new_samplesr    metrics          r   build_metric0text_fd_to_metric_families.<locals>.build_metric  sx     )}}X&&CRy  A&&vadXo'F!"'FG)G ! S1 r   #N   r,   )rK   Fr
   TYPEHELP   )_count_sumrK   )r   r   _bucket)r~   gaugesummary	histogramr   )strr   r   r   r7   
startswithr]   r<   r;   r   r8   r&   getrv   rs   rW   )rw   rs   rz   r{   r|   allowed_namesr   linepartscandidate_namer_   nsamples                r   r   r     sg     DM
CGM3 s  tF| X^  zz|??3!$a0E5zA~%."N5zA~8v%%(f*<):58)D&&B>&R&R$$Qx6!!)rz*4MM)D#C G%3$4Mu:?$:58$DM$&MqV#u:>$$!)rz*4MM)D$&M GAh "t T5!>	!
 #cB4.  4A A=a= A# $$ RZ"4(F{{-/2:&tCII " ""6!9m6(KKv&} @ rz4== ' !Bs   F HHBH)F)r   )+ior   rerQ   typingr   r   r   r   r   r   r	   metrics_corer   r|   r   
validationr   r   r   r   r   r   r   compiler#   r(   r&   r)   rm   boolr/   rI   r9   r:   rU   r]   r;   re   rj   rf   rv   r   r-   r   r   <module>r      s    	  G G G    
C C&1A C  ,5: ,# , ::j) jj%<c <c <7 7 7!S !3 !4 !<= <=$ <=4S> <=~+S +t +c3h +6c  s 3 (c   ","
# 
%x0F*G 
2>_>6 _>hv.> _>r   