
    /j                        S SK Jr  S SKrS SKrS SKrS SKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr   \   " S	 S
5      r\R(                   V s1 s H  o R+                  S5      (       d  M  U iM     sn rSS jrg! \ a    \r NNf = fs  sn f )    )defaultdictN   )Gauge)Metric)
MmapedDict)Sample)floatToGoStringc                   \    \ rS rSrSrS
S jr\SS j5       r\S 5       r\S 5       r	S r
S	rg)MultiProcessCollector   z+Collector for files for multi-process mode.Nc                    Uc  S[         R                  ;   aS  S[         R                  ;  a?  [         R                  S   [         R                  S'   [        R                  " S[        5        [         R                  R                  S5      nU(       a$  [         R                  R                  U5      (       d  [        S5      eX l	        U(       a  UR                  U 5        g g )Nprometheus_multiproc_dirPROMETHEUS_MULTIPROC_DIRzpprometheus_multiproc_dir variable has been deprecated in favor of the upper case naming PROMETHEUS_MULTIPROC_DIRz:env PROMETHEUS_MULTIPROC_DIR is not set or not a directory)osenvironwarningswarnDeprecationWarninggetpathisdir
ValueError_pathregister)selfregistryr   s      O/app/agent/.venv/lib/python3.13/site-packages/prometheus_client/multiprocess.py__init__MultiProcessCollector.__init__   s    <)RZZ7<V^`^h^h<h9;D^9_

56  Q  Se  f::>>"<=D277==..YZZ
d#     c                 V    [         R                  U 5      n[         R                  X!5      $ )zMerge metrics from given mmap files.

By default, histograms are accumulated, as per prometheus wire format.
But if writing the merged data back to mmap files, use
accumulate=False to avoid compound accumulation.
)r   _read_metrics_accumulate_metrics)files
accumulatemetricss      r   mergeMultiProcessCollector.merge#   s%     (55e<$88MMr    c                 $  ^ 0 n0 mU4S jnU  H  n[         R                  R                  U5      R                  S5      nUS   n [        R
                  " U5      nU Hz  u  pxpU" U5      u  ppnUR                  U5      nUc  [        XU5      nUX'   US:X  a,  US   S S nUS   Ul
        UR                  XS	U44-   X5        Mh  UR                  XU5        M|     M     U$ ! [         a$    US:X  a  US   R                  S5      (       a   M  e f = f)
Nc                    > TR                  U 5      nU(       dE  [        R                  " U 5      u  p#pE[        [	        UR                  5       5      5      nX#XFU4=nTU '   U$ N)r   jsonloadstuplesorteditems)keyvalmetric_namenamelabels	help_text
labels_key	key_caches          r   
_parse_key7MultiProcessCollector._read_metrics.<locals>._parse_key3   sU    --$C7;zz#46"6&,,.#9:
(36y'YYinJr    _r   gauger   live   pid)r   r   basenamesplitr   read_all_values_from_fileFileNotFoundError
startswithr   r   _multiprocess_mode
add_sample)r$   r&   r9   fpartstypfile_valuesr1   value	timestampr;   r3   r4   r5   r7   r6   metricr@   r8   s                     @r   r"   #MultiProcessCollector._read_metrics.   s-   		 AGG$$Q'--c2E(C(BB1E -8(ICMc?@6y [1>#KC@F+1G('>(3B-C05aF-%%d5#,,H%[ %%d> -8 6 - % '>eAh&9&9&&A&A s   C!!)DDc                 0   U R                  5        GH  n[        S 5      n[        S 5      n[        S 5      nUR                   GH  nUu  pxppUR                  S:X  a"  UR                  S;   a  [        S U 5       5      nUR                  S:X  a  UR                  S;   a&  X8   R                  Xx4U	5      nX:  a
  XU   Xx4'   M  M  UR                  S;   a&  X8   R                  Xx4U	5      nX:  a
  XU   Xx4'   M  M  UR                  S	;   a  X8   Xx4==   U	-  ss'   M  UR                  S
;   a5  XH   U   n[        U
=(       d    S5      n
X:  a  XU   Xx4'   XU   U'   GM  GM  XU   Xx4'   GM*  UR                  S:X  aY  U H@  nUS   S:X  d  M  [        US   5      n[        S U 5       5      nUU   U==   U	-  ss'     GM~     X8   Xx4==   U	-  ss'   GM  X8   Xx4==   U	-  ss'   GM     UR                  S:X  a  UR                  5        H  u  nnSn[        UR                  5       5       HB  u  nn	UR                  S-   US[        U5      44-   4nU(       a  UU	-  nUX8   U'   M;  XU   U'   MD     U(       d  Mp  UX8   UR                  S-   U4'   M     / Ul        UR                  5        HQ  u  nnUR                  5        H7  u  u  npUR                  R                  [        U[        U5      U	5      5        M9     MS     GM     U R                  5       $ )Nc                       [        [        5      $ r+   r   float r    r   <lambda>;MultiProcessCollector._accumulate_metrics.<locals>.<lambda>[   	    +e*<r    c                       [        [        5      $ r+   rR   rT   r    r   rU   rV   \   s	    K4Fr    c                       [        [        5      $ r+   rR   rT   r    r   rU   rV   ]   rW   r    r<   )minliveminmaxlivemaxsumlivesum
mostrecentlivemostrecentc              3   :   #    U  H  oS    S:w  d  M  Uv   M     g7f)r   r@   NrT   .0ls     r   	<genexpr><MultiProcessCollector._accumulate_metrics.<locals>.<genexpr>j   s     "Ff!11f   	)rZ   r[   )r\   r]   )r^   r_   )r`   ra   r   	histogramler   c              3   :   #    U  H  oS    S:w  d  M  Uv   M     g7f)r   rj   NrT   rc   s     r   rf   rg      s     .Q&QaDDLqq&rh   g        _bucket_count)valuesr   samplestyperF   r.   
setdefaultrS   r0   r/   r4   r	   appendr   dict)r&   r%   rN   ro   sample_timestampsbucketssr4   r5   rL   rM   exemplarnative_histogram_valuecurrentcurrent_timestampre   bucket_value
without_lern   accbucket
sample_keyr;   samples_by_labelsname_s                            r   r#   )MultiProcessCollector._accumulate_metricsX   s-   nn&F!"<=G +,F G!"<=G^^STPe KK7*11 6  #"Ff"FFF;;')004FF")/"<"<d^U"S ?>CFOTN; +226HH")/"<"<d^U"S ?>CFOTN; +226HH75@7226VV,=,Ed,K)$)).q$9	,8>CFOTN;>Gf5d; 9 ;@7[[K/ $Q44<+01;L)..Q&.Q)QJ#J/=F=! $  75@7 OTN3u<3c $h {{k)&-mmoNFFC)/)?"KK)3"t_V-D&E%GG&
 &5LC:=GOJ7:?FOJ7 *@ "zLOx)?(HI '6   FN(/$$.?.E.E.G*OUFNN))&Ve*LM /H )8U 'Z ~~r    c                     [         R                   " [        R                  R                  U R                  S5      5      nU R                  USS9$ )Nz*.dbT)r%   )globr   r   joinr   r'   )r   r$   s     r   collectMultiProcessCollector.collect   s6    		"'',,tzz6:;zz%Dz11r    )r   r+   )T)__name__
__module____qualname____firstlineno____doc__r   staticmethodr'   r"   r#   r   __static_attributes__rT   r    r   r   r      sQ    5$ N N ' 'R N  N `2r    r   r=   c                 N   Uc=  [         R                  R                  S[         R                  R                  S5      5      n[         H[  n[        R                  " [         R
                  R                  USU SU  S35      5       H  n[         R                  " U5        M     M]     g)zBDo bookkeeping for when one process dies in a multi-process setup.Nr   r   gauge_r;   z.db)r   r   r   _LIVE_GAUGE_MULTIPROCESS_MODESr   r   r   remove)r@   r   moderH   s       r   mark_process_deadr      sq    |zz~~8"**..Ic:de.277<<tfAcU#.FGHAIIaL I /r    r+   )collectionsr   r   r,   r   r   r&   r   metrics_corer   	mmap_dictr   ro   r   utilsr	   rD   	NameErrorIOErrorr   _MULTIPROC_MODESrE   r   r   )ms   0r   <module>r      s    #   	     !  " 
X2 X2v .3-C-C!\-C||TZG[!-C!\ E    ~ "]s   A< B
-B
<BB