
    Mh                         d dl mZ d dlZd dlZd dlZd dlZddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ 	 e n# e$ r eZY nw xY w G d	 d
          Zd ej        D             ZddZdS )    )defaultdictN   )Gauge)Metric)
MmapedDict)Sample)floatToGoStringc                   d    e Zd ZdZd	dZed
d            Zed             Zed             Zd Z	dS )MultiProcessCollectorz+Collector for files for multi-process mode.Nc                    |tdt           j        v rGdt           j        vr9t           j        d         t           j        d<   t          j        dt                     t           j                            d          }|rt           j                            |          st          d          || _	        |r|
                    |            d S d S )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      ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prometheus_client/multiprocess.py__init__zMultiProcessCollector.__init__   s    <)RZ77<V^`^h<h<h9;D^9_
56  Q  Se  f  f  f:>>"<==D 	[27==.. 	[YZZZ
 	$d#####	$ 	$    Tc                 l    t                               |           }t                               ||          S )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   mergezMultiProcessCollector.merge#   s-     (55e<<$88*MMMr   c                 n   i }i fd}| D ]&}t           j                            |                              d          }|d         }	 t	          j        |          }n2# t          $ r% |dk    r|d                             d          rY  w xY w|D ]\  }}}	}
 ||          \  }}}}}|                    |          }|t          |||          }|||<   |dk    r<|d         d d         }|d         |_
        |                    ||d	|ffz   ||	           |                    |||           (|S )
Nc                                          |           }|sSt          j        |           \  }}}}t          t	          |                                                    }|||||fx}| <   |S N)r   jsonloadstuplesorteditems)keyvalmetric_namenamelabels	help_text
labels_key	key_caches          r   
_parse_keyz7MultiProcessCollector._read_metrics.<locals>._parse_key3   sn    --$$C Z7;z#4T69"6&,,..#9#9::
(3T6:y'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$   r6   fpartstypfile_valuesr.   value	timestampr7   r0   r1   r2   r4   r3   metricr<   r5   s                     @r   r    z#MultiProcessCollector._read_metrics.   s   		 	 	 	 	  	? 	?AG$$Q''--c22E(C(B1EE$   '>>eAh&9&9&&A&A> H -8 ? ?(UIqCM:c??@T6:y [11>#KC@@F+1GK('>>(3B3-C05aF-%%dJ5#,,H%QZ[[[[ %%dJ>>>>? s   A  +BBc           	         |                                  D ]O}t          t                    }t          t                    }t          d           }|j        }|j        D ]Q}|\  }}	}
}}}|j        dk    r|t          d |	D                       f}|j        dv r |||
          }|
|k     r|
||<   S|j        dv r |||
          }|
|k    r|
||<   t|j        dv r||xx         |
z  cc<   |j        dv r*||         }t          |pd          }||k     r
|
||<   |||<   |
|||	f<   |j        d	k    rk|	D ]T}|d         d
k    rFt          |d                   }t          d |	D                       }||         |xx         |
z  cc<    nU|||	fxx         |
z  cc<   ?|||	fxx         |
z  cc<   S|j        d	k    r|                                D ]p\  }	}d}t          |                                          D ]6\  }}
|j
        dz   |	d
t          |          ffz   f}|r||
z  }|||<   1|
||<   7|r|||j
        dz   |	f<   qd |                                D             |_        Q|                                  S )Nc                  *    t          t                    S r(   )r   float r   r   <lambda>z;MultiProcessCollector._accumulate_metrics.<locals>.<lambda>]   s    +e*<*< r   r8   c              3   2   K   | ]}|d          dk    |V  dS )r   r<   NrN   .0ls     r   	<genexpr>z<MultiProcessCollector._accumulate_metrics.<locals>.<genexpr>b   s+      2V2V!PU12V2Vr   )minlivemin)maxlivemax)sumlivesum)
mostrecentlivemostrecentr   	histogramler   c              3   2   K   | ]}|d          dk    |V  dS )r   r^   NrN   rQ   s     r   rT   z<MultiProcessCollector._accumulate_metrics.<locals>.<genexpr>}   s*      .Q.QQAaDDLLqLLLL.Q.Qr   g        _bucket_countc                 V    g | ]&\  \  }}}t          |t          |          |          'S rN   )r   dict)rR   name_r2   rH   s       r   
<listcomp>z=MultiProcessCollector._accumulate_metrics.<locals>.<listcomp>   s4    oooE[_eVV[fUDLL%@@ooor   )valuesr   rM   
setdefaultsamplestyper+   rB   r-   r,   r1   r	   )r$   r#   rJ   rh   sample_timestampsbucketssamples_setdefaultsr1   r2   rH   rI   exemplarnative_histogram_valuewithout_pid_keycurrentcurrent_timestamprS   bucket_value
without_lerf   accbucket
sample_keys                           r   r!   z)MultiProcessCollector._accumulate_metricsX   sc   nn&& ?	p ?	pF!%((G +E 2 2!"<"<==G!(!3^ &5 &5STPfeY:P;'))'+U2V2Vf2V2V2V-V-V&WO04FFF"4"4_e"L"L 7??7<GO426HHH"4"4_e"L"L 7??7<GO426HHH000E9000026VVV,=o,N)$)).q$9$9	,y887<GO4AJ-o>27v//[K// $ 	9 	9Q44<<+01;;L)..Q.Q&.Q.Q.Q)Q)QJ#J/===F===!E (  v///58/// T6N+++u4++++ {k))&-mmoo H HNFFC)/)?)? 	8 	8"K)3"t_V-D-D&E%GG&
 & 85LC25GJ//27GJ//! HDGx!7 @A po_f_l_l_n_noooFNN~~r   c                     t          j         t          j                            | j        d                    }|                     |d          S )Nz*.dbT)r#   )globr   r   joinr   r%   )r   r"   s     r   collectzMultiProcessCollector.collect   s9    	"',,tz6::;;zz%Dz111r   r(   )T)
__name__
__module____qualname____doc__r   staticmethodr%   r    r!   r{   rN   r   r   r   r      s        55$ $ $ $ N N N \N ' ' \'R A  A  \A F2 2 2 2 2r   r   c                 <    h | ]}|                     d           |S )r9   )rA   )rR   ms     r   	<setcomp>r      s*    !\!\!\q||TZG[G[!\!!\!\!\r   c                 8   |=t           j                            dt           j                            d                    }t          D ]R}t	          j        t           j                            |d| d|  d                    D ]}t          j        |           SdS )zBDo bookkeeping for when one process dies in a multi-process setup.Nr   r   gauge_r7   z.db)r   r   r   _LIVE_GAUGE_MULTIPROCESS_MODESry   r   rz   remove)r<   r   moderD   s       r   mark_process_deadr      s    |z~~8"*..Ic:d:dee.  27<<.Ft.F.Fc.F.F.FGGHH 	 	AIaLLLL	 r   r(   )collectionsr   ry   r)   r   r   r$   r   metrics_corer   	mmap_dictr   rh   r   utilsr	   r@   	NameErrorIOErrorr   _MULTIPROC_MODESr   r   rN   r   r   <module>r      s3   # # # # # #   				                    ! ! ! ! ! !       " " " " " "        K2 K2 K2 K2 K2 K2 K2 K2\ "]!\U-C!\!\!\      s   9 AA