
    Be	=                        d dl Zd dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z
d dlZd dlZd dlmZ d dlmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZ dd	lmZm Z  dd
l!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddlm*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m4Z4 i Z5g Z6 G d dej7                  Z8 G d dej9                  Z: G d dej;                  Z< G d de&          Z= e%dg           Z> e'd          Z? e%dg d           Z@ e'd!          ZA e:            ZB e<eB          ZC ej;                    ZDeDE                    ejF                    e-jG        eD            e-jG        eC            e8            ZHeDI                    eH           eCI                    eH            ejJ        d"          ZKeDL                    eK            e=d#d$%          ZMeDN                    eM           d& ZOeMP                    e@d'           eMP                     eeOeAd()                     eMP                    e>d*           eMP                     eeOe?d+)                     d, ZQ e$d-          ZReRS                    eQ           eMT                    d.d/d0d1d2i3          \  ZUZVd4d5d6d7d8d9d:ZWdGd;ZXd< ZYd= ZZd> Z[d? Z\d@ Z]dA Z^dGdBZ_dGdCZ`dD ZadE ZbdF ZcdS )H    N)partial)	HoverTool)ColumnDataSourcefigure   )configpanel_extension)bind)	AccordionColumnFlexBoxRowTabs)HTMLBokeh)FastListTemplate)ButtonMultiSelect	Tabulator	TextInput)Trend   )LOG_SESSION_CREATEDLOG_SESSION_DESTROYEDLOG_SESSION_LAUNCHINGpanel_logger)push_notebook)profiling_tabs)
set_curdoc)statec                       e Zd Zd ZdS )	LogFilterc                     d|j         vrdS |j        d         }|t          v rdS |t          j        vr|gt          j        z   t          _        dS )NSession Tr   F)msgargslog_sessionssession_filteroptions)selfrecord
session_ids      .lib/python3.11/site-packages/panel/io/admin.pyfilterzLogFilter.filter+   sT    VZ''4[^
%%5~555&0\N4J%JN"t    N)__name__
__module____qualname__r.    r/   r-   r"   r"   )   s#            r/   r"   c                   ,    e Zd Z ej                    ZdS )DataN)r0   r1   r2   paramListdatar3   r/   r-   r5   r5   6   s        5:<<DDDr/   r5   c                   $     e Zd Z fdZd Z xZS )LogDataHandlerc                 V    t                                                       || _        d S N)super__init___data)r*   r8   	__class__s     r-   r>   zLogDataHandler.__init__=   s$    


r/   c                     d|j         vrd S | j        j                            |           | j        j                            d           d S )Nr$   r8   )r%   r?   r8   appendr6   trigger)r*   r+   s     r-   emitzLogDataHandler.emitA   sK    VZ''F
v&&&
  (((((r/   )r0   r1   r2   r>   rD   __classcell__r@   s   @r-   r:   r:   ;   sG            ) ) ) ) ) ) )r/   r:   c                   X     e Zd Zddddddgddd	d
