Ë
    :vžjã  ã                   ó¬   — U d dl Z d dlmZ d dlmZmZ d dlZddlmZm	Z	 g Z
eeg df      ed<   d„ Z G d„ d	«      Ze j                  fd
„Zd„ Z e«       Zy)é    N)ÚLock)ÚCallableÚListé   )Úmmap_keyÚ
MmapedDictÚ_multi_process_cleanupsc                  óP   — t         D ]	  }  | «        Œ t         j                  «        y ©N)r	   Úclear)Úcleanups    úi/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/prometheus_client/values.pyÚclose_all_multiprocess_filesr      s   € ß*ˆÙ�	ð +ä×!Ñ!Õ#ó    c                   ó:   — e Zd ZdZdZd„ Zd„ Zd
d„Zd„ Zd„ Z	d	„ Z
y)Ú
MutexValuezA float protected by a mutex.Fc                 ó>   — d| _         d | _        t        «       | _        y ©Ng        )Ú_valueÚ	_exemplarr   Ú_lock)ÚselfÚtypÚmetric_nameÚnameÚ
labelnamesÚlabelvaluesÚ	help_textÚkwargss           r   Ú__init__zMutexValue.__init__   s   € ØˆŒØˆŒÜ“Vˆ�
r   c                 óp   — | j                   5  | xj                  |z  c_        d d d «       y # 1 sw Y   y xY wr   ©r   r   )r   Úamounts     r   ÚinczMutexValue.inc   s!   € Ø�Z‹ZØ�KŠK˜6Ñ!�K÷ �Z‰Zús   �,¬5Nc                 óT   — | j                   5  || _        d d d «       y # 1 sw Y   y xY wr   r"   )r   ÚvalueÚ	timestamps      r   ÚsetzMutexValue.set   s   € Ø�Z‹ZØˆDŒK÷ �Z‰Zúó   �ž'c                 óT   — | j                   5  || _        d d d «       y # 1 sw Y   y xY wr   ©r   r   ©r   Úexemplars     r   Úset_exemplarzMutexValue.set_exemplar#   s   € Ø�Z‹ZØ%ˆDŒN÷ �Z‰Zúr)   c                 ó^   — | j                   5  | j                  cd d d «       S # 1 sw Y   y xY wr   r"   ©r   s    r   ÚgetzMutexValue.get'   s   € Ø�Z‹ZØ—;‘;÷ �ZŠZúó   �#£,c                 ó^   — | j                   5  | j                  cd d d «       S # 1 sw Y   y xY wr   r+   r0   s    r   Úget_exemplarzMutexValue.get_exemplar+   s   € Ø�Z‹ZØ—>‘>÷ �ZŠZúr2   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_multiprocessr    r$   r(   r.   r1   r4   © r   r   r   r      s(   „ Ù'à€Mòò
"ó ò&òó"r   r   c                 ó”   ‡ ‡‡‡‡— i Šg Šd ‰ «       iŠt        «       Šˆˆfd„}t        j                  |«        G ˆˆˆˆ ˆfd„d«      }|S )a8  Returns a MmapedValue class based on a process_identifier function.

    The 'process_identifier' function MUST comply with this simple rule:
    when called in simultaneously running processes it MUST return distinct values.

    Using a different function than the default 'os.getpid' is at your own risk.
    r&   c                  ó�   •— ‰j                  «       D ]  } | j                  «        Œ ‰j                  «        ‰j                  «        y r   ©ÚvaluesÚcloser   )ÚfÚfilesr>   s    €€r   r   z"MultiProcessValue.<locals>.cleanup@   s.   ø€ Ø—‘–ˆAØ�G‰G�Ið  à�‰ŒØ�‰�r   c                   ó„   •— e Zd ZdZdZdˆˆfd„	Zˆ ˆfd„Zˆ ˆˆˆfd„Zˆfd„Zdˆfd„	Z	d	„ Z
ˆfd
„Zd„ Zeˆ ˆˆfd„«       Zy)ú&MultiProcessValue.<locals>.MmapedValuezAA float protected by a mutex backed by a per-process mmaped file.Tc                 óv  •— |||||||f| _         dt        j                  v rPdt        j                  vr>t        j                  d   t        j                  d<   t        j                  dt
        «       ‰	5  | j                  «        | j                  «        ‰
j                  | «       d d d «       y # 1 sw Y   y xY w)NÚprometheus_multiproc_dirÚPROMETHEUS_MULTIPROC_DIRzpprometheus_multiproc_dir variable has been deprecated in favor of the upper case naming PROMETHEUS_MULTIPROC_DIR)	Ú_paramsÚosÚenvironÚwarningsÚwarnÚDeprecationWarningÚ"_MmapedValue__check_for_pid_changeÚ_MmapedValue__resetÚappend)r   r   r   r   r   r   r   Úmultiprocess_moder   Úlockr>   s            €€r   r    z/MultiProcessValue.<locals>.MmapedValue.__init__L   s–   ø€ Ø ¨T°:¸{ÈIÐWhÐhˆDŒLà)¬R¯Z©ZÑ7Ð<VÔ^`×^hÑ^hÑ<hÜ9;¿¹ÐD^Ñ9_”—
‘
Ð5Ñ6Ü—‘ð  Qô  Seô  fÚØ×+Ñ+Ô-Ø—‘”Ø—‘˜dÔ#÷ —‘ús   Á42B/Â/B8c                 ó²  •— | j                   \  }}}}}}}|dk(  r	|dz   |z   }n|}|‰
vr^t        j                  j                  t        j                  j                  d«      dj                  |‰d   «      «      }	t        |	«      ‰
|<   ‰
|   | _        t        |||||«      | _
        | j                  j                  | j                  «      \  | _        | _        y )NÚgaugeÚ_rF   z{}_{}.dbr&   )rG   rH   ÚpathÚjoinrI   r1   Úformatr   Ú_filer   Ú_keyÚ
