bgTddlmZddlZddlZddlmZmZddlmZm Z m Z ddl m Z  ddl Z n#e$rddlZ YnwxYwdZeded Dd ed d Dzed gzZdZddddZdZejdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%dS)!)unicode_literalsN)MetricMETRIC_LABEL_NAME_RE)ExemplarSample Timestamp)floatToGoStringc#ZKttj|D]}|VdS)z^Parse Openmetrics text format from a unicode string. See text_fd_to_metric_families. N)text_fd_to_metric_familiesStringIO)text metric_familys u/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/prometheus_client/openmetrics/parser.pytext_string_to_metric_familiesrsC 4H4Ed4K4KLL cg|]}|dz S)g@@.0is r rs;;;!f*;;;ri'cg|]}d|zS)g$@rrs rrrs>_>_>_1tQw>_>_>_ri infc\t|}|tvrdS|t|kS)NF)float_CANONICAL_NUMBERSr )sfs r_isUncanonicalNumberr!s1 aA"""u "" ""r\ ")z\\z\nz\"cBt|dS)Nr)ESCAPE_SEQUENCESgroup)matchs r_replace_escape_sequencer),s EKKNN ++rz\\[\\n"]cBtt|S)N) ESCAPING_REsubr))rs r_replace_escapingr-3s ??3Q 7 77rcg}d}|D]}|ro|dkr|dnP|dkr|dn4|dkr|dn|d|zd}s|dkrd}||||r|dd|S)NFr"r$nr#T)appendjoin)rresultslashchars r_unescape_helpr67s F E$$  $t|| d#### c"""" d#### dTk***EEt|| d####  d 776??rcd|}||ksd|vr"td| t |S#t$rt |cYSwxYw)Nr0_zInvalid value: {0!r})r2strip ValueErrorformatintr)values r _parse_valuer>Rs GGENNE  /66u==>>>5zz U||sA$$B?Bc d|}|sdS||ksd|vr"td| t t |dS#t$r |dd}t t |dt |dddddcYS#t$r`t|}tj |stj |r"td||cYcYSwxYwwxYw) Nr0r8zInvalid timestamp: {0!r}r. 0) r2r9r:r;r r<splitljustrmathisnanisinf) timestamppartstss r_parse_timestamprL\sa ""I tIOO%%%% )9)93::9EEFFF Y+++     OOC++ESq]]Ca! 0B0B1c0J0J,K,KLL L L L   y!!Bz"~~ OB O !;!B!B9!M!MNNNIIIII   s2A66 EA'C+(E+A%EEEEcd}||kr/||dz |z dkr|dz }||kr||dz |z dk|dzdkS)NrrAr"rr)rcharpos num_bslashess r_is_character_escapedrPrskL \ ! ! Wq[< ' (D 0 0  \ ! ! Wq[< ' (D 0 0 ! q  rcd}g}g}i}d}|D]}|dkr#|dkrd}nd}||n|dkr!|dkrd}n||n}|dkr|dkrd }nmtd |z|d kr|d krd }nK|dkrpd |}tj|std|z||vrtd|zd |||<g}g}d}n||n|dkr$|dkrd}n|dkrd}ntd |z|d krod }|d kr|d nq|dkr|dnU|dkr|dn9|d |zn |dkr|dkrntd |z|dz }||fS)Nstartoflabelnamer} endoflabels labelname=labelvaluequoter$ labelvalueInvalid line: r"labelvalueslashr0zInvalid line, bad label name: z$Invalid line, duplicate label name: endoflabelvalue,r/r# rA)r1r:r2rr()rstaterUrXlabels labels_lenr5lns r _parse_labels_with_state_machinerbzs EIJ FJ66 & & &s{{%#  &&&& k ! !s{{)  &&&& ' ' 's{{$ !1D!8999 l " "t||)WWY''+1"55N$%E%LMMM<<$%Kd%RSSSWWZ00r   )!!$'''' ' ' 's{{#% !1D!8999 ' ' ' Et||!!$''''!!$''''!!#&&&&!!$+.... m # #s{{ !1D!8999a : rc^i}|r d|vrt|} |rw|d}|d|}||dzd}|r |ddkrt|dd}|r |ddkrt|r |ddkrtd}|t|krG|d|}t|d||sn|dz }|t|kG|dz}|d|}d|vrt |}t j|std|z||vrtd |z|||<||dzd}|drd} nd} || d}|r | dkrt|w|S#t$rtd |zwxYw) NrVrArr$r\r"zinvalid line, bad label name: z$invalid line, duplicate label name: zInvalid labels: )r:indexlenrPr-rr( startswith) rr_ sub_labels value_start label_name value_substrr quote_end label_value next_commas r _parse_labelsros[ F 4J841 !$**3//K#L[L1J#K!O$4$45J !A#!5!5  &abb>L !A#!5!5   !<#3s#:#:  Ac,'''' &&sA..,\"1"-=qAAQ c,''''AI$Qy[1K{""/ << '-j99 J !AD!HIIIV## !G$!NOOO!,F: $IMNN3J$$S))   #JKK0J !jAoo  c1 !f 444+d23334s E;FF,c<d}|d}|dks ||d|vrR|d}|d|}||dzd}t|\}}}t|i|||S|d|}||vr2|d} ||dz| } t | } n/t ||dzd\} } | t|z} || dzd}t|\}}}t|| |||S)Nz # {rdr]rArSr)findre_parse_remaining_textrrindexrorbrf) r separator label_startname_endnameremaining_textr=rIexemplar label_endlabelr_r`s r _parse_sampler}sJI))C..KbIl{l);;;::c??IXIhlmm,%:>%J%J"y(dBy(;;;   DKK$$ [1_Y./u%%>d;QR?CSCS>TUU T* )a-..)N!6~!F!FE9h $y( ; ;;rc>|dd}t|d}t|dkr|ddfSg}g}g}d}d}|d}t|}|D]f} |dkr*| dkr|sd}| dkrd}|| 3|dkr| dkrd}Bt d|z|dkr| dkrd }ct d|z|d kr_| d krG|d |d } } t|| dz| }d }t d|z|d kr | d krd }|d kr| dkrd}t d|z|dkr;| dkr|st d|z| dkrd}4|| K|dkr|| h|dkr|st d|z|dkr|st d|z|dvrt d|zt|} d} |ntd| D}|dkrt d|zt|t|t|} || | fS)Nr]rArrI# exemplarspace exemplarhashrYexemplarstartoflabelsrqrSexemplarparsedlabelsexemplarvaluespace exemplarvalueexemplartimestamp)rrrrcRg|]$\}}t|t|z%Sr)rf)rkvs rrz)_parse_remaining_text..is,SSS41as1vvASSSr@zExmplar labels are too long: ) rDr>rfiterr1r:rertrorLsumitemsr)r split_textvalrIexemplar_valueexemplar_timestampexemplar_labelsr^itr5rvr{rKrzexemplar_lengths rrsrssTC##J z!} % %C :!D$INO E a=D dB),), K  s{{9{'&  &&&& n $ $s{{' !1D!8999 o % %s{{/ !1D!8999 - - -s{{)-C$++c:J:JY "/[1_Y5N0O"P"P. !1D!8999 , , ,s{{, * * *s{{' !1D!8999 o % %s{{>{ !1D!8999+%%d++++ ) ) )  % %d + + + I)D0111 ###,>#)D0111 bbb)D0111 ) $ $BH"SS?;P;P;R;RSSSTT R  .do_checkss U6]] " "4t;<< <  %@4GHH H  PG PG$NOO O# ^(9 ^UX\\]] ] ^ ^ ^ ^rrFrrrTzBuckets out of order: zBucket values out of order: )_count_gcount)_sum)_gsum)rxrfrrIrr_r:r=)samplesrxr'rIrrsuffixgbrrrrrr=s ` @@@@@@r_check_histogramrs EI^^^^^^^^^^^%%D # a{ 3 3 :: 11  EF#( G % EK Y  ahtn%%A1uu'+$!a6kk !9D!@AAAw !?$!FGGGFGEE , , ,GEE x  GG y QWq[[ $   rc # Kdg}d}tfd}|D] }|ddkr |dd}|rtd|z|dkrd}6|d r|d d }t |d krtd |z|dkr|rtd|z|dkrL|||| |V|dd} d}d}d} t} d} t} g}|dg}|ddkre|td|zt |d krt |d }It |d krtd |zp|ddkrj|td|z|d }|dkrtd|zddggdgdgddgd|dg}fd|D}|dd kr| td!|z|d } td |zt|}|j|vrJ|||| |V|jd}d} d"}g}d} d} t} t} |jg}|d#kr|j vrtd$|z|d%vrYd&z|jkrK|j d'd(d(kst|j d'rtd)|z|d*krm|jkrbd+t|j d,dcxkrdkrnnt|j d,rtd-|zttt||}| || kr|| vrtd.|z| M|| krG|jdu| dukrtd/|z| #| |jkr|d0krtd1|znt} |jtt|j f}|j| ks|| vr||| ||} |j} | ||d#kr|jd2vrtd3|z|d0kr|jdkrtd4|z|d*kr(|jkr|jd+krtd5|z|jt dd6vr+t)j|jrtd7|z|jt dd8vr|jd+krtd9|z|jrN|d%vr|jd&s0|d:vr|jdstd;|z |||| |V|std<dS)=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. NFcX|vrtd|z||d}|d}|d}|r*|d|zstd|z|r|dvrtd|z|dvrt||t ||||}||_|S) NzDuplicate metric: unknownr0r8z!Unit does not match metric name: )rrz(Units not allowed for this metric type: r)r:addendswithrrr)rx documentationrunitrmetric seen_metricss r build_metricz0text_fd_to_metric_families..build_metrics <  1D899 9 ;C  M <D  I cDj11 I@4GHH H  PC///G$NOO O 1 1 1 Wd + + +mS$77  rrdr#zReceived line after # EOF: z# EOFTrr]rYrz!Received metadata after samples: rAHELPzMore than one HELP for metric: TYPEzMore than one TYPE for metric: untypedzInvalid TYPE for metric: _total_created)rrr0r)rrrr)rrr_info)counterrrrrr0cg|]}|zSrr)rr/rxs rrz.text_fd_to_metric_families..s A A Aa A A ArUNITzMore than one UNIT for metric: rrzStateset missing label: rrrNaNzInvalid le label: rrrzInvalid quantile label: zInvalid metric grouping: z*Mix of timestamp presence within a group: rz*Timestamps went backwards within a group: )rrAz4Stateset samples can only have values zero and one: z&Info samples can only have value one: z$Quantile values cannot be negative: )rrrrrrz$Counter-like samples cannot be NaN: )rrrrrz)Counter-like samples cannot be negative: )rzTInvalid line only histogram/gaugehistogram buckets and counters can have exemplars: zMissing # EOF at end)setr:rgrDrfr6getr}rxr_r!rtuplesortedrrrIr1rr=rFrGrzr)fd allowed_nameseofrlinerJrrrrr' seen_groupsgroup_timestampgroup_timestamp_samplesrr series_idrxrs @@rr r s DM C55L*x@x@ 8t  9D  C:TABB B 7??CC __S ! !o @JJsA&&E5zzA~~ !1D!8999Qx4G !Dt!KLLLQx4#&,t]CwOOOOOQx $ !ee "&*-%%'!&q Qx6!! ,$%F%MNNNu::??$258$<$%> !;d!BCCC6664);Kv{;Z;Z**4775@@0t1DEEA !5!<===y  TV[%8%85):)::r)J)J#K#KPPPPqPPPPP1&- 2KLLQ !;d!BCCCf.vtSAAGGIIJJKKA Q%ZZA4D4D !rLrPrbror}rsrrr rrrrs7(''''' 777777771111111111######OOOOS;;eeEll;;;>_>_PUPUVY[]P^P^>_>_>__chchincocobppqq###   ,,,bj%% 8886,!!!???DA4A4A4H<<<>SSSl&///db1b1b1b1b1s - 99