
    <#(i01              	          d dl Z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dlmZmZ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'dededeeef         fdZ dededeeeef         fdZ!d(dede	e         dedefdZ"dede	e         defdZ#d(d Z$d! Z%dedee&e	e&         f         fd"Z'd# Z(d$ Z)d%e
dee         fd&Z*dS ))    N)DictIterableListMatchOptionalTextIOTuple   )Metric)Sample)_is_valid_legacy_metric_name_validate_labelname_validate_metric_nametextreturnc              #   X   K   t          t          j        |                     E d{V  dS )z]Parse Prometheus text format from a unicode string.

    See text_fd_to_metric_families.
    N)text_fd_to_metric_familiesStringIO)r   s    X/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/prometheus_client/parser.pytext_string_to_metric_familiesr      s9      
 *(*;D*A*ABBBBBBBBBBB    \
")z\\z\nz\"matchc                 B    t           |                     d                   S )Nr   )ESCAPE_SEQUENCESgroup)r   s    r   replace_escape_sequencer      s    EKKNN++r   z\\[\\n]z\\[\\n"]sc                 B    t                               t          |           S N)HELP_ESCAPING_REsubr   r    s    r   _replace_help_escapingr&   $   s     7;;;r   c                 B    t                               t          |           S r"   )ESCAPING_REr$   r   r%   s    r   _replace_escapingr)   (   s    ??2A666r   charposc                     d}||k    r/| |dz
  |z
           dk    r|dz  }||k    r| |dz
  |z
           dk    |dz  dk    S )Nr   r
   r       )r    r*   num_bslashess      r   _is_character_escapedr/   ,   sk    L\!!1|+,44 \!!1|+,44!q  r   Flabels_stringopenmetricsc                 X   i }|                                  }|r |r|d         dk    rt          d| z             	 |rMt          ||          \  }}}|s|rt          d| z             .t          |          \  }}|st	          |          st          d          |r|d         dk    rt          d}|t          |          k     rG|                    d|          }t          |d |         |          sn|dz  }|t          |          k     G|dz   }	|	t          |          k    rt          d| z             t          |          \  }
}|d	k    rt          |           nt          |           ||v rt          d
| z             |
||<   |M|S # t          $ r t          d| z             w xY w)Nr   ,zleading comma: zempty term in line: zunquoted UTF-8 metric namer   r
   zunexpected text after quote: __name__z$invalid line, duplicate label name: zInvalid labels: )
strip
ValueError
_next_term_unquote_unescaper   lenindexr/   r   r   )r0   r1   labels
sub_labels	name_term
value_term
label_namequoted_namei	quote_endlabel_value_s               r   parse_labelsrE   4   s+   F $$&&J <z <jms&:&:*]:;;;,= '	- 1;:{0S0S-Iz:  M$%;m%KLLL&7	&B&B#J ?'CJ'O'O ? !=>>>  !A#!5!5   Ac*oo%%$$S!,,,Z^Q?? Q	 c*oo%% AIC
OO++ !@=!PQQQ.z::NKZ''%j1111#J///V## !G-!WXXX!,F:O  '	-P  = = =+m;<<<=s   EF F)c                    | d         dk    r)| dd         } | sdS | d         dk    rt          d          t          | d          }|dk    r4| |         dk    r(| d|         }| |dz   d         } t          | d	          }nd
}|dk    rt          |           }| d|         }|s|rt          d|          | |d         }||                                |                                fS )a  Extract the next comma-separated label term from the text. The results
    are stripped terms for the label name, label value, and then the remainder
    of the string including the final , or }.
    
    Raises ValueError if the term is empty and we're in openmetrics mode.
    r   r3   r
   N) rG   rG   zmultiple commasz=,}=z,}r4   zempty term:)r6   _next_unquoted_charr9   r5   )r   r1   splitpos	labelnametermrests         r   r7   r7   j   s    Aw#~~ABBx 	:7c>>.///"4//H1}}h3..(O	HqLMM"&tT22	2~~t99		?D .K .---		?DdjjllDJJLL00r   chsstartidxc                     d}|t           j        }t          | |d                   D ].\  }}|dk    rt          | ||z             s| }|s||v r||z   c S /dS )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.
    FNr   rI   )string
