
    vha                       U d Z ddlmZ ddlmZ  G d de      Z G d de      Z G d d	e      Z G d
 de      Zg a	de
d<   g ade
d<   g ade
d<   g Zde
d<   d'dZ	 	 	 	 d(dZ	 	 	 	 	 	 	 	 	 	 d)dZ	 	 	 	 	 	 	 	 d*dZ	 	 	 	 d+dZ	 	 	 	 d,dZ	 	 	 	 d-dZ	 	 	 	 d.dZd/dZd0dZd1dZd2dZd  Z	 	 	 	 d-d!Zd3d"Z	 	 	 	 d,d#Z	 	 	 	 d+d$Z	 	 	 	 d.d%Zy&)4a  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y)EventListenerWithMetadatac                     y N )selfeventkwargss      N/opt/face_recognition/venv/lib/python3.12/site-packages/jax/_src/monitoring.py__call__z"EventListenerWithMetadata.__call__   s        Nr   strr   	str | intreturnNone__name__
__module____qualname__r   r	   r   r   r   r      s    r   r   c                      e Zd Z	 	 	 	 ddZy)!EventDurationListenerWithMetadatac                     y r   r	   )r
   r   duration_secsr   s       r   r   z*EventDurationListenerWithMetadata.__call__%   s    r   N)r   r   r   floatr   r   r   r   r   r	   r   r   r   r   #   s    "'+r   r   c                  (    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZy)!EventTimeSpanListenerWithMetadatac                     y r   r	   )r
   r   
start_timeend_timer   s        r   r   z*EventTimeSpanListenerWithMetadata.__call__,        r   N
r   r   r!   r   r"   r   r   r   r   r   r   r	   r   r   r   r   *   s/    $)5:FOr   r   c                  $    e Zd Z	 	 	 	 	 	 	 	 ddZy)ScalarListenerWithMetadatac                     y r   r	   )r
   r   valuer   s       r   r   z#ScalarListenerWithMetadata.__call__3   r#   r   Nr   r   r(   zfloat | intr   r   r   r   r   r	   r   r   r&   r&   1   s'    *6?r   r&   list[EventListenerWithMetadata]_event_listeners'list[EventDurationListenerWithMetadata]_event_duration_secs_listeners'list[EventTimeSpanListenerWithMetadata]_event_time_span_listeners list[ScalarListenerWithMetadata]_scalar_listenersc                ,    t         D ]  } || fi |  y)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_eventr4   ?   s      # hUfr   c                .    t         D ]  } || |fi |  y)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   durationr   r3   s       r   record_event_duration_secsr7   I   s"     1 (hUH''(r   c                0    t         D ]  } || ||fi |  y)z6Record an event start and end time in seconds (float).N)r/   )r   r!   r"   r   r3   s        r   record_event_time_spanr9   T   s$     - 4hUJ3F34r   c                .    t         D ]  } || |fi |  y)zRecord a scalar summary value.Nr1   )r   r(   r   r3   s       r   record_scalarr<   \   s"     $ %hUE$V$%r   c                .    t         j                  |        y)z8Register a callback to be invoked during record_event().N)r+   appendr3   s    r   register_event_listenerr@   d   s     (#r   c                .    t         j                  |        y)zBRegister a callback to be invoked during record_event_time_span().N)r/   r>   r?   s    r   !register_event_time_span_listenerrB   k   s     ##H-r   c                .    t         j                  |        y)zFRegister a callback to be invoked during record_event_duration_secs().N)r-   r>   r?   s    r   %register_event_duration_secs_listenerrD   r   s     !''1r   c                .    t         j                  |        y)z9Register a callback to be invoked during record_scalar().N)r1   r>   r?   s    r   register_scalar_listenerrF   x   s     8$r   c                      t        t              S )zGet event duration listeners.)listr-   r	   r   r   get_event_duration_listenersrI      s    	,	--r   c                      t        t              S )zGet event time span listeners.)rH   r/   r	   r   r   get_event_time_span_listenersrK      s    	(	))r   c                      t        t              S )zGet event listeners.)rH   r+   r	   r   r   get_event_listenersrM      s    		r   c                      t        t              S )zGet scalar event listeners.)rH   r1   r	   r   r   get_scalar_listenersrO      s    		  r   c                     g a g ag ag } y)zClear event listeners.N)r+   r-   r/   r;   s    r   clear_event_listenersrQ      s     #% !r   c                B    | t         v sJ t         j                  |        y)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_callbackrT      s!     
3	33	3 ''1r   c                R    t        t              }| | cxk  r|k  sJ  J t        | = y)znUnregister an event duration listener by index.

  This function is supposed to be called for testing only.
  N)lenr-   )indexsizes     r   ,_unregister_event_duration_listener_by_indexrY      s2    
 
+	,$
%	$			$U+r   c                B    | t         v sJ t         j                  |        y)zrUnregister an event time span listener by callback.

  This function is supposed to be called for testing only.
  N)r/   rS   r?   s    r   0_unregister_event_time_span_listener_by_callbackr[      s!     
/	//	/##H-r   c                B    | t         v sJ t         j                  |        y)zhUnregister an event listener by callback.

  This function is supposed to be called for testing only.
  N)r+   rS   r?   s    r   &_unregister_event_listener_by_callbackr]      s!     
%	%%	%(#r   c                B    | t         v sJ t         j                  |        y)znUnregister a scalar event listener by callback.

  This function is supposed to be called for testing only.
  N)r1   rS   r?   s    r   '_unregister_scalar_listener_by_callbackr_      s!     
&	&&	&8$r   Nr   )r   r   r6   r   r   r   r   r   r$   r)   )r3   r   r   r   )r3   r   r   r   )r3   r   r   r   )r3   r&   r   r   )r   r,   )r   r.   )r   r*   )r   r0   )rW   intr   r   ) __doc__
__future__r   typingr   r   r   r   r&   r+   __annotations__r-   r/   r1   r4   r7   r9   r<   r@   rB   rD   rF   rI   rK   rM   rO   rQ   rT   rY   r[   r]   r_   r	   r   r   <module>re      s   #      57 1 6JL  G LFH C H68 3 8()2(7;(44!4-24>G4	4%%"%.7%	%$'$	$./.	.202592%)%	%.
*
 
!
2/2482,./.	.$'$,0$%(%	%r   