
    hjM                         d dl Z d dlZd dlmZ g dZdZ G d d      Z G d d      Z G d	 d
      Z e       Z	dde
defdZddedefdZddedefdZdde
de
defdZeddede
fd       Zy)    N)contextmanager)LOGGERLoggerTimerclear_filterenableexcludeincludetimer   c                   ,    e Zd Zd Zd Zd ZddZd Zy)Filterc                      i | _         i | _        y N)_include_excludeselfs    H/DATA/.local/lib/python3.12/site-packages/trame_common/utils/profiler.py__init__zFilter.__init__   s        c                     t        |      t        k  ry |d t         }| j                  j                  |t	                     j                  |       y r   )lenKEY_SIZEr   
setdefaultsetaddr   headkeys      r   r
   zFilter.include   =    t9x9Ho  ce,006r   c                     t        |      t        k  ry |d t         }| j                  j                  |t	                     j                  |       y r   )r   r   r   r   r   r   r   s      r   r	   zFilter.exclude   r!   r   c                 v    |r| j                   j                          |r| j                  j                          y y r   )r   clearr   )r   r
   r	   s      r   r$   zFilter.clear&   s-    MM!MM! r   c                    | j                   r| j                  rt        |      t        k  ry|d t         }| j                   r6| j                   j	                  |g       }|D ]  }|j                  |      s y | j                  sy| j                  r6| j                  j	                  |g       }|D ]  }|j                  |      s y y)NTF)r   r   r   r   get
startswith)r   msgr    exclude_setr   include_sets         r   keepzFilter.keep,   s    }}DMMSX5H )8n ==--++C4K#>>$'  $
 }} ==--++C4K#>>$' $ r   NTT)__name__
__module____qualname__r   r
   r	   r$   r+    r   r   r   r      s    77"r   r   c                   B    e Zd ZdZd ZddZej                  fdZd Z	y)r   )abortenabledfilterlog_perflog_perf_fpsc                 z    t               | _        d| _        d| _        d | _        d | _        | j                          y )NF)r   r4   r2   r3   r5   r6   	use_printr   s    r   r   zLogger.__init__K   s2    h
 r   c                     | j                   rB| j                  j                  |      r&| j                  t	        j
                         ||       y y y r   )r3   r4   r+   r5   timeperf_counter)r   r(   durations      r   actionzLogger.actionS   s:    <<DKK,,S1MM$++-sH= 2<r   c                 8    fd}fd}|| _         || _        | S )Nc                 :    t        |dd| dd|ddd       y )N<60 10.3f8.2fz msTfileflushprinttsr(   dt_msrE   s      r   r5   z"Logger.use_print.<locals>.log_perfX   s(    SIQr%j%S9DQr   c           
      H    t        |dd| dd|ddd|z  ddd	
       y )Nr@   rA   rB   rC   z ms   z8.1fz fpsTrD   rG   rI   s      r   r6   z&Logger.use_print.<locals>.log_perf_fps[   s:    s)1RJad|4uT7J$Or   )r5   r6   )r   rE   r5   r6   s    `  r   r8   zLogger.use_printW   s$    	R	 !(r   c                     ddl m j                  t        j                  ddd       fd}fd}|| _        || _        | S )	Nr   )loggerz[PERF] {message}TRACEztrame_lumo_view.perf)formatlevelr4   c                 .    j                  d|| |       y )Nz{:<60} {:10.3f} {:8.2f} mstracerJ   r(   rK   rO   s      r   r5   z#Logger.use_loguru.<locals>.log_perfp   s    LL5sBFr   c                 6    j                  d|| |d|z         y )Nz&{:<60} {:8.3f} {:10.2f} ms {:8.1f} fpsrM   rT   rV   s      r   r6   z'Logger.use_loguru.<locals>.log_perf_fpss   s    LL8#r5$QV,r   )logururO   r   sysstdoutr5   r6   )r   r5   r6   rO   s      @r   
use_loguruzLogger.use_loguruf   sH    !

JJ%)	 	 	
	G	
 !(r   N)r   )
r-   r.   r/   	__slots__r   r=   rY   stderrr8   r[   r0   r   r   r   r   H   s$    JI> !ZZ r   r   c                   :    e Zd ZdZd
dedefdZd Zd Zd Z	d Z
y	)r   )r2   dtlogr(   t0r(   show_fpsc                     || _         d| _        d| _        d| _        |rt        j
                  | _        y t        j                  | _        y )NFr   )r(   r2   ra   r_   r   r6   r5   r`   )r   r(   rb   s      r   r   zTimer.__init__   s7    
*26&&r   c                 $    | j                          y r   )on_startr   s    r   	__enter__zTimer.__enter__   s    r   c                 $    | j                          y r   )on_end)r   exc_typeexc_valexc_tbs       r   __exit__zTimer.__exit__   s    r   c                 6    t        j                         | _        y r   )r:   r;   ra   r   ___s      r   re   zTimer.on_start   s    ##%r   c                 V   t        j                         | j                  z
  dz  | _        | j                  rd| _        y t
        j                  r\t
        j                  j                  | j                        r2| j                  | j                  | j                  | j                         y y y )N     @@F)r:   r;   ra   r_   r2   r   r3   r4   r+   r(   r`   rn   s      r   rh   zTimer.on_end   sm    $$&0F:::DJ^^ 2 2488 <HHTWWdhh0 !=^r   NF)r-   r.   r/   r\   strboolr   rf   rl   re   rh   r0   r   r   r   r   }   s1    3IHC H4 H&1r   r   valuereturnc                 6    t        |       t        _        t        S )z4Turn performance instrumentation on or off globally.)ru   r   r3   rv   s    r   r   r      s    %[FNMr   c                 L    t         j                  j                  |        t         S )z=Register filter to only include messages starting with value.)r   r4   r
   ry   s    r   r
   r
          
MM% Mr   c                 L    t         j                  j                  |        t         S )z8Register filter to exclude messages starting with value.)r   r4   r	   ry   s    r   r	   r	      r{   r   r
   r	   c                 N    t         j                  j                  | |       t         S )zClear filter.)r   r4   r$   )r
   r	   s     r   r   r      s    
MM)Mr   labelrb   c              #     K   t         j                  s	t          y t        j                         }	 t          t         j                  rdt         _        y t        j                         |z
  dz  }|rt         j                  || |       y t         j                  || |       y # t         j                  rdt         _        w t        j                         |z
  dz  }|rt         j                  || |       w t         j                  || |       w xY ww)NFrr   )r   r3   r:   r;   r2   r6   r5   )r~   rb   ra   rK   s       r   r   r      s      >> 
			B
2<< FL&&(2-7E##Bu5E51 << FL&&(2-7E##Bu5E51s   .DB! A(D!A)D

D)T) r,   rs   )rY   r:   
contextlibr   __all__r   r   r   r   r   ru   r   rt   r
   r	   r   r   r0   r   r   <module>r      s    
  %	 2 2j2 2j1 16 
$ & 3  3  $    2 2 2 2r   