Z fdZedd            Zd Z xZS )_LogTabulatormidnightfit_data_stretchFdatetimedsc)fielddirTlocal   )themelayout
show_indexsortersdisabled
pagination	page_sizec                 ~    |                                  |d<   i | j        |} t                      j        di | d S )Nvaluer3   )_create_frame_update_defaultsr=   r>   )r*   paramsr@   s     r-   r>   z_LogTabulator.__init__T   sM    ,,..w4D)4V4""6"""""r/   Nc                 d    g d}| t          j        |          S t          j        | |          S )N)rK   levelappsessionmessagecolumns)index)pd	DataFrameSeries)r8   rc   s     r-   rZ   z_LogTabulator._create_frameY   s:    BBB<<00009T1111r/   c                    	 |                                                     d          }|d          d|d          }|d         d d         }|d         }t          |d                   }d                    |dd                    }|                     |||||g          }|                     |d	
           d S # t          $ r Y d S w xY w)N r   r   r            F)follow)stripsplitintjoinrZ   stream	Exception)	r*   logsrK   r^   r_   r`   ra   dfs	            r-   writez_LogTabulator.writea   s    			!!#&&AA$''1''HaD"IEA$C!A$iiGhhquooG##Xuc7G$LMMBKK5K))))) 	 	 	DD	s   B5B9 9
CCr<   )	r0   r1   r2   r[   r>   staticmethodrZ   rx   rE   rF   s   @r-   rH   rH   H   s         $(778 # # # # #
 2 2 2 \2      r/   rH   zFilter by session)namer)   zFilter by message)rz   zFilter by level)DEBUGINFOWARNINGERRORzFilter by appz1%(asctime)s %(levelname)s: %(name)s - %(message)sstretch_bothi  )sizing_mode
min_heightc                     |r| j         r| S | | |         j                            |                                                   S r<   )emptystrcontainscopy)rw   patterncolumns      r-   _textinput_filterr      sC     bh 	bjn%%g../44666r/   r^   r_   )r   r   r`   ra   c                  f    g t           _        dt          _        g t          _        dt          _        d S )N )level_filterrY   
app_filterr(   message_filter)eventss    r-   _clear_log_filtersr      s(    LJNNr/   zClear filterszEnter filename for logfilezlog.csv)rz   rY   rz   zDownload logfile)text_kwargsbutton_kwargsMediumSeaGreenredOrange
DodgerBlueVioletwhite)initializing	destroyed	rendering
processingperiodicloggingc                 f   	 g t          t                    dd          t          g g g g g g g g g d	          dj        _                            ddd	d
dddd	  	         dj        _                            t          g dddd                     dfd	t          j        j        D ]}	  |           # t          $ r Y w xY w fd}t          j        j                            |d          	 r	fd}                     |           t#                    S )NrK   r   )y_rangex_axis_typer   )	x0x1y0y1r%   r`   color
line_colortype)r8   Sessionsr   r   r   r   r   r   gffffff?r   )	leftrighttopbottomsourcer   
fill_coloralphalegend_fieldtop_left))Startz
@x0{%F %T})Endz
@x1{%F %T})Sessionz@session)Messagez@msg)z@x0z@x1)tooltips
formattersFc           
         t          | j        d                   }|vr                    |           d| j        v r|                                 }d}	 j        d                             |                    dd                    }n# t          $ r Y d S w xY w|| j	        dz  fg|t          |         fg||fg||                    dd          fgd	}                    |           n| j        t          k    rkj        d                             t          |z            }d
}|| j	        dz  fg|t          |         fg||fg|d| dfgd	}                    |           n~d| j        v rd}|                                 }j        d                             |                    dd                    }|| j	        dz  fg|t          |         fg||fgd}                    |           n| j                            d          r	 j        d                             d| d          }j        d         |         }n# t          $ r | j	        dz  }Y nw xY wd}|g| j	        dz  g|dfg|dfg|g|                                                     dd          gt          |         gdg|gd	}                    |           n|                                 }d}	|                    d|z            rd}t                              |          }	n]|                    t&          |z            rd}t                              |          }	n#d|v rd}t                              |          }	nd}| j	        dz  g| j	        dz  g|dfg|dfg|g|gt          |         g|	g|gd	}j        j        k    rt-                    j        _                            |           |rt/          
           d S d S )Nr   zfinished processing eventsr   r%   zfinished processingreceived  	processed)r   r   r   r%   r   r$   z initializingz$finished executing periodic callbackr   zfinished executing	executing)r   r   r   renderedr   r   g      пg      ?black)	r   r   r   r   r`   r%   r   r   r   zSession %s loggedr   r   zexecuting periodic callback)r   r&   rB   r%   
getMessager8   rd   replacert   createdEVENT_TYPESpatchr   r   endswith
ValueErrorrs   
startswithgetr   r   factorslistr   )newnbsidr%   etyperd   r   r   eventr   bk_panecdspsessionss             r-   
update_cdsz get_timeline.<locals>.update_cds   s   #(1+hOOC   '3722..""C E--ckk:OQ[.\.\]]    s{4/01 +e"456(,A; O OPQ	 E IIeW+++HUO))*?#*EFFE"Es{4/01 +e"456( =3 = = =>?	 E IIe3sw>>E..""CHUO))#++6JK*X*XYYEs{4/01 +e"456( E
 IIeWj)) .	&--.K.K.K.KLLXd^E* & & &[%&Ed{4'(T{mSzl5((00[IIJ%e,-&i
 
E JJu..""C J~~1C788 
%!(__U33

 5 ;<< %#(__U33

.#55"(__U33

${4'({4'(T{mSzl5u%e,-)l
 
E y H,,$(NN	!JJu 	#'"""""	# 	#s$   4B
 

