
    kh                     |    d dl mZmZmZ 	 d dlmZ d dlmZ dZ ede
eee      Z G d d      Zy	# e	$ r dZY  w xY w)
    )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y)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                 L    t         rg | _        t               | _        d| _        y y )NT)b_tmetry_available_writersr   _evt_enabled)selfargskwargss      V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/iopath/common/event_logger.py__init__zEventLogger.__init__$   s"    DM)+DI DM     c                 j    t         r-t        |t              r| j                  j	                  |       y y y N)r   
isinstancer   r   append)r   writers     r   
add_writerzEventLogger.add_writer/   s+    &,/$$V, 0 r   keyvalc                 J    t         r| j                  j                  ||       y y r   )r   r   set)r   r   r    s      r   add_keyzEventLogger.add_key5   s    IIMM#s# r   kvsc                 H    t         r| j                  j                  |       y y r   )r   r   set_keys)r   r$   s     r   add_keyszEventLogger.add_keys:   s    IIs# r   returnc                    | j                   j                  | j                        }|y|| j                  vrd| j                  |<   y| j                  |xx   dz  cc<   | j                  |   | j                  kD  rd| j                  |<   yy)z
        Samples the current event and logs only when the count
        reaches logging interval.

        Returns:
            True: if this sample should be logged.
            False: otherwise.
        T   F)r   getOP_KEYsample_countsSAMPLING_PERIOD)r   evt_ops     r   _sample_recordzEventLogger._sample_record>   s     t{{+>+++)*Dv&6"a'"f%(<(<<)*Dv& r   enableNc                     || _         y 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         rk| j                  r^| j                         sy || j                  }| j                  D ]  }|j                  || j                           | `t               | _        y y y r   )r   r   r0   DEFAULT_TOPICr   writeRecordr   r   )r   r7   r   s      r   	log_eventzEventLogger.log_event`   sj    $-- &&(}**-- 5""5$))45	)+DI #0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      sU    + *4* 	S#tU+\, \,  s   1 ;;