
    0Fie	                    R    d dl mZ d dlmZ d dlmZ d dlmZ  G d de          ZdS )    )annotations)	key_split)SchedulerPlugin)colorsc                  L    e Zd ZdZd Zd ZddZddZddZddZ	dd	Z
d
 ZdS )WebsocketPlugin	websocketc                "    || _         || _        d S N)socket	scheduler)selfr   r   s      Alib/python3.11/site-packages/distributed/diagnostics/websocket.py__init__zWebsocketPlugin.__init__   s    "    c                <    | j                             di            dS )z&Run when the scheduler restarts itselfrestartNr   send)r   r   kwargss      r   r   zWebsocketPlugin.restart   s     B'''''r   Nc                @    | j                             dd|i           dS )z(Run when a new worker enters the cluster
add_workerworkerNr   r   r   r   r   s       r   r   zWebsocketPlugin.add_worker   %    &'9:::::r   c                @    | j                             dd|i           dS )z$Run when a worker leaves the clusterremove_workerr   Nr   r   s       r   r   zWebsocketPlugin.remove_worker   %    8V*<=====r   c                @    | j                             dd|i           dS )zRun when a new client connects
add_clientclientNr   r   r   r!   r   s       r   r    zWebsocketPlugin.add_client   r   r   c                @    | j                             dd|i           dS )zRun when a client disconnectsremove_clientr!   Nr   r"   s       r   r$   zWebsocketPlugin.remove_client    r   r   c                @    | j                             dd|i           dS )z0Run when a new graph / tasks enter the schedulerupdate_graphr!   Nr   r"   s       r   r&   zWebsocketPlugin.update_graph$   s%    (F);<<<<<r   c                2   || j         j        vrdS ||d<   |                    dg           }|D ]h}t          |d                  }t	          |          t
          ur ||          }|t          |          |d||}	| j                            d|	           idS )a  Run whenever a task changes state

        Parameters
        ----------
        key : string
        start : string
            Start state of the transition.
            One of released, waiting, processing, memory, error.
        finish : string
            Final state of the transition.
        stimulus_id: string
            ID of stimulus causing the transition.
        *args, **kwargs : More options passed when transitioning
            This may include worker ID, compute time, etc.
        Nkey
startstopsaction)r(   namecolor
transition)	r   tasksgetr   typestrr   r   r   )
r   r(   startfinishargsr   r)   	startstopr,   datas
             r   r-   zWebsocketPlugin.transition(   s      dn***FuZZb11
# 	1 	1I9X./EE{{#%%f!#  	
 D K\40000	1 	1r   )NNr   )__name__
__module____qualname__r+   r   r   r   r   r    r$   r&   r-    r   r   r   r   	   s        D# # #( ( (; ; ; ;> > > >; ; ; ;> > > >= = = =1 1 1 1 1r   r   N)	
__future__r   
dask.utilsr   distributed.diagnostics.pluginr   #distributed.diagnostics.task_streamr   r   r:   r   r   <module>r?      s    " " " " " "             : : : : : : 6 6 6 6 6 6>1 >1 >1 >1 >1o >1 >1 >1 >1 >1r   