
    G)f                     0    d dl mZ d dlmZ  G d d      Zy)    )Lock)Callablec                   2    e Zd ZdZddZdeg df   defdZy)OncezExecute 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    t               | _        d| _        y )NF)r   _lock_done)selfs    [/var/www/html/flask-app/venv/lib/python3.12/site-packages/mysql/opentelemetry/util/_once.py__init__zOnce.__init__   s    V

    funcc                     | j                   ry| j                  5  | j                   s |        d| _         	 ddd       y	 ddd       y# 1 sw Y   yxY w)zExecute ``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_oncezOnce.do_once   sR     ::ZZ 	::!
		 		
 	
 s   A		A)r   N)__name__
__module____qualname____doc__r   r   boolr    r   r   r   r      s(    
HRX. 4 r   r   N)	threadingr   typingr   r   r   r   r   <module>r      s      r   