
    h4                         S SK JrJr  S SKrS SKJr  S SKJrJrJ	r	J
r
  SSKJr   " S S\5      r " S	 S
\5      r " S S\5      r " S S5      r\" SS9rg)    )ABCabstractmethodN)Lock)DictIterableListOptional   )Metricc                   2    \ rS rSr\S\\   4S j5       rSrg)	Collector
   returnc                     g N selfs    mC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\prometheus_client/registry.pycollectCollector.collect   s        r   N)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__r   r   r   r   r   
   s     &)  r   r   c                   (    \ rS rSrS\\   4S jrSrg)_EmptyCollector   r   c                     / $ r   r   r   s    r   r   _EmptyCollector.collect   s    	r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r      s    &) r   r   c                   
   \ rS rSrSrSS\S\\\\4      4S jjr	S\
SS4S	 jrS\
SS4S
 jrS rS\\   4S jrS\\   SS4S jrS\\\\4      SS4S jrS\\\\4      4S jrS rSS\S\\\\4      S\\   4S jjrSrg)CollectorRegistry   zMetric 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.
Nauto_describetarget_infoc                 z    0 U l         0 U l        Xl        [        5       U l        0 U l        U R                  U5        g r   )_collector_to_names_names_to_collectors_auto_describer   _lock_target_infoset_target_info)r   r&   r'   s      r   __init__CollectorRegistry.__init__   s7    ?A :<!+V
68[)r   	collectorr   c                 F   U R                      U R                  U5      n[        U R                  5      R	                  U5      nU(       a  [        SR                  U5      5      eU H  nXR                  U'   M     X R                  U'   SSS5        g! , (       d  f       g= f)z Add a collector to the registry.z.Duplicated timeseries in CollectorRegistry: {}N)r,   
_get_namessetr*   intersection
ValueErrorformatr)   )r   r1   names
duplicatesnames        r   registerCollectorRegistry.register%   s    ZZOOI.ET667DDUKJ DKK"$% % 2;))$/ 27$$Y/ ZZs   A<B
B c                     U R                      U R                  U    H  nU R                  U	 M     U R                  U	 SSS5        g! , (       d  f       g= f)z%Remove a collector from the registry.N)r,   r)   r*   )r   r1   r:   s      r   
unregisterCollectorRegistry.unregister2   sD    ZZ00;--d3 <((3 ZZs   1A
Ac                    Sn UR                   nU(       d  U R                  (       a  UR                  nU(       d  / $ / nSS// SQ/ SQ/ SQS/S.nU" 5        H_  nUR	                  UR
                  5        UR                  UR                  / 5       H!  nUR	                  UR
                  U-   5        M#     Ma     U$ ! [         a     Nf = f)	z@Get names of timeseries the collector produces and clashes with.N_total_created)_sum_countrB   )_bucketrC   rD   rB   )rE   _gsum_gcount_info)countersummary	histogramgaugehistograminfo)describeAttributeErrorr+   r   appendr:   gettype)r   r1   	desc_funcresulttype_suffixesmetricsuffixs          r   r3   CollectorRegistry._get_names9   s    		!**I T00!))II *-5B=I
  kFMM&++&'++FKK<fkkF23 = " +  		s   B< <
C	C	c              #   >  #    SnSnU R                      [        R                  " U R                  5      nU R                  (       a  U R	                  5       nSSS5        U(       a  Uv   U H  nUR                  5        Sh  vN   M     g! , (       d  f       N;= f N7f)z3Yields metrics from the collectors in the registry.N)r,   copyr)   r-   _target_info_metricr   )r   
collectorstir1   s       r   r   CollectorRegistry.collectV   sy     
ZZ4#;#;<J  --/  H#I ((*** $ Z +s)   BAB
+B B	B

BBr8   RestrictedRegistryc                 .    [        U5      n[        X5      $ )zReturns object that only collects some metrics.

Returns an object which upon collect() will return
only samples with the given names.

Intended usage is:
    generate_latest(REGISTRY.restricted_registry(['a_timeseries']))

Experimental.)r4   r_   )r   r8   s     r   restricted_registry%CollectorRegistry.restricted_registryc   s     E
!%..r   labelsc                 L   U R                      U(       aD  U R                  (       d  SU R                  ;   a  [        S5      e[	        5       U R                  S'   O-U R                  (       a  U R                  R                  SS 5        Xl        S S S 5        g ! , (       d  f       g = f)Nr'   z7CollectorRegistry already contains a target_info metric)r,   r-   r*   r6   r   pop)r   rc   s     r   r.   !CollectorRegistry.set_target_infop   sp    ZZ((]d>W>W-W$%^__;J;L))-8""))--mTB & ZZs   A?B
B#c                 h    U R                      U R                  sS S S 5        $ ! , (       d  f       g = fr   )r,   r-   r   s    r   get_target_info!CollectorRegistry.get_target_infoz   s    ZZ$$ ZZs   #
1c                 Z    [        SSS5      nUR                  SU R                  S5        U$ )NtargetzTarget metadatarM   r'   r
   )r   
add_sampler-   )r   ms     r   r[   %CollectorRegistry._target_info_metric~   s,    8.7	]D$5$5q9r   r:   c                     Uc  0 nU R                  5        HH  nUR                   H5  nUR                  U:X  d  M  UR                  U:X  d  M'  UR                  s  s  $    MJ     g)znReturns the sample value, or None if not found.

This is inefficient, and intended only for use in unittests.
N)r   samplesr:   rc   value)r   r:   rc   rV   ss        r   get_sample_value"CollectorRegistry.get_sample_value   sP    
 >FllnF^^66T>ahh&&877N $ % r   )r+   r)   r,   r*   r-   )FNr   )r   r   r   r   __doc__boolr	   r   strr/   r   r;   r>   r3   r   r   r   ra   r.   rh   r[   floatrs   r   r   r   r   r$   r$      s    *d *$sTWx.AY *8) 8 84I 4$ 4:+&) +/# /;O /'htCH~&> '4 '%$sCx.!9 %
S (4S>2J V^_dVe  r   r$   c                   @    \ rS rSrS\\   S\4S jrS\\   4S jr	Sr
g)	r_      r8   registryc                 0    [        U5      U l        X l        g r   )r4   	_name_set	_registry)r   r8   r{   s      r   r/   RestrictedRegistry.__init__   s    U!r   r   c              #   p  #    [        5       nS nU R                  R                     SU R                  ;   a5  U R                  R                  (       a  U R                  R                  5       nU R                   HN  nUS:w  d  M  X0R                  R                  ;   d  M&  UR                  U R                  R                  U   5        MP     S S S 5        U(       a  Uv   U HB  nUR                  5        H+  nUR                  U R                  5      nU(       d  M'  Uv   M-     MD     g ! , (       d  f       Nb= f7f)Nr'   )
r4   r~   r,   r}   r-   r[   r*   addr   _restricted_metric)r   r\   target_info_metricr:   r1   rV   rm   s          r   r   RestrictedRegistry.collect   s     U
!^^!!.4>>3N3N%)^^%G%G%I"=(T^^5X5X-XNN4>>#F#Ft#LM ' " $$#I#++---dnn=1G . $ "!s0   #D6AD%D%,D%	AD6D6%
D3/D6)r}   r~   N)r   r   r   r   r   rw   r$   r/   r   r   r   r   r   r   r_   r_      s+    "hsm "7H "&) r   r_   T)r&   )abcr   r   rZ   	threadingr   typingr   r   r   r	   metrics_corer   r   r   r$   r_   REGISTRYr   r   r   <module>r      sT    #   1 1   i 
y	 yx . 40r   