
    td                     0    d dl m Z  d dlmZ  G d d      Zy)    )datetime)Callablec                   2    e Zd ZdZd	dededefdZd Zd Z	y)
Timerz
    Context manager for pretty printing start, end, elapsed and average times.

    Example usage:
        - https://github.com/uburuntu/throttler/blob/master/examples/example_timer.py
    Nnameverbose
print_funcc                 h    d| _         d | _        d| _        || _        || _        |xs t
        | _        y )N   g        )	iterationstart_dtelapsed_allr   r   print)selfr   r   r	   s       /lib/python3.12/site-packages/throttler/timer.py__init__zTimer.__init__   s2    	(5
    c                     t        j                         | _        | j                  r@| j	                  d| j
                   dd| j                  xs d d| j                          y y )N#>5 | r   z
 | begin: )r   nowr   r   r   r   r   )r   s    r   	__enter__zTimer.__enter__   sY     <<JJAdnn-.r2#dii6J75K:VZVcVcUdef r   c                    t        j                         }|| j                  z
  j                         }| xj                  |z  c_        | j                  | j
                  z  }| j                  r?| j                  d| j
                   dd| j                  xs d d| d|dd|dd	
       n&| j                  | j                  xs d d
|dd       | xj
                  dz  c_        y )Nr   r   r   r   z
 |   end: z, elapsed: z.2fz sec, average: z sec
z | elapsed: z secr   )	r   r   r   total_secondsr   r   r   r   r   )r   exc_typeexc_valexc_tbcurr_dtelapsedaverages          r   __exit__zTimer.__exit__   s    ,,.T]]*99;G#""T^^3<<JJAdnn-.r2#dii6J75K:V]U^^ijqruiv w##*3-v7 8 JJ$)).w/|GC=MN!r   )NFN)
__name__
__module____qualname____doc__strboolr   r   r   r"    r   r   r   r      s,    )S )$ )H )g
r   r   N)r   typingr   r   r)   r   r   <module>r+      s     # #r   