
    {tf
                     d   d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ dedee   fdZd	d
ddZdee   defdZ ej&                  d      Z ej&                  d      ZdedefdZdedefdZdededefdZdedeeef   fdZdede
eee   f   fdZdedefdZde	dee   fdZy)    N)DictIterableListMatchOptionalTextIOTuple   )Metric)Sampletextreturnc              #   \   K   t        t        j                  |             E d{    y7 w)z]Parse Prometheus text format from a unicode string.

    See text_fd_to_metric_families.
    N)text_fd_to_metric_familiesStringIO)r   s    b/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/prometheus_client/parser.pytext_string_to_metric_familiesr   	   s!     
 *(*;*;D*ABBBs   ",*,\
")z\\z\nz\"matchc                 2    t         | j                  d         S )Nr   )ESCAPE_SEQUENCESgroup)r   s    r   replace_escape_sequencer      s    EKKN++    z\\[\\n]z\\[\\n"]sc                 6    t         j                  t        |       S N)HELP_ESCAPING_REsubr   r   s    r   _replace_help_escapingr#       s     7;;r   c                 6    t         j                  t        |       S r   )ESCAPING_REr!   r   r"   s    r   _replace_escapingr&   $   s    ??2A66r   charposc                 n    d}||kD  r'| |dz
  |z
     dk(  r|dz  }||kD  r| |dz
  |z
     dk(  r|dz  dk(  S )Nr   r
   r       )r   r'   num_bslashess      r   _is_character_escapedr,   (   s_    L\!1|+,4 \!1|+,4!q  r   labels_stringc                 .   i }d| vr|S d}d| v rd}| }	 |r|j                  d      }|d | }||dz   d  j                         }|j                  d      dz   }||d  }d}|t        |      k  r3|j                  d|      }t        ||      sn|dz  }|t        |      k  r3|dz   }	|||	 }
|rt	        |
      }
|
||j                         <   ||	dz   d  }|j                  d      dz   }||d  j                         }|r|S # t        $ r t        d	| z        w xY w)
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   st   F
-H} J#?$**3/K#L[1J#K!O$45<<>J$**3/!3K%kl3L Ac,'' &&sA.,\1=Q	 c,'' AI$[;K/<)4F:##%& $IMN3J#-1J#JK0779J9 <  ?-=>>?s   B	C< AC< :C< <Dc                 :   | j                         } d}|| vrd}| j                  |      D cg c]#  }|j                         s|j                         % }}|st        |       d fS t        |d         }t	        |      dkD  rt        |d         dz  nd }||fS c c}w )N 	r   r
   i  )r2   splitr4   floatr3   )r   	separatorvaluevalues	timestamps        r   _parse_value_and_timestamprM   c   s    	
AI	)*);Mu{{}ekkmMFMQx~&)E.1&kAovbz"T)4I) Ns   BBc                 l   	 | j                  d      | j                  d      }}| d | j                         }| |dz   | }t        | |dz   d        \  }}t	        |t        |      ||      S # t        $ r@ d}|| vrd}| j                  |      }| d | }t        | |d        \  }}t	        |i ||      cY S w xY w)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/5d9q=>6JKydM%0%CC  	2	D I::i(IX5d89oFydBy11	2s   A'A* *AB32B3fdc           
   #   \  K   d}d}d}g }g }dt         dt         dt         dt        t           dt        f
d}| D ]W  }|j	                         }|j                  d	      r|j                  d
d      }t        |      dk  rF|d   dk(  rI|d   |k7  r!|dk7  r |||||       |d   }d}g }|d   g}t        |      dk(  rt        |d         }d}|d   dk(  rY|d   |k7  r|dk7  r |||||       |d   }d}g }|d   }dgdgg dg ddj                  |dg      }|D 	cg c]  }	||	z   	 }}	|dk(  rt        |      }
|
j                  |vr/|dk7  r |||||       d}d}d}g }g } ||
d   |||
g       G|j                  |
       Z |dk7  r |||||       y
y
c c}	w w)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           	          |dk(  rF| j                  d      r| d d } n/g }|D ](  }|j                  t        |d   dz   g|dd          |}* t        | ||      }||_        |S )Ncounter_totalir   r
   )endswithappendr   r   r^   )rT   r\   r]   r^   new_samplesr   metrics          r   build_metricz0text_fd_to_metric_families.<locals>.build_metric   s~     )}}X&CRy   *A&&vadXo'F!"'FG)G* mS1 r   #N   r)   r
   HELP   TYPE)_count_sumrZ   )rl   rm   _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^   7'zz|??3JJtQ'E5zA~Qx6!8t#rz*4WMM 8D#C G%*1XJMu:?$:58$DM$&MqV#8t#rz*4WMM 8D$&M GAh "t T5!>	!
 #cB4.  4A Aa A A RZ"4(F{{-/2:&t]CII " ""6!9mS6(KKv&o7'r rz4W== - !Bs   DF,!F'-A?F,) ior   retypingr   r   r   r   r   r   r	   metrics_corer   r^   r   rr   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: ,# , 2::j) bjj%<c <c <7 7 7!S !3 !4 !/? /?c3h /?f
# 
%x0F*G 
2 2 22X>6 X>hv.> X>r   