BB7I IIc                     | j         d         }r%                    t          |                     d S  |d           d S )Nrj   T)r   )r   add_next_tick_callbackr   )r   r   docr   s     r-   schedule_cds_updatez)get_timeline.<locals>.schedule_cds_update&  sU    im 	%&&wz3'?'?@@@@@Jst$$$$$$r/   r8   c                 P    t           j        j                                       d S r<   )log_data_handlerr?   r6   unwatchsession_contextwatchers    r-   _unwatch_dataz#get_timeline.<locals>._unwatch_data/  s#    "(0099999r/   )F)r   r   r   yaxis
axis_labelquadlegendlocation	add_toolsr   r   r?   r8   rt   r6   watchon_session_destroyedr   )
r   r+   r   r   r   r   r   r   r   r   s
   `   @@@@@@r-   get_timeliner      s   H 	XJN	 	 	A "Br"b! !   C $AGFF4SG3    
 #AHKK	
 
 
 &j99     V# V# V# V# V# V# V# V# V#p #(-  	Jv 	 	 	D	% % % % % % $*001DfMMG
 0	: 	: 	: 	: 	:  ///AhhGNs   ?C
CCc                      ddl m}  t          dt          j                            d          d          d|  dt          j         dt          j         d	d	d	d
          S )Nr   __version__zZ
    <h4>
    Panel Server running on following versions:
    </h4>
    <code>
    Python |z</br>
    Panel: z</br>
    Bokeh: z</br>
    Param: z</br>
    </code>,  )r      )widthheightmargin)panelr   r   sysversionrp   bokehr6   r   s    r-   get_version_infor   6  s    !!!!!! 	
 Kc""1%	 	 	 	 	 	 	 	 	 #f	6 	6 	6 	6r/   c                     dd l } t          j                    t          v rt          t          j                             }nA|                     t          j                              xt          t          j                    <   }|S )Nr   )psutilosgetpid	PROCESSESProcess)r   processs     r-   get_processr   C  sZ    MMM	y{{iBIKK(+1>>")+++F+FF	")++Nr/   c                      t          j        t          j                    t                                                      j        dz  dz  fgddg          S )Ni   timememoryrb   )re   rf   r   r   memory_inforssr3   r/   r-   get_memr  K  sI    <$)++{}}'@'@'B'B'Ft'KD'PQR]cem\noooor/   c                      t          j        t          j                    t                                                      fgddg          S )Nr   cpurb   )re   rf   r   r   cpu_percentr3   r/   r-   get_cpur  N  s:    <$)++{}}'@'@'B'BCDvW\o^^^^r/   c            	         t          t                      dddddd          t          t                      dddddd          fd	} t          j        | d
d          }d|_        |                                 fS )Nr   r  stepzMemory Usage (MB)r   r8   plot_xplot_y	plot_typerz   r   r   r  zCPU Usage (%)c                                           t                                                       t                                 d S r<   )rs   r  r  )r  r  s   r-   update_statsz&get_process_info.<locals>.update_statsZ  s5    gii   

799r/   r   F)periodstart)r   r  r  r    add_periodic_callbackru   r  )r  stats_cbr  r  s     @@r-   get_process_infor  Q  s    YYvh& C  F YYvevC  C      *<ERRRHHLNN3;r/   c                  v  	
 g g g }}} t           j        d         }t          |                                          D ]\  }

d         d u }t	          
fd|                                D                       dz   }
d         $|                    
d         
d         z
             |s$|                     
d         
d         z
             | rt          j        |           nd}|rt          j        |          nd}|                    
d         ||dz   ||f           |sd	}d}d}t          j	        
                                                                	t	          	fd
|                                D                       }|                    	||dz   ||f           t          j        |g d          S )Nr   endedc                 l    g | ]0}|d          d          k     r|d         r|d         d          k    .d1S launchedr  r   r3   ).0rv   r`   s     r-   
<listcomp>z$get_session_data.<locals>.<listcomp>g  sW     
 
 
}wz2227 3 zGJ,??? ???r/   r   r   startedr  r   rj   c                 T    g | ]$}|d          k     r|d         r|d         k    "d%S r  r3   )r  rv   nows     r-   r  z$get_session_data.<locals>.<listcomp>x  sM       Z=3wZ W:++ 	
+++r/   )r   livetotalrenderdurationrb   )r    session_info	enumeratevaluessumrB   npmeandtrK   r  	timestampre   rf   )	durationsrendersr   r$  iis_liver   r#  r"  r  r`   s            @@r-   get_session_datar0  b  s
   #%r2wI%j1L 3 3 5 566 L L
7'"d* 
 
 
 
#**,,
 
 
   	
 :*NN7:.wy/AABBB 	CWW-gj.AABBB)29279%%%%,3!!!!,dAaCJKKKK 
+//


%
%
'
'C    &&((    D
 OOS$!VX6777<*Y*Y*YZZZZr/   c           	         t                      }t          |ddg         dddddd          t          |ddg         dddddd          t          |dd	g         dd	dd