read_valuer   Ú
_timestamp)r   r   r   r   r   r   r   rP   Úfile_prefixÚfilenamerA   Úpids             €€r   Ú__resetz.MultiProcessValue.<locals>.MmapedValue.__resetW   sË   ø€ Ø\`×\hÑ\hÑYˆC�˜d J°¸YÐHYØ�gŠ~Ø! C™iÐ*;Ñ;‘à!�Ø %Ñ'ÜŸ7™7Ÿ<™<Ü—J‘J—N‘NÐ#=Ó>Ø×%Ñ% k°3°w±<Ó@óB�ô &0°Ó%9��kÑ"Ø˜{Ñ+ˆDŒJÜ  ¨d°JÀÈYÓWˆDŒIØ+/¯:©:×+@Ñ+@ÀÇÁÓ+KÑ(ˆDŒK˜�r   c                 óÈ   •—  ‰«       }‰d   |k7  rR|‰d<   ‰j                  «       D ]  }|j                  «        Œ ‰j                  «        ‰D ]  }|j                  «        Œ y y )Nr&   )r>   r?   r   rN   )r   Ú
actual_pidr@   r&   rA   r^   Úprocess_identifierr>   s       €€€€r   Ú__check_for_pid_changez=MultiProcessValue.<locals>.MmapedValue.__check_for_pid_changeg   sZ   ø€ Ù+Ó-ˆJØ�7‰|˜zÒ)Ø)��G‘àŸ™ž�AØ—G‘G•Ið (à—‘”Û#�EØ—M‘M•Oñ $ð *r   c                 ó  •— ‰5  | j                  «        | xj                  |z  c_        d| _        | j                  j	                  | j
                  | j                  | j                  «       d d d «       y # 1 sw Y   y xY wr   ©rM   r   r[   rX   Úwrite_valuerY   )r   r#   rQ   s     €r   r$   z*MultiProcessValue.<locals>.MmapedValue.incr   sS   ø€ ÚØ×+Ñ+Ô-Ø—’˜vÑ%•Ø"%�”Ø—
‘
×&Ñ& t§y¡y°$·+±+¸t¿¹ÔO÷	 —‘ús   „A(A5Á5A>Nc                 óî   •— ‰5  | j                  «        || _        |xs d| _        | j                  j	                  | j
                  | j                  | j                  «       d d d «       y # 1 sw Y   y xY wr   re   )r   r&   r'   rQ   s      €r   r(   z*MultiProcessValue.<locals>.MmapedValue.sety   sQ   ø€ ÚØ×+Ñ+Ô-Ø#�”Ø"+Ò"2¨s�”Ø—
‘
×&Ñ& t§y¡y°$·+±+¸t¿¹ÔO÷	 —‘ús   „AA+Á+A4c                  ó   — y r   r:   r,   s     r   r.   z3MultiProcessValue.<locals>.MmapedValue.set_exemplar€   s   € àr   c                 ól   •— ‰5  | j                  «        | j                  cd d d «       S # 1 sw Y   y xY wr   )rM   r   )r   rQ   s    €r   r1   z*MultiProcessValue.<locals>.MmapedValue.get„   s#   ø€ ÚØ×+Ñ+Ô-Ø—{‘{÷ —’ús   „*ª3c                  ó   — y r   r:   r0   s    r   r4   z3MultiProcessValue.<locals>.MmapedValue.get_exemplar‰   s   € àr   c                 ó¾   •— ‰5  ‰j                  «       D ]  }|j                  «        Œ ‰j                  «        ‰j                  «        d d d «       y # 1 sw Y   y xY wr   r=   )Úclsr@   rA   rQ   r>   s     €€€r   Úclose_all_filesz6MultiProcessValue.<locals>.MmapedValue.close_all_files�   s;   ø€ âØŸ™ž�AØ—G‘G•Ið (à—‘”Ø—‘”÷	 —‘ús   „AAÁA)Ú r   )r5   r6   r7   r8   r9   r    rN   rM   r$   r(   r.   r1   r4   Úclassmethodrm   )rA   rQ   r^   rb   r>   s   €€€€€r   ÚMmapedValuerC   G   sJ   ø„ ÙOàˆö		$õ	L÷ 		$ô	Põ	Pò	ô	#ò
	ð 
õ	ó 
ñ	r   rp   )r   r	   rO   )rb   r   rp   rA   rQ   r^   r>   s   `  @@@@r   ÚMultiProcessValuerq   0   sP   ü€ ð €EØ€FØÑ&Ó(Ð
)€Cô ‹6€Dõô
 ×"Ñ" 7Ô+÷L÷ Lð\ Ðr   c                  ój   — dt         j                  v sdt         j                  v r
t        «       S t        S )NrE   rF   )rH   rI   rq   r   r:   r   r   Úget_value_classrs   ˜   s.   € ð
 "¤R§Z¡ZÑ/Ð3MÔQS×Q[ÑQ[Ñ3[Ü Ó"Ð"äÐr   )rH   Ú	threadingr   Útypingr   r   rJ   Ú	mmap_dictr   r   r	   Ú__annotations__r   r   Úgetpidrq   rs   Ú
ValueClassr:   r   r   Ú<module>rz      s[   ðÜ 	Ý ß !Û ç +à46Ð ˜˜h r¨4 xÑ0Ñ1Ó 6ò$÷"ñ "ð> *,¯©ó eòPñ Ó�
r   