Ë
    :vžj_  ã                   ó¾   — d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 ddl
mZ  G d„ de«      Z G d„ d	«      Z G d
„ de«      Z G d„ d«      Z G d„ d«      Z ed¬«      Zy)é    N)ÚLock)ÚDictÚIterableÚListÚOptionalÚProtocolÚSeté   )ÚMetricc                   ó   — e Zd Zdee   fd„Zy)Ú	CollectorÚreturnc                  ó   — y)zCollect metrics.N© ©Úselfs    úk/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/prometheus_client/registry.pyÚcollectzCollector.collect	   s   � ó    N©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   „ ð˜ &Ñ)ô r   r   c                   ó   — e Zd Zdee   fd„Zy)Ú_EmptyCollectorr   c                 ó   — g S ©Nr   r   s    r   r   z_EmptyCollector.collect   s   € Øˆ	r   Nr   r   r   r   r   r      s   „ ð˜ &Ñ)ô r   r   c                   ó*   ‡ — e Zd Zdee   fˆ fd„Zˆ xZS )ÚDuplicateTimeseriesÚ
duplicatesc                 óT   •— dj                  |«      }t        ‰| �	  |«       || _        y )Nz.Duplicated timeseries in CollectorRegistry: {})ÚformatÚsuperÚ__init__r    )r   r    ÚmsgÚ	__class__s      €r   r$   zDuplicateTimeseries.__init__   s*   ø€ Ø>×EÑEØóˆä‰Ñ˜ÔØ$.ˆ�r   )r   r   r   r	   Ústrr$   Ú__classcell__)r&   s   @r   r   r      s   ø„ ð/ 3 s¡8÷ /ñ /r   r   c                   óö   — e Zd ZdZ	 	 ddedeeeef      defd„Zde	ddfd	„Z
de	ddfd
„Zd„ Zdee   fd„Zdee   ddfd„Zdeeeef      ddfd„Zdeeeef      fd„Zd„ Zddedeeeef      dee   fd„Zy)ÚCollectorRegistryzÙMetric 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_infoÚ support_collectors_without_namesc                 ó˜   — i | _         i | _        || _        t        «       | _        i | _        || _        g | _        | j                  |«       y r   )	Ú_collector_to_namesÚ_names_to_collectorsÚ_auto_describer   Ú_lockÚ_target_infoÚ!_support_collectors_without_namesÚ_collectors_without_namesÚset_target_info)r   r+   r,   r-   s       r   r$   zCollectorRegistry.__init__"   sI   € à?AˆÔ Ø:<ˆÔ!Ø+ˆÔÜ“VˆŒ
Ø68ˆÔØ1QˆÔ.Ø:<ˆÔ&Ø×Ñ˜[Õ)r   Ú	collectorr   c                 óf  — | j                   5  | j                  |«      }t        | j                  «      j	                  |«      }|rt        |«      ‚|D ]  }|| j                  |<   Œ || j                  |<   | j                  r|s| j                  j                  |«       ddd«       y# 1 sw Y   yxY w)z Add a collector to the registry.N)
r2   Ú
_get_namesÚsetr0   Úintersectionr   r/   r4   r5   Úappend)r   r7   Únamesr    Únames        r   ÚregisterzCollectorRegistry.register-   s“   € à�Z‹ZØ—O‘O IÓ.ˆEÜ˜T×6Ñ6Ó7×DÑDÀUÓKˆJÙÜ)¨*Ó5Ð5Û�Ø2;�×)Ñ)¨$Ò/ð à27ˆD×$Ñ$ YÑ/Ø×5Ò5¹eØ×.Ñ.×5Ñ5°iÔ@÷ �Z‰Zús   �BB'Â'B0c                 óô   — | j                   5  | j                  |   D ]  }| j                  |= Œ | j                  |= || j                  v r| j                  j	                  |«       ddd«       y# 1 sw Y   yxY w)z%Remove a collector from the registry.N)r2   r/   r0   r5   Úremove)r   r7   r>   s      r   Ú
unregisterzCollectorRegistry.unregister:   sf   € à�Z‹ZØ×0Ñ0°Ô;�Ø×-Ñ-¨dÑ3ð <à×(Ñ(¨Ð3Ø˜D×:Ñ:Ñ:Ø×.Ñ.×5Ñ5°iÔ@÷ �Z‰Zús   �AA.Á.A7c                 óp  — d}	 |j                   }|s| j                  r|j                  }|sg S g }ddgg d¢g d¢g d¢dgdœ} |«       D ]\  }|j	                  |j
                  «       |j                  |j                  g «      D ]   }|j	                  |j
                  |z   «       Œ" Œ^ |S # t        $ r Y Œ¤w xY w)	z@Get names of timeseries the collector produces and clashes with.NÚ_totalÚ_created)Ú_sumÚ_countrE   )Ú_bucketrF   rG   rE   )rH   Ú_gsumÚ_gcountÚ_info)ÚcounterÚsummaryÚ	histogramÚgaugehistogramÚinfo)ÚdescribeÚAttributeErrorr1   r   r<   r>   ÚgetÚtype)r   r7   Ú	desc_funcÚresultÚtype_suffixesÚmetricÚsuffixs          r   r9   zCollectorRegistry._get_namesC   sÂ   € àˆ	ð	Ø!×*Ñ*ˆIñ ˜T×0Ò0Ø!×)Ñ)ˆIáØˆIàˆà  *Ð-Ú5ÚBÚ=Ø�Iñ
