U
    ÷Õ/eƒ	  ã                   @  sD   d dl mZ d dlmZ d dlmZ d dlmZ G dd„ deƒZdS )é    )Úannotations)Ú	key_split)ÚSchedulerPlugin)Úcolorsc                   @  sZ   e Zd ZdZdd„ Zdd„ Zddd„Zdd	d
„Zddd„Zddd„Z	ddd„Z
dd„ ZdS )ÚWebsocketPluginZ	websocketc                 C  s   || _ || _d S )N)ÚsocketÚ	scheduler)Úselfr   r   © r
   úE/tmp/pip-unpacked-wheel-g426oqom/distributed/diagnostics/websocket.pyÚ__init__   s    zWebsocketPlugin.__init__c                 K  s   | j  di ¡ dS )z&Run when the scheduler restarts itselfÚrestartN©r   Úsend)r	   r   Úkwargsr
   r
   r   r      s    zWebsocketPlugin.restartNc                 K  s   | j  dd|i¡ dS )z(Run when a new worker enters the clusterÚ
add_workerÚworkerNr   ©r	   r   r   r   r
   r
   r   r      s    zWebsocketPlugin.add_workerc                 K  s   | j  dd|i¡ dS )z$Run when a worker leaves the clusterÚremove_workerr   Nr   r   r
   r
   r   r      s    zWebsocketPlugin.remove_workerc                 K  s   | j  dd|i¡ dS )zRun when a new client connectsÚ
add_clientÚclientNr   ©r	   r   r   r   r
   r
   r   r      s    zWebsocketPlugin.add_clientc                 K  s   | j  dd|i¡ dS )zRun when a client disconnectsÚremove_clientr   Nr   r   r
   r
   r   r   !   s    zWebsocketPlugin.remove_clientc                 K  s   | j  dd|i¡ dS )z0Run when a new graph / tasks enter the schedulerÚupdate_graphr   Nr   r   r
   r
   r   r   %   s    zWebsocketPlugin.update_graphc           
      O  sv   || j jkrdS ||d< | dg ¡}|D ]H}t|d  }t|ƒtk	rL||ƒ}|t|ƒ|dœ||–}	| j d|	¡ q(d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.
        *args, **kwargs : More options passed when transitioning
            This may include worker ID, compute time, etc.
        NÚkeyÚ
startstopsÚaction)r   ÚnameÚcolorÚ
transition)	r   ZtasksÚgetr   ÚtypeÚstrr   r   r   )
r	   r   ÚstartÚfinishÚargsr   r   Z	startstopr   Údatar
   r
   r   r   )   s     ýûzWebsocketPlugin.transition)NN)NN)NN)NN)N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r   	   s   




r   N)	Ú
__future__r   Z
dask.utilsr   Zdistributed.diagnostics.pluginr   Z#distributed.diagnostics.task_streamr   r   r
   r
   r
   r   Ú<module>   s   