
    ]Ci
                     v   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\\   4S jrS	S
SS.rS\\   S\4S jr\R&                  " S5      r\R&                  " S5      rS\S\4S jrS\S\4S jrS\S\S\4S jrS\S\\\4   4S jrS\S\
\\\   4   4S jrS\S\4S jrS\	S\\   4S jrg)    N)DictIterableListMatchOptionalTextIOTuple   )Metric)Sample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    R/home/james-whalen/.local/lib/python3.13/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_stringc                 Z   0 nSU ;  a  U$ SnSU ;   a  SnU n U(       a  UR                  S5      nUS U nX4S-   S  R                  5       nUR                  S5      S-   nX6S  nSnU[        U5      :  a9  UR                  SU5      n[        Xx5      (       d  OUS-  nU[        U5      :  a  M9  US-   n	X6U	 n
U(       a  [	        U
5      n
XUR                  5       '   X9S-   S  nUR                  S5      S-   nX;S  R                  5       nU(       a  M  U$ ! [         a    [        S	U -  5      ef = f)
N=Fr   Tr
   r   r   ,zInvalid labels: %s)indexlstriplenr,   r&   stripfind
ValueError)r-   labelsescaping
sub_labelsvalue_start
label_namequote_startvalue_substri	quote_endlabel_value
next_commas               r   _parse_labelsrB   0   sk   F
-H} J#?$**3/K#L[1J#!O$45<<>J$**3/!3K%l3L Ac,'' &&sA.,\==Q	 c,'' AI$;K/<)4:##%& $MN3J#-1J#K0779J9 j<  ?-=>>?s   BD ,A!D D D*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
   i  )r2   splitr4   floatr3   )r   	separatorvaluevalues	timestamps        r   _parse_value_and_timestamprM   c   s    	
AI	)*);M);{{}mekkm);FMQx~&)E.1&kAovbz"T)4I Ns   B&	B&c                 `    U R                  S5      U R                  S5      p!U S U R                  5       nXS-   U n[        XS-   S  5      u  pV[	        U[        U5      XV5      $ ! [         a>    SnXp;  a  SnU R                  U5      nU S U n[        XS  5      u  pV[	        U0 XV5      s $ f = f)N{}r
   rD   rE   )r1   rindexr4   rM   r   rB   r6   )	r   label_start	label_endnamelabelrJ   rL   rI   name_ends	            r   _parse_samplerW   p   s    2!%C$++c2BYL[!'')1_Y/5dq=>6JKdM%0%CC  	2	 I::i(IX5d9oFdB11	2s   A"A% %AB-,B-fdc           
   #     #    SnSnSn/ n/ nS[         S[         S[         S[        [           S[        4
S jnU  GHn  nUR	                  5       nUR                  S	5      (       a  UR                  S
S5      n[        U5      S:  a  MM  US   S:X  aL  US   U:w  a   US:w  a  U" XX45      v   US   nSn/ nUS   /n[        U5      S:X  a  [        US   5      nM  SnM  US   S:X  a]  US   U:w  a  US:w  a  U" XX45      v   US   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M  [        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Mq     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.
 untypedrT   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
   )endswithappendr   r   r^   )rT   r\   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)   r
   HELP   TYPE)_count_sumrZ   )rm   rn   _bucket)r`   gaugesummary	histogramr   )strr   r   r   r4   
startswithrG   r3   r#   getrW   rT   rc   )rX   rT   r\   r]   r^   allowed_namesrf   linepartsnsamples              r   r   r      s     DM
CGM3 s  tF| X^  zz|??3JJtQ'E5zA~Qx6!8t#rz*4MM 8D#C G%*1XJMu:?$:58$DM$&MqV#8t#rz*4MM 8D$&M GAh "t T5!>	!
 #cB4.  4A A=a= A RZ"4(F{{-/2:&tCII " ""6!9m6(KKv&o r rz4== - !Bs   D,G.F?<BG) ior   retypingr   r   r   r   r   r   r	   metrics_corer   r^   r   rs   r   r   r   compiler    r%   r#   r&   intboolr,   rB   rH   rM   rW   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 !/? /?c3h /?f
# 
%x0F*G 
2 2 22X>6 X>hv.> X>r   