
    Vpf0                        U d Z ddlmZ ddlmZ  G d de          Z G d de          Zg aded	<   g a	d
ed<   d"dZ
d#dZd$dZd%dZd&dZd'dZd Zd%dZd(dZd$d Zd!S ))a  Utilities for instrumenting code.

Code points can be marked as a named event. Every time an event is reached
during program execution, the registered listeners will be invoked.

A typical listener callback is to send an event to a metrics collector for
aggregation/exporting.
    )annotations)Protocolc                      e Zd Zd	dZdS )
EventListenerWithMetadataeventstrkwargs	str | intreturnNonec                    d S N )selfr   r	   s      S/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/monitoring.py__call__z"EventListenerWithMetadata.__call__   s    C    Nr   r   r	   r
   r   r   __name__
__module____qualname__r   r   r   r   r   r      s(             r   r   c                      e Zd Zdd	Zd
S )!EventDurationListenerWithMetadatar   r   duration_secsfloatr	   r
   r   r   c                    d S r   r   )r   r   r   r	   s       r   r   z*EventDurationListenerWithMetadata.__call__%   s    Cr   N)r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   #   s(             r   r   list[EventListenerWithMetadata]_event_listeners'list[EventDurationListenerWithMetadata]_event_duration_secs_listenersr   r   r	   r
   r   r   c                ,    t           D ]} || fi | dS )zRecord an event.

  If **kwargs are specified, all of the named arguments have to be passed in the
  same order across all invocations of this method for the same event.
  N)r   )r   r	   callbacks      r   record_eventr$   .   s8     #  hHUf r   durationr   c                .    t           D ]} || |fi | dS )zRecord an event duration in seconds (float).

  If **kwargs are specified, all of the named arguments have to be passed in the
  same order across all invocations of this method for the same event.
  N)r!   )r   r%   r	   r#   s       r   record_event_duration_secsr'   8   s:     1 ( (hHUH''''''( (r   r#   c                :    t                               |            dS )z8Register a callback to be invoked during record_event().N)r   appendr#   s    r   register_event_listenerr+   C   s     (#####r   c                :    t                               |            dS )zFRegister a callback to be invoked during record_event_duration_secs().N)r!   r)   r*   s    r   %register_event_duration_secs_listenerr-   J   s     !''11111r   c                 *    t          t                    S )zGet event duration listeners.)listr!   r   r   r   get_event_duration_listenersr0   O   s    	,	-	--r   c                 *    t          t                    S )zGet event listeners.)r/   r   r   r   r   get_event_listenersr2   S   s    			r   c                     g a g adS )zClear event listeners.N)r   r!   r   r   r   clear_event_listenersr4   W   s     #%   r   c                P    | t           v sJ t                               |            dS )zqUnregister an event duration listener by callback.

  This function is supposed to be called for testing only.
  N)r!   remover*   s    r   /_unregister_event_duration_listener_by_callbackr7   ]   s0     
3	3	3	3	3 ''11111r   indexintc                b    t          t                    }| | cxk    r|k     sn J t          | = dS )znUnregister an event duration listener by index.

  This function is supposed to be called for testing only.
  N)lenr!   )r8   sizes     r   ,_unregister_event_duration_listener_by_indexr=   f   sG    
 
+	,	,$
%				$						$U+++r   c                P    | t           v sJ t                               |            dS )zhUnregister an event listener by callback.

  This function is supposed to be called for testing only.
  N)r   r6   r*   s    r   &_unregister_event_listener_by_callbackr?   o   s0     
%	%	%	%	%(#####r   Nr   )r   r   r%   r   r	   r
   r   r   )r#   r   r   r   )r#   r   r   r   )r   r    )r   r   )r8   r9   r   r   )__doc__
__future__r   typingr   r   r   r   __annotations__r!   r$   r'   r+   r-   r0   r2   r4   r7   r=   r?   r   r   r   <module>rD      s     # " " " " "                     57  6 6 6 6JL  L L L L   ( ( ( ($ $ $ $2 2 2 2
. . . .       & & &2 2 2 2, , , ,$ $ $ $ $ $r   