whitespace	enumerater/   )r   rO   rP   	in_quotesrA   cs         r   rJ   rJ      s     I
{$xyy/** $ $1881$1EE8%I 	$Cxx!|###2r   c                     t          |           dz
  }d}|t          j        }|dk    r8| |         dk    rt          | |          s| }|s| |         |v r|S |dz  }|dk    8dS )zGReturn position of last unquoted character in list, or -1 if not found.r
   FNr   r   rI   )r9   rR   rS   r/   )r   rO   rA   rU   s       r   _last_unquoted_charrX      s    D		AAI
{
a%%7c>>"7a"@"@>%I 	Aw#~~	Q a%% 2r   c                 x   dg}d}|t          |           k     rt          | ||          }|dk    r| |d         |d<   t          |           }G||k    r|dz  }S|dk    r!t          |          |k    r| |d         |d<   n:| ||         |d<   |dz   }|                    d           |t          |           k     |S )zfSplits on split_ch similarly to strings.split, skipping separators if
    they are inside quotes.
    rG   r   rI   Nr
   )r9   rJ   append)r   	separatormaxsplittokensx	split_poss         r   _split_quotedr`      s    
 TF	A
c$ii--'i;;	??abbF2JD		A >>FAa<<CKK(22abbF2J!I+&r
Mb# c$ii--$ Mr   c                     | s| dfS d}|                                  } | d         dk    r:t          |           dk    s| d         dk    rt          d          | dd         } d}d| v rt          |           } | |fS )	z.Returns the string, and true if it was quoted.Fr   r   r
   rI   zmissing close quoteTr   )r5   r9   r6   r)   )r   quoteds     r   r8   r8      s     U{F::<<DAw#~~t99>>T"X__2333AbDzt|| &&<r   c                 *   |                                  } d}|| vrd}d |                     |          D             }|st          |           d fS t          |d                   }t	          |          dk    rt          |d                   dz  nd }||fS )N 	c                 ^    g | ]*}|                                 |                                 +S r-   )r5   ).0values     r   
<listcomp>z._parse_value_and_timestamp.<locals>.<listcomp>   s-    MMMu{{}}MekkmmMMMr   r   r
   rI   i  )lstripsplitfloat_parse_valuer9   )r    r[   valuesrh   	timestamps        r   _parse_value_and_timestamprp      s    	

AI	MM););MMMF Qxx~##E58[[1__fRj))D00$I)r   c                     d                     |           } | |                                 k    sd| v rt          d|           	 t          |           S # t          $ r t	          |           cY S w xY w)NrG   rD   zInvalid value: )joinr5   r6   intrl   )rh   s    r   rm   rm      s    GGENNE45445555zz   U||s   A A0/A0c                    d}t          | d          }|dk    s|| d |         v r~t          | d          }| d |                                         }t          |          st          d| z             | |dz   d          }t	          |          \  }}t          |i ||          S | d |                                         }t          | |d          d          |z   }t          | |dz   |         d          }	|sd	|	vrt          |	d	         }|	d	= nd	|	v rt          d
          | |dz   d          }t	          |          \  }}t          ||	||          S )Nz # {rI   z 	zinvalid metric name:r
   }Fr4   z$metric name specified more than once)rJ   r5   r   r6   rp   r   rE   )
r   r[   label_startname_endnameremaining_textrh   ro   	label_endr;   s
             r   _parse_sampler|      s   I%dC00KbIl{l);;;&tU33IXI$$&&+D11 	<3d:;;;hlmm,5nEEydBy111##%%D#D$6<<{JI${Qy895AAF AV##j!:	v		?@@@)a-..)N1.AAE9$y111r   fdc           
   #     K   dd}d}g }g }dt           dt           dt           dt          t                   dt          f
d}| D ]}|                                }|                    d	          rgt          |d
d          }t          |          dk     rRd\  }}	t          |          dk    rI|d         dk    r|d         dk    rt          |d                   \  }}	|	st          |          st          |d         dk    rS|k    rdk    r ||||          V  |d}g }|g}t          |          dk    rt          |d                   }d}|d         dk    rtt          |          dk     rt          |k    rdk    r ||||          V  |d}g }|d         }dgdgg dg dd                    |dg          }fd|D             }|dk    rt          |          }
|
j        |vr9dk    r ||||          V  dd}d}g }g } ||
d         |||
g          V  |                    |
           dk    r ||||          V  d
S d
S )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.
    rG   untypedry   documentationtypsamplesr   c           	          |dk    rZ|                      d          r| d d         } n:g }|D ]5}|                    t          |d         dz   g|dd          R             |}6t          | ||          }||_        |S )Ncounter_totalir   r
   )endswithrZ   r   r   r   )ry   r   r   r   new_samplesr    metrics          r   build_metricz0text_fd_to_metric_families.<locals>.build_metric"  s     )}}X&& *CRCy   * *A&&vadXo'F!""'F'F'FGGG)GGmS11 r   #N   r,   )rG   Fr
   TYPEHELP   )_count_sumrG   )r   r   _bucket)r   gaugesummary	histogramc                     g | ]}|z   S r-   r-   )rg   nry   s     r   ri   z.text_fd_to_metric_families.<locals>.<listcomp>^  s     A A Aa A A Ar   r   )strr   r   r   r5   
startswithr`   r9   r8   r   r6   r&   getr|   ry   rZ   )r}   r   r   r   allowed_namesr   linepartscandidate_namerb   samplery   s              @r   r   r     s4      DM
CGM3 s  tF| X^      >' >'zz||??3 ;	'!$a00E5zzA~~%."NF5zzA~~8v%%%(f*<*<):58)D)D& %&B>&R&R %$$Qx6!!!T))rzz*l4WMMMMM)D#C G%3$4Mu::??$:58$D$DMM$&MMqV##u::>>$$!T))rzz*l4WMMMMM)D$&M GAh "t T555!>!>!>	! !
 #cB4..  !B A A A= A A ARZZ"4((F{-//2::&,t]CIIIII " ""l6!9mS6(KKKKKKv&&&&rzzl4W======= zr   )F)r   )+ior   rerR   typingr   r   r   r   r   r   r	   metrics_corer   r   r   
validationr   r   r   r   r   r   r   compiler#   r(   r&   r)   rs   boolr/   rE   r7   rJ   rX   r`   r8   rl   rp   rm   r|   r   r-   r   r   <module>r      s(       				  G G G G G G G G G G G G G G G G G G                           
C C&1A C C C C   ,5: ,# , , , , 2:j)) bj%%<c <c < < < <7 7 7 7 7 7!S !3 !4 ! ! ! !3= 3= 3=$ 3=4S> 3= 3= 3= 3=l1S 1t 1c3m0D 1 1 1 1D c   S    &c  #    "   8  "
# 
%x0F*G 
 
 
 
  2 2 2>_>6 _>hv.> _> _> _> _> _> _>r   