
    0Fie-                        d dl mZ d dlZd dlmZ d dlZd dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ  ej        e          Z G d d	e          Zdd
Zd ZddddedZddddddZddddddZdS )    )annotationsN)deque)format_time	key_splitparse_timedelta)SchedulerPlugin)color_of)timec                  0    e Zd ZdZddZd Zd	dZd
dZdS )TaskStreamPluginztask-streamNc                    |Jt          t          j                            d          t          j                            d                    }t	          |          | _        || _        d| _        d S )Nz9distributed.scheduler.dashboard.status.task-stream-lengthz8distributed.scheduler.dashboard.tasks.task-stream-length)maxlenr   )maxdaskconfiggetr   buffer	schedulerindex)selfr   r   s      Clib/python3.11/site-packages/distributed/diagnostics/task_stream.py__init__zTaskStreamPlugin.__init__   sj    >O  N 	 F 6***"


    c                    |dk    rd|| j         j        vrd S |                    d          sd S ||d<   |dk    s|dk    r.| j                            |           | xj        dz  c_        d S d S d S )N
processing
startstopskeymemoryerred   )r   tasksr   r   appendr   )r   r   startfinishargskwargss         r   
transitionzTaskStreamPlugin.transition!   s    L  $....::l++ F5M!!Vw%6%6""6***

a



 !  &7%6r   c                     fdt          |t                    rt                      t          |          z
  }| |dt	           j                            }t          |t                    rt                      t          |          z
  }| |dt	           j                            }|1||t	           j                  }||z
  }n||||z
  }n	||||z   }|t	           j                  }|d}t          d|          }t          |t	           j                            } fdt          ||          D             S )Nc                    ||k    r|S ||z   dz  }t          d j        |         d         D                       }|| k     r | |dz   |          S  | ||          S )N   c              3  &   K   | ]}|d          V  dS )stopN ).0	startstops     r   	<genexpr>z;TaskStreamPlugin.collect.<locals>.bisect.<locals>.<genexpr>3   s8        &/	&!     r   r   r    )r   r   )targetleftrightmidvaluebisectr   s        r   r6   z(TaskStreamPlugin.collect.<locals>.bisect.   s    u}}%<A%C  37;s3CL3Q    E v~~vfcAgu555vfdC000r   r   c                *    g | ]}j         |         S r-   )r   )r.   ir   s     r   
<listcomp>z,TaskStreamPlugin.collect.<locals>.<listcomp>W   s    ;;;1A;;;r   )	
isinstancestrr
   r   lenr   r   minrange)r   r#   r,   countr6   s   `   @r   collectzTaskStreamPlugin.collect-   ss   	1 	1 	1 	1 	1 	1 eS!! 	4FF_U333EF5!S%5%566EdC   	266OD111D6$3t{#3#344D}4;''u4#3u"t|u}<t{##D=EAu4T[))**;;;;eT(:(:;;;;r   r   c                   g }| j         t          | j                  z
  }|| j         }t          t	          d|pd|z
            |r||z
  n|          D ]$}| j        |         }|                    |           %t          |||          S )Nr   )workersstart_boundary)r   r<   r   r>   r   r"   
rectangles)	r   istartistoprB   rC   msgsdiffr8   msgs	            r   rD   zTaskStreamPlugin.rectanglesY   s    zC,,,=JEs1v{d233U5UUT\\PUVV 	 	A+a.CKK$OOOOr   )N)NNN)NNr   )__name__
__module____qualname__namer   r'   r@   rD   r-   r   r   r   r      sk        D   
  
  
 *< *< *< *<X	P 	P 	P 	P 	P 	Pr   r   c                L   |i }g }g }g }g }g }g }g }	g }
g }g }| D ]}|d         }t          |          }|                    dg           }	 d|d         |d         fz  }n# t          $ r Y Qw xY w||vrt          |          d
z  ||<   |D ]}|d         |k     rt          |d                  }t          |          t          ur ||          }|	                    |d         |d         z   d
z  dz             |	                    d|d         |d         z
  z             |	                    t          |d         |d         z
                       |	                    |           |	                    t          |d                  |z              |	                    |           |		                    t          |d                             |
	                    |d                    |	                    |           |	                    ||                    |||||||	|
||d
S )Nr   r   z%s-%dworkerthreadz%Message contained bad information: %sT)exc_info r*   r#   actionr,   i  )
r#   durationduration_textr   rM   coloralpharO   worker_thready)r   r   	Exceptionloggerwarningr<   colorstyper;   r"   r   prefixalphas)rG   rB   rC   L_start
L_durationL_duration_textL_keyL_nameL_colorL_alphaL_workerL_worker_threadL_yrI   r   rM   r   rX   r/   rV   s                       r   rD   rD   e   sz   GJOEFGGHO
C / /%j~~WW\2..
	#s8}c(m&DDMM 	 	 	H	
 ''%(\\A%5GM"# 	/ 	/I!N229X./EE{{#%%c

NNIg.61BBaG$NOOOdi&7)G:L&LMNNN"";y/@9WCU/U#V#VWWWLLMM&8!45<===NN5!!!NN6)H"56777OOCM***""=111JJw}-....!	/& ((  s   A  
A-,A-c                f    | d         dk    r$t          | d                   }t          |          S dS )NstatusOKr   black)r   r	   )rI   splits     r   color_of_messagerp      s3    
8}#e*%%wr   redorangegray)transfer
disk-write	disk-readdeserializecomputeg?r    )rt   rx   rw   ru   rv   z	transfer-zdisk-write-z
disk-read-zdeserialize-rR   )Nr   )
__future__r   loggingcollectionsr   r   
dask.utilsr   r   r   distributed.diagnostics.pluginr   'distributed.diagnostics.progress_streamr	   distributed.metricsr
   	getLoggerrJ   r[   r   rD   rp   r]   r`   r_   r-   r   r   <module>r      s[   " " " " " "         > > > > > > > > > > : : : : : : < < < < < < $ $ $ $ $ $		8	$	$RP RP RP RP RP RP RP RPj: : : :z   
 
 
 
 !
 
r   