
    0Fie                        d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  ej        e          Zd	 Zd
 Zd 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 ZdS )    )annotationsN)mergevalmap)	key_split)coerce_to_addressconnect)AllProgresscolor_of)dumps_functionc                |    t          t          t          j                  j        dfddD                       S )N)allnbytesc                R    i | ]#}|t          t          j        |                   $S  )r   lenstate).0r   allprogresss     Glib/python3.11/site-packages/distributed/diagnostics/progress_stream.py
<dictcomp>zcounts.<locals>.<dictcomp>   s=     	
 	
 	
 6#{0788	
 	
 	
    )memoryerredreleased
processingqueued)r   r   r   r   r   )	schedulerr   s    `r   countsr      sU    sKO,,8JKK	
 	
 	
 	
P	
 	
 	
  r   c                F    |                      t          j                   d S )N)name)remove_pluginr	   r!   )selfargskwargss      r   _remove_all_progress_pluginr&      s$     	K,-----r   c           	        K   t          |           } t          |            d{V }|                    dt          t                    t          t
                    |t          t                    d           d{V  |S )a"  Open a TCP connection to scheduler, receive progress messages

    The messages coming back are dicts containing counts of key groups::

        {'inc': {'all': 5, 'memory': 2, 'erred': 0, 'released': 1},
         'dec': {'all': 1, 'memory': 0, 'erred': 0, 'released': 0}}

    Parameters
    ----------
    address: address of scheduler
    interval: time between batches, in seconds

    Examples
    --------
    >>> stream = await eventstream('127.0.0.1:8786', 0.100)  # doctest: +SKIP
    >>> print(await read(stream))  # doctest: +SKIP
    Nfeed)opsetupfunctionintervalteardown)r   r   writer   r	   r   r&   )addressr,   comms      r   progress_streamr1   !   s      $  ((G!!!!!!!!D
**#K00&v.. &'BCC	
 	
         Kr         c                   dt          | d         | d         j        d          d|z           t                    }fd|                                 D             }|d<   d D             |d	<   fd
t	          |          D             |d<   fdt	          |          D             |d<   fdt	          |          D             |d<   fdt	          |          D             |d<   d D             |d<   g |d<   g |d<   g |d<   g |d<   g |d<   g |d<   g |d<   t          |d         |d         |d         |d         |d         |                    d d!g|z            |d         |d                   D ]E\  }}}}}	}
}}|z  |z  |z   }||z   z  |z  |z   }||z   |z   z  |z  |z   }||z   |z   |z   z  |z  |z   }||z   |z   |z   |	z   z  |z  |z   }||z   |z   |z   |	z   |
z   z  |z  |z   }d"||z   |z   |fz  }|d                             |           |d                             |           |d                             |           |d                             |           |d                             |           |d                             |           |d                             |           G|S )#a  
    >>> msg = {'all': {'inc': 5, 'dec': 1, 'add': 4},
    ...        'memory': {'inc': 2, 'dec': 0, 'add': 1},
    ...        'erred': {'inc': 0, 'dec': 1, 'add': 0},
    ...        'released': {'inc': 1, 'dec': 0, 'add': 1},
    ...        'processing': {'inc': 1, 'dec': 0, 'add': 2},
    ...        'queued': {'inc': 1, 'dec': 0, 'add': 2}}

    >>> progress_quads(msg, nrows=2)  # doctest: +SKIP
    {'all': [5, 4, 1],
    'memory': [2, 1, 0],
    'erred': [0, 0, 1],
    'released': [1, 1, 0],
    'processing': [1, 2, 0],
    'queued': [1, 2, 0],
    'name': ['inc', 'add', 'dec'],
    'show-name': ['inc', 'add', 'dec'],
    'left': [0, 0, 1],
    'right': [0.9, 0.9, 1.9],
    'top': [0, -1, 0],
    'bottom': [-0.8, -1.8, -0.8],
    'color': ['#45BF6F', '#2E6C8E', '#440154'],
    'released-loc': [0.18, 0.225, 1.0],
    'memory-loc': [0.54, 0.45, 1.0],
    'erred-loc': [0.54, 0.45, 1.9],
    'processing-loc': [0.72, 0.9, 1.9],
    'queued-loc': [0.9, 1.35, 1.9],
    'done': ['3 / 5', '2 / 4', '1 / 1']}
    g?r   T)keyreverseNc                6    i | ]\  }|fd D             S )c                <    g | ]}                     |d           S )r   )get)r   r!   vs     r   
<listcomp>z-progress_quads.<locals>.<dictcomp>.<listcomp>c   s%    ...QUU4^^...r   r   )r   kr:   namess     @r   r   z"progress_quads.<locals>.<dictcomp>c   s5    GGG41a.......GGGr   r!   c                R    g | ]$}t          |          d k    r|n|dd         dz   %S )   N   z...)r   r   r!   s     r   r;   z"progress_quads.<locals>.<listcomp>f   s7    WWWc$ii2oodd49u3DWWWr   z	show-namec                    g | ]}|z  S r   r   r   inrowss     r   r;   z"progress_quads.<locals>.<listcomp>g   s    ...e...r   leftc                     g | ]
}|z  z   S r   r   )r   rD   rE   widths     r   r;   z"progress_quads.<locals>.<listcomp>h   s"    777!u*u$777r   rightc                    g | ]}|z   	S r   r   rC   s     r   r;   z"progress_quads.<locals>.<listcomp>i   s    ///!e)///r   topc                "    g | ]}|z   d z
  S )g?r   rC   s     r   r;   z"progress_quads.<locals>.<listcomp>j   s$    888!QY<#%888r   bottomc                ,    g | ]}t          |          S r   r
   rA   s     r   r;   z"progress_quads.<locals>.<listcomp>k   s    333T(4..333r   colorzreleased-locz
memory-locz	erred-loczprocessing-locz
queued-loczno-worker-locdoner   r   r   r   r   	no_workerr   z%d / %d)sortedr9   r   itemsrangezipappend)msgrE   ncolsndrmepqnwalrlmlelplqlnwlrP   r=   rH   s    `                  @@r   progress_quadsri   A   sd   < E3u:3u:>4@@@E/EEM/"EE