ˆñ  –kˆFØ�M‰M˜&Ÿ+™+Ô&Ø'×+Ñ+¨F¯K©K¸Ö<�Ø—‘˜fŸk™k¨FÑ2Õ3ñ =ð "ð ˆøô+ ò 	Ùð	ús   „B) Â)	B5Â4B5c              #   ó  K  — d}d}| j                   5  t        j                  | j                  «      }| j                  r| j	                  «       }ddd«       |r|–— |D ]  }|j                  «       E d{  –—†  Œ y# 1 sw Y   Œ/xY w7 Œ­w)z3Yields metrics from the collectors in the registry.N)r2   Úcopyr/   r3   Ú_target_info_metricr   )r   Ú
collectorsÚtir7   s       r   r   zCollectorRegistry.collect`   sz   è ø€ àˆ
ØˆØ�Z‹ZÜŸ™ 4×#;Ñ#;Ó<ˆJØ× Ò Ø×-Ñ-Ó/�÷ ñ ØŠHÛ#ˆIØ ×(Ñ(Ó*×*Ñ*ñ $÷ ˆZúð +ús(   ‚B“<A=Á&BÁ5B	Á6BÁ=BÂBr=   ÚRestrictedRegistryc                 ó0   — t        |«      }t        || «      S )a  Returns 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']), escaping)

        Experimental.)r:   r_   )r   r=   s     r   Úrestricted_registryz%CollectorRegistry.restricted_registrym   s   € ô �E“
ˆÜ! %¨Ó.Ð.r   Úlabelsc                 ó"  — | j                   5  |r=| j                  sd| j                  v rt        d«      ‚t	        «       | j                  d<   n(| j                  r| j                  j                  dd «       || _        d d d «       y # 1 sw Y   y xY w)Nr,   z7CollectorRegistry already contains a target_info metric)r2   r3   r0   Ú
ValueErrorr   Úpop)r   rb   s     r   r6   z!CollectorRegistry.set_target_infoz   sr   € Ø�Z‹ZÙØ×(Ò(¨]¸d×>WÑ>WÑ-WÜ$Ð%^Ó_Ð_Ü;JÓ;L�×)Ñ)¨-Ò8Ø×"Ò"Ø×)Ñ)×-Ñ-¨m¸TÔBØ &ˆDÔ÷ �Z‰Zús   �A/BÂBc                 ó^   — | j                   5  | j                  cd d d «       S # 1 sw Y   y xY wr   )r2   r3   r   s    r   Úget_target_infoz!CollectorRegistry.get_target_info„   s   € Ø�Z‹ZØ×$Ñ$÷ �ZŠZús   �#£,c                 óZ   — t        ddd«      }|j                  d| j                  d«       |S )NÚtargetzTarget metadatarP   r,   r
   )r   Ú
add_sampler3   )r   Úms     r   r\   z%CollectorRegistry._target_info_metricˆ   s,   € Ü�8Ð.°Ó7ˆØ	�‰�] D×$5Ñ$5°qÔ9Øˆr   r>   c                 ó¶   — |€i }| j                  «       D ]B  }|j                  D ]1  }|j                  |k(  sŒ|j                  |k(  sŒ#|j                  c c S  ŒD y)z~Returns the sample value, or None if not found.

        This is inefficient, and intended only for use in unittests.
        N)r   Úsamplesr>   rb   Úvalue)r   r>   rb   rX   Úss        r   Úget_sample_valuez"CollectorRegistry.get_sample_value�   sP   € ð
 ˆ>ØˆFØ—l‘l–nˆFØ—^”^�Ø—6‘6˜T“> a§h¡h°&Ó&8ØŸ7™7”Nñ $ð %ð r   )FNFr   )r   r   r   Ú__doc__Úboolr   r   r'   r$   r   r?   rB   r9   r   r   r   ra   r6   rg   r\   Úfloatrp   r   r   r   r*   r*      s   „ ñð ]aØ:?ñ	* dð 	*ÀÈ$ÈsÐTWÈxÉ.ÑAYð 	*Ø37ó	*ðA )ð A°ó AðA Ið A°$ó Aòð:+˜ &Ñ)ó +ð/¨°#©ð /Ð;Oó /ð' h¨t°C¸°H©~Ñ&>ð 'À4ó 'ð% ¨$¨s°C¨x©.Ñ!9ó %òñ
 Sð °(¸4ÀÀSÀ¹>Ñ2Jð ÐV^Ð_dÑVeô r   r*   c                   ó4   — e Zd Zdee   defd„Zdee   fd„Zy)r_   r=   Úregistryc                 ó2   — t        |«      | _        || _        y r   )r:   Ú	_name_setÚ	_registry)r   r=   ru   s      r   r$   zRestrictedRegistry.__init__œ   s   € Ü˜U›ˆŒØ!ˆ�r   r   c              #   óZ  K  — t        | j                  j                  «      }d }| j                  j                  5  d| j                  v r0| j                  j
                  r| j                  j                  «       }| j                  D ]I  }|dk7  sŒ	|| j                  j                  v sŒ"|j                  | j                  j                  |   «       ŒK 	 d d d «       |r|–— |D ]9  }|j                  «       D ]$  }|j                  | j                  «      }|sŒ!|–— Œ& Œ; y # 1 sw Y   ŒNxY w­w)Nr,   )r:   rx   r5   r2   rw   r3   r\   r0   Úaddr   Ú_restricted_metric)r   r]   Útarget_info_metricr>   r7   rX   rk   s          r   r   zRestrictedRegistry.collect    së   è ø€ Ü˜Ÿ™×AÑAÓBˆ
Ø!ÐØ�^‰^×!Ó!Ø §¡Ñ.°4·>±>×3NÒ3NØ%)§^¡^×%GÑ%GÓ%IÐ"ØŸœ�Ø˜=Ó(¨T°T·^±^×5XÑ5XÒ-XØ—N‘N 4§>¡>×#FÑ#FÀtÑ#LÕMñ '÷ "ñ Ø$Ò$Û#ˆIØ#×+Ñ+Ö-�Ø×-Ñ-¨d¯n©nÓ=�ÚØ“Gñ .ñ $÷ "Ð!üs0   ‚8D+ºADÂDÂ'*DÃAD+Ä	D+ÄD(Ä$D+N)	r   r   r   r   r'   r*   r$   r   r   r   r   r   r_   r_   ›   s+   „ ð"˜h s™mð "Ð7Hó "ð˜ &Ñ)ô r   r_   T)r+   )r[   Ú	threadingr   Útypingr   r   r   r   r   r	   Úmetrics_corer   r   r   rd   r   r*   r_   ÚREGISTRYr   r   r   Ú<module>r�      sY   ðÛ Ý ß @× @å  ô�ô ÷
ñ ô
/˜*ô /÷~ñ ~÷Bñ ñ. ¨4Ô0�r   