
    ng\j(                         % S SK r S SKJrJrJrJrJrJr  \(       a   S SKJ	r	  O\r	 " S S5      rSq\\   \S'   S\4S jrg! \
 a    \r	 N&f = f)	    N)TYPE_CHECKINGAnyCallableDictListOptional)Observationc            	           \ rS rSrSrSS\\\\/ \\	   4      4   4S jjr
S\S\/ \\	   4   SS4S	 jrS\S\\/ \\	   4      4S
 jrSS jrS\4S jrSrg)ObservablesRegistry   z?
Global registry for storing callbacks for observable metrics.
Nregistryc                 X    U=(       d    0 U l         [        R                  " 5       U l        g N)	_registry	threadingLock_lock)selfr   s     W/home/edenadmin/noVNC/venv/lib/python3.13/site-packages/redis/observability/registry.py__init__ObservablesRegistry.__init__   s    !R^^%
    namecallbackreturnc                     U R                      U R                  R                  U/ 5      R                  U5        SSS5        g! , (       d  f       g= f)z/
Register a callback for an observable metric.
N)r   r   
setdefaultappend)r   r   r   s      r   registerObservablesRegistry.register   s4     ZZNN%%dB/66x@ ZZs   ,A
Ac                     U R                      U R                  R                  U/ 5      sSSS5        $ ! , (       d  f       g= f)z-
Get all callbacks for an observable metric.
N)r   r   get)r   r   s     r   r"   ObservablesRegistry.get   s)     ZZ>>%%dB/ ZZs	   3
Ac                     U R                      U R                  R                  5         SSS5        g! , (       d  f       g= f)z
Clear the registry.
N)r   r   clearr   s    r   r%   ObservablesRegistry.clear&   s%     ZZNN  " ZZs   1
?c                 ,    [        U R                  5      $ )z)
Get the number of registered callbacks.
)lenr   r&   s    r   __len__ObservablesRegistry.__len__-   s     4>>""r   )r   r   r   )r   N)__name__
__module____qualname____firstlineno____doc__r   strr   r   r   r   r   r"   r%   intr*   __static_attributes__ r   r   r   r      s    &c4T#Y0G+H&H!I &AS AHRc],C A A0 0Xb$s)m%< = 0## #r   r   _observables_registry_instancer   c                  0    [         c
  [        5       q [         $ )a&  
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)
)r5   r   r4   r   r   !get_observables_registry_instancer7   8   s      &-)<)>&))r   )r   typingr   r   r   r   r   r   opentelemetry.metricsr	   ImportErrorr   r5   __annotations__r7   r4   r   r   <module>r<      sf     E E 5 K"# "#L AE )< = D*+> *_  s   A AA