
    /
i(                         U d dl Z d dlmZmZmZmZmZmZ er	 d dlm	Z	 n# e
$ r eZ	Y nw xY weZ	 G d d          Zdaee         ed<   defdZdS )	    N)TYPE_CHECKINGAnyCallableDictListOptional)Observationc            	           e Zd ZdZddeeeeg ee         f                  f         fdZ	dedeg ee         f         ddfdZ
dedeeg ee         f                  fd	Zdd
ZdefdZdS )ObservablesRegistryzG
    Global registry for storing callbacks for observable metrics.
    Nregistryc                 H    |pi | _         t          j                    | _        d S N)	_registry	threadingLock_lock)selfr   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\redis/observability/registry.py__init__zObservablesRegistry.__init__   s     !R^%%


    namecallbackreturnc                     | j         5  | j                            |g                               |           ddd           dS # 1 swxY w Y   dS )z?
        Register a callback for an observable metric.
        N)r   r   
setdefaultappend)r   r   r   s      r   registerzObservablesRegistry.register   s     Z 	A 	AN%%dB//66x@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   /AAAc                 z    | j         5  | j                            |g           cddd           S # 1 swxY w Y   dS )z=
        Get all callbacks for an observable metric.
        N)r   r   get)r   r   s     r   r   zObservablesRegistry.get   s     Z 	0 	0>%%dB//	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   044c                 x    | j         5  | j                                         ddd           dS # 1 swxY w Y   dS )z%
        Clear the registry.
        N)r   r   clearr   s    r   r!   zObservablesRegistry.clear&   s     Z 	# 	#N  """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   /33c                 *    t          | j                  S )z9
        Get the number of registered callbacks.
        )lenr   r"   s    r   __len__zObservablesRegistry.__len__-   s     4>"""r   r   )r   N)__name__
__module____qualname____doc__r   strr   r   r   r   r   r   r!   intr%    r   r   r   r      s         & &c4T#Y0G+H&H!I & & & &AS AHRc],C A A A A A0 0Xb$s)m%< = 0 0 0 0# # # ## # # # # # #r   r   _observables_registry_instancer   c                  :    t           t                      a t           S )aJ  
    Get the global observables registry singleton instance.

    This is the Pythonic way to get the singleton instance.

    Returns:
        The global ObservablesRegistry singleton

    Example:
        >>>
        >>> registry = get_observables_registry_instance()
        >>> registry.register('my_metric', my_callback)
    )r-   r   r,   r   r   !get_observables_registry_instancer/   8   s      &-)<)>)>&))r   )r   typingr   r   r   r   r   r   opentelemetry.metricsr	   ImportErrorr   r-   __annotations__r/   r,   r   r   <module>r4      s         E E E E E E E E E E E E E E E E  5555555    K"# "# "# "# "# "# "# "#L AE )< = D D D*+> * * * * * *s     **