
    ,j                     L   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ dZ G d	 d
          Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          ZdZ G d de          Zd Zedk    r e             dS dS )    N)Path)HtmlElement)TrameApp)change)	DivLayout)clienthtml      ?c                   >    e Zd Zg dZd Zd Zd Zed             ZdS )Record)namet0dtvalidc                 \   d| _         |rt          |          dk     rd S |d d                                         | _        |dd                                          }t          |          dk     rd S t          |d                   | _        t          |d                   | _        d| _         d S )NF<      r      T)r   lenstripr   splitfloatr   r   )selflinetimess      N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trame/tools/profiler.py__init__zRecord.__init__   s    
 	s4yy2~~F"IOO%%	RSS	!!u::>>Fa//a//


    c                 h    || j         k     r|n| j         || j         k    r|n| j         | j        dz  z   fS N  )r   r   )r   	min_value	max_values      r   expend_timezRecord.expend_time    sA    "TW,,II$'"TW,,II$'DGdN2J
 	
r   c                 &    | xj         |z  c_         d S N)r   )r   vs     r   apply_offsetzRecord.apply_offset&   s    1r   c                 r    t          | j        dz            t          | j        dz             | j         ddS )Nr!   r   z ms)xwidthtitle)intr   roundr   r   s    r   rectzRecord.rect)   s@     TWt^$$47Q;''___
 
 	
r   N)	__name__
__module____qualname__	__slots__r   r$   r(   propertyr0    r   r   r   r      sg        ---I  
 
 
   
 
 X
 
 
r   r   c                   R    e Zd Zd Zd Zd Zd Zed             Zed             Z	dS )ProfilerAnalyzerc                    t           j        | _        d| _        i | _        t          |                                          5 }|D ]y}t          |          }|j        s|	                    | j        | j                  \  | _        | _        | j        
                    |j        g                               |           z	 d d d            n# 1 swxY w Y   | j        t          z
  }g }| j                                        D ]A\  }}|                    ||d         j        f           |D ]}|                    |           B|                    d            | xj        |z  c_        d| _        d |D             | _        d S )Nr   c                     | d         S )Nr   r6   )r*   s    r   <lambda>z+ProfilerAnalyzer.__init__.<locals>.<lambda>K   s
    QqT r   )keyc                     g | ]\  }}|S r6   r6   ).0r   _s      r   
<listcomp>z-ProfilerAnalyzer.__init__.<locals>.<listcomp>Q   s    :::WT1D:::r   )mathinfmin_timemax_timetracksr   openr   r   r$   
setdefaultr   appendLABEL_WIDTHitemsr   r(   sorttrack_names)	r   
input_filefiler   recordoffset	tracks_t0r   recordss	            r   r   zProfilerAnalyzer.__init__3   s    *""$$ 		G G G| /5/A/AM4=0 0,t} &&v{B77>>vFFFFG		G 		G 		G 		G 		G 		G 		G 		G 		G 		G 		G 		G 		G 		G 		G ,	![..00 	, 	,MD'dGAJM2333! , ,##F++++,>>*** ;:	:::s   A=CCCc                     g }d}| j         D ]:}| j        |         D ]%}|                    i |j        ||d|           &||z  };|S )Nr   )yheight)rL   rE   rH   r0   )r   rU   add_on	all_rectsrT   r   rO   s          r   rectszProfilerAnalyzer.rectsS   sx    	$ 	 	D+d+ V V  !TFK!Ta6!T!T!TV!TUUUUKAAr   c                 B   g }d}| j         D ]8}|                    dt          | j        dz            ||d|           ||z  }9|                    dt          | j        dz            ||d|           |                    t          | j        dz            t          | j        dz            d||z   d|           t	          ddt          | j        dz            z             D ]7}|                    |t          z   dz  |t          z   dz  |||z   d|           8|S )Nr   r!   )x1x2y1y2r   )rL   rH   r-   rD   ranger+   rI   )r   rU   rV   	all_linesrT   r?   is          r   lineszProfilerAnalyzer.lines\   s   	! 	 	ADMD$8 9 9!VVvV   KAAC 455QaRR6R	
 	
 	

 	$-$.//$-$.//&j	 
 	
 	
 	
 q!c$*t"344455 		 		A{?d2{?d2f*	 
     r   c           
      X   g }d}| j         D ]4}|                    |t          |d|z  z             d|           ||z  }5t          ddt          | j        dz            z             D ]@}|                    | d|t
          z   dz  dz   t          |d|z  z             dd	           A|S )
