
     <i                     8    d dl mZ d dlmZ  G d d          ZdS )    )Lock)Callablec                   :    e Zd ZdZddZdeg df         defdZdS )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                 :    t                      | _        d| _        d S )NF)r   _lock_done)selfs    /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/opentelemetry/util/_once.py__init__zOnce.__init__   s    VV



    funcc                     | j         rdS | j        5  | j         s |             d| _         	 ddd           dS 	 ddd           n# 1 swxY w Y   dS )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   s     : 	5Z 	 	: !
		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 us   A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   