
    Ng                         d dl mZmZmZ 	 d dlmZ d dlmZ dZn# e	$ r dZY nw xY w ede
eee          Z G d d          Zd	S )
    )DictOptionalTypeVar)SimpleEventRecord)TmetryWriterTFTc                       e Zd ZdZdZdZdZi Zd Zd Z	de
defd	Zd
ee
ef         fdZdefdZdeddfdZdefdZddee
         fdZdS )EventLoggerz
    Base class for providing event logging in a path handler
    It implements event logging by wrapping the tmetry interface.
    If tmetry packages is not available, it is a no-op.
    iopath_tmetryop
   c                 Z    t           r#g | _        t                      | _        d| _        d S d S )NT)b_tmetry_available_writersr   _evt_enabled)selfargskwargss      V/var/www/html/ai-engine/env/lib/python3.11/site-packages/iopath/common/event_logger.py__init__zEventLogger.__init__$   s3     	!DM)++DI DMMM	! 	!    c                 z    t           r1t          |t                    r| j                            |           d S d S d S N)r   
isinstancer   r   append)r   writers     r   
add_writerzEventLogger.add_writer/   sL     	-&,// -$$V,,,,,	- 	-- -r   keyvalc                 N    t           r| j                            ||           d S d S r   )r   r   set)r   r   r    s      r   add_keyzEventLogger.add_key5   s0     	$IMM#s#####	$ 	$r   kvsc                 L    t           r| j                            |           d S d S r   )r   r   set_keys)r   r$   s     r   add_keyszEventLogger.add_keys:   s0     	$Is#####	$ 	$r   returnc                     | j                             | j                  }|dS || j        vrd| j        |<   dS | j        |xx         dz  cc<   | j        |         | j        k    rd| j        |<   dS dS )z
        Samples the current event and logs only when the count
        reaches logging interval.

        Returns:
            True: if this sample should be logged.
            False: otherwise.
        NT   F)r   getOP_KEYsample_countsSAMPLING_PERIOD)r   evt_ops     r   _sample_recordzEventLogger._sample_record>   s     t{++>4+++)*Dv&46"""a'"""f%(<<<)*Dv&4 ur   enableNc                     || _         d S r   r   )r   r1   s     r   set_loggingzEventLogger.set_loggingY   s    r   c                     | j         S r   r3   )r   s    r   is_logging_enabledzEventLogger.is_logging_enabled\   s
    }r   topicc                     t           rb| j        r]|                                 sd S || j        }| j        D ]}|                    || j                   | `t                      | _        d S d S d S r   )r   r   r0   DEFAULT_TOPICr   writeRecordr   r   )r   r7   r   s      r   	log_eventzEventLogger.log_event`   s     	,$- 	, &&(( }*- 5 5""5$)4444	)++DIII	, 	, 	, 	,r   r   )__name__
__module____qualname____doc__r9   r,   r.   r-   r   r   strVTYPEr#   r   r'   boolr0   r4   r6   r   r;    r   r   r
   r
      s         $MF O M! ! !- - -$3 $U $ $ $ $
$De, $ $ $ $    6$ 4    D    , ,x} , , , , , ,r   r
   N)typingr   r   r   tmetry.simpleeventr   tmetry.writerr   r   ImportErrorr@   intrB   floatrA   r
   rC   r   r   <module>rJ      s    + * * * * * * * * *444444******    	S#tU++\, \, \, \, \, \, \, \, \, \,s    %%