dd          t          |ddg         dddddd          fd}t          j                            |d          | rfd}|                     |           fS )Nr   r!  r
  zTotal Sessionsr   r  r   zActive Sessionsr"  zAvg. Time to Render (s)r#  zAvg. Session Duration (s)c                 h    t                      }fD ]}||j        |j        g         |_        d S r<   )r0  r  r  r8   )r   rw   trendactiver#  r"  r!  s      r-   update_session_infoz-get_session_info.<locals>.update_session_info  sG    VVX6 	: 	:EU\5<89EJJ	: 	:r/   r$  c                 F    t           j                                       d S r<   )r    r6   r   r   s    r-   _unwatch_session_infoz/get_session_info.<locals>._unwatch_session_info  s    K(((((r/   )r0  r   r    r6   r   r   )	r   rw   r5  r7  r4  r#  r"  r!  r   s	       @@@@@r-   get_session_infor8    sX   			B!"6'VS  E  !&6c#  F "#F8v&c#  F $%fZSY(C  H
: : : : : : : : k 3^DDG
 8	) 	) 	) 	) 	)  !6777&&(**r/   c                     t          t          |           ddd}t                      }	 dd l}|                    g t                      |           |S # t          $ r |                    |           |cY S w xY w)Nr   stretch_widthr   r   )r   r8  r   r   extendr  rt   rB   )r   rR   infor   s       r-   get_overviewr>    s    &s++A?SSSFD
 	1(**1D1222    ds   A !A98A9c                      t           j                            d           t          t	          dt          t          t          t          t          t          t          t          t                    d          fg ddd          t           d          S )	NrY   zFilters & Downloadr:  )r   z#444444z#333333)r4  active_header_backgroundheader_backgroundr   r   )log_terminalr6   rC   r   r   r   r   r   r(   r   download_filenamedownload_buttonreset_filterr3   r/   r-   log_componentrF    s    w'''!3%#  
 ,$ $ $  %.''!	
 	
 	
$ 	")   r/   c                     t          dd           t                              t                                 fd}                     |           t          dd          }t          dt                     fdt                     fd	d
          }t          j
        r+|                    dt          t          dd           f           |                    dt          t          d d          fdt                      fg           |                    d t          j        D                        |j                            |           |S )N	tabulatorterminalc                 V    t                               t                               d S r<   )r'   removeid)r   r   s    r-   _remove_log_sessionz+admin_template.<locals>._remove_log_session  s#    BsGG$$$$$r/   zAdmin Paneldark)titlerQ   OverviewTimeliner   r   r;  zLaunch Profilingz^\/.*zUser ProfilingLogsc                 ,    g | ]\  }}| |            fS r3   r3   )r  rz   plugins      r-   r  z"admin_template.<locals>.<listcomp>  s4       )T6vvxx  r/   )	extensionr'   rB   rL  r   r   r   r>  r   r   profilerr   r    r<  rF  admin_pluginsmain)r   rM  templatetabss   `   r-   admin_templater[    sp   k:&&&3   % % % % %0111  m6BBBH	\#&&'	\#&&'"	  D  
x!F!FG	
 	
 	
 	KK	>%x@@A	!    	KK  -3-A      MOr/   c                     t          |           5  t          |           }|                    |            d d d            n# 1 swxY w Y   | S r<   )r   r[  
server_doc)r   rY  s     r-   admin_panelr^    s    	C ! !!#&&C   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Js   %AAAr<   )drK   r*  r   r   r   r   	functoolsr   r   numpyr(  pandasre   r6   bokeh.modelsr   bokeh.plottingr   r   r   r	   rU  dependsr
   rR   r   r   r   r   r   paner   r   rY  r   widgetsr   r   r   r   widgets.indicatorsr   r   r   r   r   notebookr   profiler   serverr   r    r   r'   Filterr"   Parameterizedr5   StreamHandlerr:   rH   r(   r   r   r   r8   r   log_handlersetLeveladmin_log_level
addHandler
log_filter	addFilter	Formatter	formattersetFormatterrB  	setStreamr   
add_filterr   rE  on_clickdownload_menurC  rD  r   r   r   r   r  r  r  r0  r8  r>  rF  r[  r^  r3   r/   r-   <module>r{     s        				 



                  " " " " " " 3 3 3 3 3 3 3 3 9 9 9 9 9 9 9 9                            ' ' ' ' ' '            ' & & & & &            $ # # # # # # # # # # #            	
 
 
 
 
 
 
 
    5   

) 
) 
) 
) 
)W* 
) 
) 
)' ' ' ' 'I ' ' 'V "5rBBB 3444{ 1;`;`;`aaaYO,,,
tvv!>$'' #g#%%   V+ , , ,   $ $ $  ( ) ) )Y[[
   j ! ! !   : & & &GQRR	    # # #}CHHH   l # # #7 7 7
   g . . .   .
5QQQ R R R   	 2 2 2   .yYYY Z Z Z   v?+++   ( ) ) ) &2%?%?5	JJ-. &@ & & " ? % H H H HT6 6 6  p p p_ _ _  "[ [ [<+ + + +<
 
 
 
  6  <    r/   