bgZddlZddlmZddlmZGddeZedZdS) N)Lock)MetriccReZdZdZddZdZdZdZdZd Z d Z d Z d Z dd Z dS)CollectorRegistryzMetric collector registry. Collectors must have a no-argument method 'collect' that returns a list of Metric objects. The returned metrics should be consistent with the Prometheus exposition formats. FNci|_i|_||_t|_i|_||dSN)_collector_to_names_names_to_collectors_auto_describer_lock _target_infoset_target_info)self auto_describe target_infos k/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/prometheus_client/registry.py__init__zCollectorRegistry.__init__sG#% $&!+VV  [)))))c8|j5||}t|j|}|r"t d||D] }||j|< ||j|<ddddS#1swxYwYdS)z Add a collector to the registry.z/Duplicated timeseries in CollectorRegistry: {0}N)r _get_namessetr intersection ValueErrorformatr )r collectornames duplicatesnames rregisterzCollectorRegistry.registers Z 8 8OOI..ET677DDUKKJ % ELL"$$%%% < <2;)$//27D $Y / 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8sA:BBBc|j5|j|D] }|j|= |j|=ddddS#1swxYwYdS)z%Remove a collector from the registry.N)r r r )rrrs r unregisterzCollectorRegistry.unregister$s Z 4 40; 4 4-d33(3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s !6::cd} |j}n#t$rYnwxYw|s|jr|j}|sgSg}ddggdgdgddgd}|D]>}||jd gD]}||j|z ?|S) z/Get names of timeseries the collector produces.N_total_created)_sum_countr%)_bucketr'r(r%)r)_gsum_gcount_info)countersummary histogramgaugehistograminfor&)describeAttributeErrorr collectgettypeappendr)rr desc_funcresult type_suffixesmetricsuffixs rrzCollectorRegistry._get_names+s  !*II    D  *T0 *!)I I *-999BBB===I    ikk 4 4F'++FK">> 4 4 fkF23333 4 s  c#Kd}d}|j5tj|j}|jr|}dddn #1swxYwY|r|V|D]}|D]}|VdS)z3Yields metrics from the collectors in the registry.N)r copyr r_target_info_metricr4)r collectorstirr;s rr4zCollectorRegistry.collectGs  Z 0 04#;<z9CollectorRegistry.restricted_registry..ks"FFF! 1 rceZdZfdZdS)ACollectorRegistry.restricted_registry..RestrictedRegistrycSr rD)rmetricss rr4zICollectorRegistry.restricted_registry..RestrictedRegistry.collectrsrN)__name__ __module__ __qualname__r4)rKsrRestrictedRegistryrIqs.       rrO)rr rr7r?remover addr4samplesrr documentationr6object) rrr@rrr;rRmrOrKs ` @rrestricted_registryz%CollectorRegistry.restricted_registryUsE UU  Z D D%%$*;%t7799::: ]+++ D D4444NN4#W-W-W$%^___;?)-88" C)--mTBBB &D  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sAA++A/2A/cR|j5|jcdddS#1swxYwYdSr )r r)rs rget_target_infoz!CollectorRegistry.get_target_infost Z % %$ % % % % % % % % % % % % % % % % % %s   c`tddd}|d|jd|S)NtargetzTarget metadatar1rr)r add_sampler)rrUs rr?z%CollectorRegistry._target_info_metrics2 8. 7 7 ]D$5q999rc|i}|D]-}|jD]#}|j|kr|j|kr |jccS$.dS)z~Returns the sample value, or None if not found. This is inefficient, and intended only for use in unittests. N)r4rRrrYvalue)rrrYr;rFs rget_sample_valuez"CollectorRegistry.get_sample_valuesi >Fllnn # #F^ # #6T>>ah&&8&87NNNNN #tr)FNr )rLrMrN__doc__rr r"rr4rVrr[r?rarDrrrrs**** 8 8 84448    $ $ $D'''%%%      rrT)r)r> threadingr metrics_corerrTrREGISTRYrDrrrfs~  NNNNNNNNb  4 0 0 0r