AGGGG399;;GGGAAfIWWQVWWWAkN....U1XX...AfI77777eAhh777AgJ////eAhh///AeH8888uQxx888AhK33U333AgJAnAlOAkNAAlOAoAfI#&	*	(	'
	,	(	kA37##	%	&		$ 	$  1aAr1a QY]Qa!e_q 1$a!eai 1$q(a!eai!m$q(1,a!eai!ma'(1,q0q1uqy1}q(2-.2Q6AEAIq>)	.  $$$	,r"""	+b!!!	
""2&&&	,r"""	/!!#&&&	&	Hr   c                f    | d         dk    r$t          | d                   }t          |          S dS )NstatusOKr5   black)r   r   )rW   splits     r   color_of_messagero      s3    
8}#e*%%wr   redorangegray)transfer
disk-write	disk-readdeserializecomputeg?   )rs   rw   rv   rt   ru   z	transfer-zdisk-write-z
disk-read-zdeserialize- c                   |d         }t          |          }|                    dg           }|D ]}t          |d                  }t          |          t          ur ||          }| d                             |d         |d         z   dz  dz             | d                             d|d         |d         z
  z             | d                             |           | d	                             t          |d                  |z              | d
                             |           | d                             t          |d                             | d                             |d                    d|d         |d         fz  }| d                             |           ||vrt          |          dz  ||<   | d                             ||                    t          |          S )Nr5   
startstopsactionstartstop   i  durationr!   rO   alphaworkerz%s-%dthreadworker_thready)	r   r9   colorstypestrrV   prefixalphasr   )	listsrW   workersr5   r!   r{   	startstoprO   r   s	            r   task_stream_appendr      s   
e*CS>>Dr**J 2 2	y*+;;c!!E#JJEgy1If4EEJTQRRRj  6):Yw=O)O!PQQQeC   fVIh$784?@@@ge$$$gfYx%89:::hs8}---3x=#h-"@@o%%m444''%(\\A%5GM"c
'-01111z??r   )r2   r3   )
__future__r   loggingtlzr   r   
dask.utilsr   distributed.corer   r    distributed.diagnostics.progressr	   distributed.utilsr   distributed.workerr   	getLogger__name__loggerr   r&   r1   ri   ro   r   r   r   r   r   r   r   <module>r      sp   " " " " " "                      7 7 7 7 7 7 7 7 8 8 8 8 8 8 & & & & & & - - - - - -		8	$	$  . . .  @L L L L^   
 
 
 
 !
 
    r   