
    0Fie@<                       d dl m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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 d d	lmZ d d
lmZ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* d dl+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2  ej3        e4          Z5 e eej6        7                    ej6        8                    e9          dddd                              Z: eej6        7                    ej6        8                    e9          dd                    Z;dg diZ<dddZ= G d de'          Z> G d d e'          Z? G d! d"e'          Z@ G d# d$e'          ZA G d% d&e'          ZB e=d'd()          d*             ZC e=d+d,)          d-             ZD e=d.d/)          d0             ZE e=d1d2)          d3             ZF e=d4d)          d5             ZGdS )6    )annotationsN)without_property_validation)columnrow)ColumnDataSourceDataRange1d	HoverToolNumeralTickFormatterPanTool	ResetToolWheelZoomTool)	DataTableTableColumn)RdBu)figure)Theme)EnvironmentFileSystemLoader)mergepartition_all)format_bytesformat_time)add_periodic_callback)DashboardComponentProfileServerProfileTimePlotSystemMonitor)_DATATABLE_STYLESHEETS_KWARGS	transposeupdate)time
log_errorsz..http	templates)loaderz
theme.yaml)filenamepages)statussystemprofilezsimple.html)templatec                     fd}|S )Nc                F     t          d           fd            }|S )N   )unroll_stackc                    |_         t                                        |_        
|j        d<   |j                            |           t          |_         | ||          S )Nactive_page)titleenvget_templater,   template_variablesr    BOKEH_THEMEtheme)argextradocr2   fr,   r3   s      Glib/python3.11/site-packages/distributed/dashboard/components/worker.pywrapperz0standard_doc.<locals>.decorator.<locals>.wrapper6   sd    CI++H55CL&8C&}5"))%000#CI1S%%%%    r"   )r<   r>   r2   r,   r3   s   ` r=   	decoratorzstandard_doc.<locals>.decorator5   sI    		#	#	#	& 	& 	& 	& 	& 	& 	& 
$	#	& r?    )r3   r2   r,   r@   s   ``` r=   standard_docrB   4   s0           r?   c                  >    e Zd ZdZd Zeed                         ZdS )
StateTablezCurrently running tasksc                    || _         g d}t          d |D                       | _        d |D             t          d| j        fd|D             ddt          }|| _        d S )NStored	ExecutingReadyWaitingConnectionsServingc                    i | ]}|g S rA   rA   .0names     r=   
<dictcomp>z'StateTable.__init__.<locals>.<dictcomp>L   s    'C'C'CTb'C'C'Cr?   c                2    i | ]}|t          ||           S ))fieldr3   )r   rN   s     r=   rQ   z'StateTable.__init__.<locals>.<dictcomp>N   s'    OOO44t<<<OOOr?   c                     g | ]
}|         S rA   rA   )rO   ncolumnss     r=   
<listcomp>z'StateTable.__init__.<locals>.<listcomp>R   s    ///AWQZ///r?   F   )sourcerV   heightrA   )workerr   rY   r   r   root)selfr[   namestablerV   s       @r=   __init__zStateTable.__init__H   s    UUU&'C'CU'C'C'CDDOOOOO 
;///////
 
 ,	
 
 			r?   c                F   | j         }t          |j                  gd|j        j        |j        j        fz  gt          |j        j                  gt          |j        j                  g|j        j        gt          |j	                  gd}t          | j        |           d S )Nz%d / %drF   )r[   lendatastateexecuting_countnthreadsreadywaitingtransfer_incoming_count_commsr    rY   )r]   wds      r=   r    zStateTable.updateX   s     K16{{m#qw'>@P&QQR!'-(()AGO,,-G;<AH
 
 	t{Ar?   N)__name__
__module____qualname____doc__r`   r   r#   r    rA   r?   r=   rD   rD   E   sO        !!    !
 
 Z ! 
 
 
r?   rD   c                  L    e Zd Zedd            Zeed                         ZdS )CommunicatingStream,  c           
     p   || _         g d}t          d |D                       | _        t          d |D                       | _        t	          d          }t	          d          }t          ddd|||dd	|}|                    | j        d
ddddd           |                    | j        d
ddddd           t          dd          }|                    |t                      t          d          t          d                     || _        d| _        d| _        t                      | _        d S )N)
startstopmiddledurationwhoyhoveralpha	bandwidthtotalc                    i | ]}|g S rA   rA   rN   s     r=   rQ   z0CommunicatingStream.__init__.<locals>.<dictcomp>x       2N2N2N42N2N2Nr?   c                    i | ]}|g S rA   rA   rN   s     r=   rQ   z0CommunicatingStream.__init__.<locals>.<dictcomp>y   r   r?   r   )range_paddingzPeer Communicationsdatetime )r3   x_axis_typex_rangey_rangerZ   toolsrw   rz   rx   g?redr|   )rY   xrz   widthrZ   colorr|   bluefollow_mousez@hoverpoint_policytooltipsr   
dimensionsrA   )r[   r   transfer_incomingtransfer_outgoingr   r   rectr	   	add_toolsr   r   r   r\   "last_transfer_incoming_count_total"last_transfer_outgoing_count_totaldictry   )	r]   r[   rZ   kwargsr^   r   r   figr{   s	            r=   r`   zCommunicatingStream.__init__h   s   
 
 
 "22N2N2N2N2N!O!O!12N2N2N2N2N!O!OA...A... 
'"
 
 
 
 	) 	 	
 	
 	
 	) 	 	
 	
 	
 ~MMMKKw'''W---		
 	
 	
 	23/23/66r?   c                  	 | j         j        	| j         j        | j        z
  }	fdt	          d|dz             D             	| j         j        | _        | j         j        | j         j        j        | j        z
  }fdt	          d|dz             D             | j         j        j        | _        | j	        g	| j
        gfD ]\  }}|D ]}d|v r|d= |d= |d         |d         pdz  }t          t          |d	z  d          d
          }||d<   	 | j        |d                  |d<   nH# t          $ r; t          | j                  | j        |d         <   | j        |d                  |d<   Y nw xY wd                    t#          |d                   t%          |d                   t#          |d         |d         z                      |d<   dD ]}||         dz  ||<   |rt'          |          }t          |j        d                   rIt          |d                   |j        d         d         dz   k    r|j                            |           |                    |d           d S )Nc                F    g | ]}|                                           S rA   copy)rO   itransfer_outgoing_logs     r=   rW   z.CommunicatingStream.update.<locals>.<listcomp>   :     !
 !
 !
12!1"%**,,!
 !
 !
r?   r/   c                F    g | ]}|                                           S rA   r   )rO   r   transfer_incoming_logs     r=   rW   z.CommunicatingStream.update.<locals>.<listcomp>   r   r?   
compressedkeysr~   rx         ?g    eͽA333333?r|   ry   rz   z{} / {} = {}/sr{   )rw   rx   ru   rv     rv   ru   '  )rollover)r[   r   transfer_outgoing_count_totalr   ranger   rd   transfer_incoming_count_totalr   r   r   maxminry   KeyErrorrb   formatr   r   r   rc   r    stream)
r]   rU   msgsrY   msgr}   bwkr   r   s
           @@r=   r    zCommunicatingStream.update   s    !% AK556 	
!
 !
 !
 !
6;Aq1uoo!
 !
 !
 K5 	/ !% AK;56 	
!
 !
 !
 !
6;Aq1uoo!
 !
 !
 K; 	/
 #D$:;"D$:;
 #	8 #	8NT6  + +3&&L)KLC
O,BsC	Y.22C88!G4#xE
3CHH 4 4 4+.tx==DHSZ(#xE
3CHHH4  066 W..J00 WJ!?@@   G A + +A Vd]CFF+  8 F+,,8DM**V[-@-Du-LLLK&&t,,,,MM$M777G#	8 #	8s   D%%AE*)E*N)rs   )rm   rn   ro   r#   r`   r   r    rA   r?   r=   rr   rr   g   sY        > > > Z>@ !<8 <8 Z ! <8 <8 <8r?   rr   c                  :    e Zd Zd Zeed                         ZdS )CommunicatingTimeSeriesc           
        || _         t          g g g d          | _        t          ddd          }t	          dddd|j        j        d	z   gd
d|d|}|                    | j        ddd           |                    | j        ddd           |                    t                      t          d          t          d                     || _        d S )N)r   inoutend N  r   followfollow_intervalr   zCommunication Historyr   皙r      r   r3   r   r   rZ   r   r   r   r   r   )rY   r   rz   r   r   r   r   r   rA   )r[   r   rY   r   r   rd   transfer_incoming_count_limitliner   r   r   r   r\   r]   r[   r   r   r   s        r=   r`   z CommunicatingTimeSeries.__init__   s    &Rr"'E'EFFUEQRSSS 
)"6<EKL
 
 
 
 	sd%@@@se6BBBKKG444mw6W6W6W	
 	
 	
 			r?   c                    | j                             t                      dz  gt          | j        j                  g| j        j        j        gdd           d S )Nr   )r   r   r   r   )rY   r   r!   rb   r[   rj   rd   ri   r]   s    r=   r    zCommunicatingTimeSeries.update  se     	fftm_DK.//0{(@A 
 	
 	
 	
 	
 	
r?   Nrm   rn   ro   r`   r   r#   r    rA   r?   r=   r   r      sI          0 !
 
 Z ! 
 
 
r?   r   c                  :    e Zd Zd Zeed                         ZdS )ExecutingTimeSeriesc           
     p   || _         t          g g d          | _        t          ddd          }t	          dddd|j        j        d	z   gd
d|d|}|                    | j        dd           |                    t                      t          d          t          d                     || _        d S )Nr   rz   r   r   r   r   zExecuting Historyr   r   g?r   r   r   r   rz   )rY   r   rz   r   r   rA   )r[   r   rY   r   r   rd   rf   r   r   r   r   r   r\   r   s        r=   r`   zExecutingTimeSeries.__init__  s    &Rb'9'9::UEQRSSS 
%"6<0367
 
 
 
 	sc222KKG444mw6W6W6W	
 	
 	
 			r?   c                    | j                             t                      dz  g| j        j        j        gdd           d S )Nr   r   )rY   r   r!   r[   rd   re   r   s    r=   r    zExecutingTimeSeries.update(  sJ     	66D=/):)J(KLLd	
 	
 	
 	
 	
r?   Nr   rA   r?   r=   r   r     sI          . !
 
 Z ! 
 
 
r?   r   c                  h    e Zd ZddZed             Zed             Zeed                         ZdS )Countersstretch_bothc                   || _         i | _        i | _        i | _        i | _        | _        | j         j        r$| j         j        D ]}|                     |           | j         j        D ]}| 	                    |           t          | j        | j                  fdt                    D             t                    dk    rt                    | _        d S t          fdt          d          D             di| _        d S )Nc                     g | ]
}|         S rA   rA   )rO   r   figuress     r=   rW   z%Counters.__init__.<locals>.<listcomp>@  s    777!71:777r?      sizing_modec              3  0   K   | ]}t          |d iV  dS )r   N)r   )rO   pairr   s     r=   	<genexpr>z$Counters.__init__.<locals>.<genexpr>F  sD         7;77     r?      r   )servercounter_figurescounter_sourcesdigest_figuresdigest_sourcesr   digestsadd_digest_figurecountersadd_counter_figurer   sortedrb   r   r\   r   )r]   r   r   r   rP   r   s     `  @r=   r`   zCounters.__init__1  sB   !!  &; 	-+ - -&&t,,,,K( 	* 	*D##D))))+T-ABB7777vg777w<<1wK@@@DIII    -a 9 9  
 ( DIIIr?   c                   t          | j        j        |         j                  }d t	          |          D             }i }|                    d          rd|d<   t          d|dd| j        d|}d|j        _	        d|j
        _	        |                    d	          s|                    d
          r t          d          |j        d         _        t	          |          D ]P}dd||z
  z  |z  z   }|                    ||         dd|t          t!          |d                   |                     Qt"          j        dz  |j        _        || j        |<   || j        |<   |S )Nc                4    i | ]}|t          g g d           S )r   r   rO   r   s     r=   rQ   z.Counters.add_digest_figure.<locals>.<dictcomp>P  s+    MMMq1&Rb'9'9::MMMr?   rx   r   r   r   r   )r3   r   rZ   r   Fr}   bytesz0.0b)r   r   r   r   rz      )rY   r   rz   r|   r      rA   )rb   r   r   	intervalsr   endswithr   r   yaxisvisibleygridr
   xaxis	formatterr   r   r   mathpimajor_label_orientationr   r   )r]   rP   rU   sourcesr   r   r   r|   s           r=   r   zCounters.add_digest_figureM  s   #D)344MME!HHMMM==$$ 	/$.F=! 
b$:J
 
NT
 
 "	!	==%% 	Iw)?)? 	I%9%H%H%HCIaL"q 	 	A#Q-!++EHHqz3q!99oqb)      -1GbL	)$+D!$'D!
r?   c                   t          | j        j        |         j                  }d t	          |          D             }t          |dd| j        t          d | j        j        |         j        d         D                                 }d|j	        _
        t	          |          D ]}dd	|z  |z  z   }|                    ||         d
d|ddt          t          |d                   |                     t          dd          }|                    |           t           j        dz  |j        _        || j        |<   || j        |<   |S )Nc           
     8    i | ]}|t          g g g g d           S )r   rz   y-centercountsr   r   s     r=   rQ   z/Counters.add_counter_figure.<locals>.<dictcomp>p  s?     
 
 
 brrR P PQQ
 
 
r?   r   r   c              3  4   K   | ]}t          |          V  d S )NstrrO   r   s     r=   r   z.Counters.add_counter_figure.<locals>.<genexpr>z  s(      TTa3q66TTTTTTr?   r   )r3   r   rZ   r   r   Fr   g?r   r   rz   r   r   )rY   r   rz   r   rZ   r|   r   r   z@x : @countsr   r   )rb   r   r   r   r   r   r   r   
componentsr   r   r   r   r   r	   r   r   r   r   r   r   r   )r]   rP   rU   r   r   r   r   r{   s           r=   r   zCounters.add_counter_figurem  se   $T*455
 
1XX
 
 

 (TT4;+?+E+PQR+STTTTT
 
 
 "	q 	= 	=A#'A+%EHHqz3q!99oqb)     >DVWWWEMM%   04"CI--%,T"%(T"
r?   c                  
 | j                                         D ]\  }}| j        j        |         }i 
t	          |j                  D ]\  }

                                rj
                    d          \  }}|dd          }|                    d          r|dz  }| j	        |         |         j
                            ||d           d||                                fz  |j        _        | j                                        D ]\  }}| j        j        |         }i 
t	          |j                  D ]\  }

rt!          
          }|j        d         |j        |         z  
fd|D             }fd	|D             }d
 |D             }	d |D             }|||	|d
| j        |         |         j
                            
           d||                                fz  |j        _        d |D             |j        _        ьd S )Nd   r/   rx   r   r   z%s: %dr   c                     g | ]
}|         S rA   rA   )rO   r   rl   s     r=   rW   z#Counters.update.<locals>.<listcomp>  s    ///qad///r?   c                    g | ]}|z  S rA   rA   )rO   cfactors     r=   rW   z#Counters.update.<locals>.<listcomp>  s    555&1*555r?   c                    g | ]}|d z  S )r   rA   )rO   rz   s     r=   rW   z#Counters.update.<locals>.<listcomp>  s     3 3 31Q 3 3 3r?   c                ,    g | ]}t          |          S rA   r  r  s     r=   rW   z#Counters.update.<locals>.<listcomp>  s    ---Q#a&&---r?   r   c                ,    g | ]}t          |          S rA   r  r  s     r=   rW   z#Counters.update.<locals>.<listcomp>  s    &:&:&:!s1vv&:&:&:r?   )r   itemsr   r   	enumerater  size	histogramr   r   rc   r    r3   textr   r   r   r   r   r   factors)r]   rP   r   digestr   ysxscounterr   	y_centersrl   r
  s             @@r=   r    zCounters.update  sJ    ,2244 
	> 
	>ID#[(.FA!&"344 Q Q16688 Q[[--FBABBB}}Z00 #d
'-a05<<2B=O=OPPP%v{{}}(==CINN-3355 	; 	;ID#k*40GA!'"455 ; ;1 AB$.q1G4Ea4HHF////B///F5555f555B 3 3 3 3 3I--"---B ryFSSA(.q16==a@@@!)T7<<>>,B!B	&:&:r&:&:&:##;	; 	;r?   N)r   )	rm   rn   ro   r`   r#   r   r   r   r    rA   r?   r=   r   r   0  s           8   Z> ! ! Z!F !; ; Z ! ; ; ;r?   r   zDask Worker Internal Monitorr)   )r2   c           	        t          |           }t          | d          }t          | d          }t          | d          }|j        j        }||j        _        ||j        _        t          ||d           t          ||d           t          ||d           t          ||d           |                    t          |j        |j        |j        |j        d                     d S )Nscale_widthr      )	rD   r   r   rr   r\   r   r   add_rootr   )r[   r:   r;   
statetableexecuting_tscommunicating_tscommunicating_streamxrs           r=   
status_docr"    s    F##J&v=IIIL.v=QQQ.v=QQQ			"B$&!(*%#z3///#|S111#/555#3S999LLO! %%	
 	
 	
    r?   zDask Worker Monitorr*   c                ~    t          | d          }t          ||d           |                    |j                   d S )Nr  r     )r   r   r  r\   )r[   r:   r;   sysmons       r=   systemmonitor_docr&    s@    6}===F#vs+++LLr?   zDask Work Countersr   c                ~    t          | d          }t          ||d           |                    |j                   d S )Nr   r   r$  )r   r   r  r\   )r   r:   r;   r  s       r=   counters_docr(    s@    v>:::G#w,,,LLr?   zDask Worker Profiler+   c                    t          | d|          }|                    |j                   |                                 d S Nr   )r   r;   )r   r  r\   trigger_updater   r:   r;   r+   s       r=   profile_docr-    sB    f.cJJJGLLr?   zDask: Profile of Event Loopc                    t          | d|          }|                    |j                   |                                 d S r*  )r   r  r\   r+  r,  s       r=   profile_server_docr/    sB    FCHHHGLLr?   )H
__future__r   loggingr   osbokeh.core.propertiesr   bokeh.layoutsr   r   bokeh.modelsr   r   r	   r
   r   r   r   bokeh.models.widgetsr   r   bokeh.palettesr   bokeh.plottingr   bokeh.themesr   jinja2r   r   tlzr   r   
dask.utilsr   r    distributed.dashboard.componentsr   'distributed.dashboard.components.sharedr   r   r   r   distributed.dashboard.utilsr   r   r    distributed.metricsr!   distributed.utilsr#   	getLoggerrm   loggerpathjoindirname__file__r4   r7   r6   rB   rD   rr   r   r   r   r"  r&  r(  r-  r/  rA   r?   r=   <module>rH     s   " " " " " "   				 = = = = = = % % % % % % % %                  8 7 7 7 7 7 7 7       ! ! ! ! ! !       0 0 0 0 0 0 0 0 $ $ $ $ $ $ $ $ 0 0 0 0 0 0 0 0 B B B B B B            Y X X X X X X X X X $ $ $ $ $ $ ( ( ( ( ( (		8	$	$k
RW__X..dFKPP    eW\\"'//(33T<HH   >>>?  2?     "    #   D@8 @8 @8 @8 @8, @8 @8 @8F#
 #
 #
 #
 #
0 #
 #
 #
L
 
 
 
 
, 
 
 
@~; ~; ~; ~; ~;! ~; ~; ~;B ,(CCC  DC2 #:::  ;: "
;;;  <; #;;;  <; +>>>  ?>  r?   