ó
    Û2‰i   ã                   ó0   • S SK Jr  S SKJr   " S S5      rg)é    )ÚLock)ÚCallablec                   ó>   • \ rS rSrSrS	S jrS\/ S4   S\4S jrSr	g)
ÚOnceé   z�Execute a function exactly once and block all callers until the function returns

Same as golang's `sync.Once <https://pkg.go.dev/sync#Once>`_
ÚreturnNc                 ó0   • [        5       U l        SU l        g )NF)r   Ú_lockÚ_done)Úselfs    ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/opentelemetry/util/_once.pyÚ__init__ÚOnce.__init__   s   € Ü“VˆŒ
Øˆ�
ó    Úfuncc                 óÈ   • U R                   (       a  gU R                     U R                   (       d  U" 5         SU l          SSS5        g SSS5        g! , (       d  f       g= f)z±Execute ``func`` if it hasn't been executed or return.

Will block until ``func`` has been called by one thread.

Returns:
    Whether or not ``func`` was executed in this call
FTN©r   r
   )r   r   s     r   Údo_onceÚOnce.do_once   sL   € ð �:�:Øà�Z‹ZØ—:—:Ù”Ø!�”
Ø÷	 ˆZØ÷ ð
 ÷ ŒZð
 ús   Ÿ!AÁ
A!r   )r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Úboolr   Ú__static_attributes__© r   r   r   r      s(   † ñô
ð˜H R¨ XÑ.ð °4÷ r   r   N)Ú	threadingr   Útypingr   r   r   r   r   Ú<module>r       s   ðõ Ý ÷ò r   