Nr   g      ?)textrT   r   r!   s   start)rc   r*   rT   ztext-anchor)rL   rH   r-   r^   r+   rI   )r   rU   rV   	all_textsrT   r   r`   s          r   textszProfilerAnalyzer.texts   s    	$ 	 	DdQ5F1G1GRR6RSSSKAA q!c$*t"344455 		 		A GGGk/T1A5Q.//#*	     r   c                 0    t          | j        dz            S r    )r-   rD   r/   s    r   r+   zProfilerAnalyzer.width   s    4=4'(((r   c                 *    t          | j                  S r&   )r   rL   r/   s    r   n_trackszProfilerAnalyzer.n_tracks   s    4#$$$r   N)
r1   r2   r3   r   rX   ra   rh   r5   r+   rk   r6   r   r   r8   r8   2   s        ; ; ;@  # # #J  * ) ) X) % % X% % %r   r8   c                        e Zd Z fdZ xZS )Rectc                 ^     t                      j        di | | xj        g dz  c_        d S )Nr0   )r*   rT   r+   rU   )r0   )superr   _attr_namesr   kwargs	__class__s     r   r   zRect.__init__   sA    **6***9999r   r1   r2   r3   r   __classcell__rs   s   @r   rm   rm      s8        : : : : : : : : :r   rm   c                        e Zd Z fdZ xZS )Linec                 :     t                      j        di | d S )Nr   )r   ro   r   rq   s     r   r   zLine.__init__   s&    **6*****r   rt   rv   s   @r   rx   rx      s8        + + + + + + + + +r   rx   c                        e Zd Z fdZ xZS )Textc                 >     t                      j        d|fi | d S )Nrc   rz   r   txtrr   rs   s      r   r   zText.__init__   s*    ///////r   rt   rv   s   @r   r|   r|      s8        0 0 0 0 0 0 0 0 0r   r|   c                        e Zd Z fdZ xZS )Titlec                 >     t                      j        d|fi | d S )Nr,   rz   r~   s      r   r   zTitle.__init__   s*    #0000000r   rt   rv   s   @r   r   r      s8        1 1 1 1 1 1 1 1 1r   r      c                   N     e Zd Zd fd	Z ed          d             Zd Z xZS )ProfilerViewerNc                    t                                          |           | j        j                            dd           | j        j                                        \  }}t          |j                  | _        | j        j	        | j
        _	        | j        j        dz   t          z  | j
        _        | j                            t                    | j
        _        | j                            t                    | j
        _        | j                            t          d          | j
        _        |                                  d S )Nz--dataT)requiredr   rU      rU   r*   )ro   r   servercliadd_argumentparse_known_argsr8   dataanalyserr+   staterk   HEIGHTrU   rX   ra   rh   	_build_ui)r   r   argsr?   rs   s       r   r   zProfilerViewer.__init__   s       $$X$===+/2244a(33=.
!]3a76A
=..f.==
=..f.==
=..f.CC
r   rP   c           
          | j                             t          t          ddt	          |          z  z                       | j        _        d S )Nr   r!   r   )r   rh   r   r-   r   r   )r   rP   r?   s      r   
_on_offsetzProfilerViewer._on_offset   sG    =.."teFmm++,, / 
 

r   c           	         t          | j                  5 | _        t          j        dt
           d           t          j        dd           t          j        dddd	d
d           t          j	        d           t          j
        ddddg          5  t          ddd          5  t          d           d d d            n# 1 swxY w Y   t          ddt          dz  dt
           fd           t          ddd           t          dd dd!           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )"Nz
                rect { fill:blue; stroke:none; fill-opacity:0.5; }
                line { stroke: black; }
                text { text-anchor: start; font-size: zZpx; }
                rect.bg { fill:#BDBDBD; stroke:black; fill-opacity:1; }
            zTrame profilerztext-align: center;)styler^   r   r
   )zMath.floor(width/1000))rP   r   z width:100%; margin-bottom: 20px;)typeminstepmaxv_modelr   viewSize)z=`${1000 * offset} 0 ${(viewSize?.size?.width||10)} ${height}`)zviewSize?.size?.width || 10r   viewBox)r   r+   rU   __propertieszrect, i in rectsr`   r0   )v_forr<   v_bindz{{ rect.title }})z1000 * offsetr!   z	height - bg)r*   rT   r+   rU   classeszline, i in linesr   z{{ t.text }}zt, i in textst)r   r   uir   Styler   r	   H1InputSizeObserverSvgrm   r   rI   rx   r|   r/   s    r   r   zProfilerViewer._build_ui   s|   t{## #	QtwL  9?      G$,ABBBBJ/%8    
+++ 7"'[   Q Q  2FKKK . .,---. . . . . . . . . . . . . . .(%,0002     -3vFFFF^?CPPPP%Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q##	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Q #	Qs[   B D=D%(C8D%CD%CAD%D=%D)	)D=,D)	-D==EEr&   )r1   r2   r3   r   r   r   r   ru   rv   s   @r   r   r      sy              VH
 
 
$Q $Q $Q $Q $Q $Q $Qr   r   c                  T    t                      } | j                                         d S r&   )r   r   rf   )apps    r   mainr      s'    


CJr   __main__)rA   pathlibr   trame_client.widgets.corer   	trame.appr   trame.decoratorsr   trame.ui.htmlr   trame.widgetsr   r	   rI   r   r8   rm   rx   r|   r   r   r   r   r1   r6   r   r   <module>r      s          1 1 1 1 1 1       # # # # # # # # # # # # & & & & & & & &!
 !
 !
 !
 !
 !
 !
 !
Hj% j% j% j% j% j% j% j%Z: : : : :; : : :+ + + + +; + + +
0 0 0 0 0; 0 0 0
1 1 1 1 1K 1 1 1
 
;Q ;Q ;Q ;Q ;QX ;Q ;Q ;Q|  
 zDFFFFF r   