U
    /e                     @  s  U d dl mZ d dl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 d dlm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 eeejefD ZddiZeeZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G d d! d!eZ(G d"d# d#eZ)d$ed%i fd%e i fd&e"i fd'e!i fd(e#i fd)e$i fd*e&i fd+e'i fd,e%i fd-e(i fd.e)i fgZ*d/e+d0< dS )1    )annotationsN)datetime)firstmerge)escape)WebSocketHandler)format_bytesformat_time)WebsocketPlugin)RequestHandlerredirect)time)
log_errorsc                 C  s   i | ]}|j |qS  )__name__).0funcr   r   C/tmp/pip-unpacked-wheel-g426oqom/distributed/http/scheduler/info.py
<dictcomp>   s    r   rel_path_staticsz../../..c                   @  s   e Zd Zedd ZdS )Workersc              	   C  s2   | j dd| jdt| jj| jjt| jt d S )Nworkers.htmlr   title	scheduler)r   renderserverr   __dict__	__pdict__nsextrar   selfr   r   r   get    s     zWorkers.getNr   
__module____qualname__r   r$   r   r   r   r   r      s   r   c                   @  s   e Zd Zedd ZdS )Workerc              	   C  s\   t |}|| jjkr$| d d S | jdd| | j|dt| jj| jjt	| j
t d S )N  worker.htmlzWorker: )r   r   r(   )r*   )r   url_unescaper   workers
send_errorr   r   r   r   r    r!   r   r#   workerr   r   r   r$   1   s&    

 z
Worker.getNr%   r   r   r   r   r(   0   s   r(   c                   @  s   e Zd Zedd ZdS )
Exceptionsc              	   C  s2   | j dd| jdt| jj| jjt| jt d S )Nexceptions.htmlr0   r   )r1   r   r"   r   r   r   r$   H   s     zExceptions.getNr%   r   r   r   r   r0   G   s   r0   c                   @  s   e Zd Zedd ZdS )Taskc              	   C  s\   t |}|| jjkr$| d d S | jdd| || jdt| jj| jjt	| j
t d S )Nr)   	task.htmlzTask: )r   r2   r   )r3   )r   r+   r   Ztasksr-   r   r   r   r   r    r!   r   )r#   Ztaskr   r   r   r$   Y   s&    

 zTask.getNr%   r   r   r   r   r2   X   s   r2   c                   @  s   e Zd Zedd ZdS )Logsc                 C  s,   | j  }| jdd|dt| jt d S )N	logs.htmlr4   r   logs)r5   )r   Zget_logsr   r   r!   r   )r#   r7   r   r   r   r$   p   s    
 
zLogs.getNr%   r   r   r   r   r4   o   s   r4   c                   @  s   e Zd Zedd ZdS )
WorkerLogsc                   sN   t |}| jj|gdI d H }|| }| jdd| |dt| jt d S )N)r,   r5   zLogs: r6   )r5   )r   r+   r   Zget_worker_logsr   r   r!   r   )r#   r/   r7   r   r   r   r$   |   s    
 
zWorkerLogs.getNr%   r   r   r   r   r8   {   s   r8   c                   @  s   e Zd Zedd ZdS )WorkerCallStacksc                   s\   t |}dd | jj| jD }| jj|dI d H }| jdd| |dt| jt	 d S )Nc                 S  s   h | ]
}|j qS r   )key)r   tsr   r   r   	<setcomp>   s     z'WorkerCallStacks.get.<locals>.<setcomp>keyscall-stack.htmlzCall Stacks: r   
call_stack)r?   )
r   r+   r   r,   
processingget_call_stackr   r   r!   r   )r#   r/   r>   rA   r   r   r   r$      s    
 
zWorkerCallStacks.getNr%   r   r   r   r   r9      s   r9   c                   @  s   e Zd Zedd ZdS )TaskCallStackc                   sV   t |}| jj|gdI d H }|s0| d n"| jdd| |dt| jt d S )Nr=   zG<p>Task not actively running. It may be finished or not yet started</p>r?   zCall Stack: r@   )r?   )	r   r+   r   rC   writer   r   r!   r   )r#   r:   rA   r   r   r   r$      s    
 
zTaskCallStack.getNr%   r   r   r   r   rD      s   rD   c                   @  s   e Zd Zdd ZdS )IndividualPlotsc              	     s   zvddl m  t fdd| jjjD }dd |jD }dd ttj	
tj	tdd	D }||}| | W n" ttfk
r   | i  Y nX d S )
Nr   BokehTornadoc                 3  s   | ]}t | r|V  qd S N)
isinstance)r   ZapprG   r   r   	<genexpr>   s   
z&IndividualPlots.get.<locals>.<genexpr>c                 S  s>   i | ]6}| d dr|ds|d dd |qS )/individual-z.json- lstrip
startswithendswithstripreplacer   r   urir   r   r   r      s
   
 z'IndividualPlots.get.<locals>.<dictcomp>c                 S  sJ   i | ]B}| d dr|dr|d dddd d| qS )rL   rM   z.html rN   rO   z	/statics/rP   rV   r   r   r   r      s    

  z..Zstatic)Zbokeh.server.tornadorH   r   r   Zhttp_applicationZapplicationsZ	app_pathsoslistdirpathjoindirname__file__rE   ImportErrorStopIteration)r#   Zbokeh_applicationZindividual_bokehZindividual_staticresultr   rG   r   r$      s"    zIndividualPlots.getN)r   r&   r'   r$   r   r   r   r   rF      s   rF   c                   @  s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )EventstreamHandlerNc                 C  s0   || _ |pi | _t| | j | _| j | j d S rI   )r   r!   r
   pluginZ
add_plugin)r#   Zdask_serverr!   r   r   r   
initialize   s    
zEventstreamHandler.initializec                 C  s8   ||d< t |D ]}t|| tr||= q| | d S )Nname)listrJ   bytesZwrite_message)r#   re   datakr   r   r   send   s
    zEventstreamHandler.sendc                 C  s"   | j jD ]}| j| j | qd S rI   )r   r,   rc   Z
add_workerr.   r   r   r   open   s    zEventstreamHandler.openc                 C  s2   t |}|d dkr.| ddtt i d S )Nre   ZpingZpong	timestamp)jsonloadsrj   strr   now)r#   messager   r   r   
on_message   s    
zEventstreamHandler.on_messagec                 C  s   | j j| jjd d S )N)re   )r   Zremove_pluginrc   re   r"   r   r   r   on_close   s    zEventstreamHandler.on_close)NN)r   r&   r'   rd   rj   rk   rr   rs   r   r   r   r   rb      s
   
rb   infozinfo/main/workers.htmlzinfo/main/exceptions.htmlzinfo/worker/(.*).htmlzinfo/task/(.*).htmlzinfo/main/logs.htmlzinfo/call-stacks/(.*).htmlzinfo/call-stack/(.*).htmlzinfo/logs/(.*).htmlzindividual-plots.jsonZeventstreamzlist[tuple]routes),
__future__r   rm   loggingrY   os.pathr   Ztlzr   r   Ztornador   Ztornado.websocketr   Z
dask.utilsr   r	   Z!distributed.diagnostics.websocketr
   Zdistributed.http.utilsr   r   Zdistributed.metricsr   Zdistributed.utilsr   fromtimestampr    r   	getLoggerr   loggerr   r(   r0   r2   r4   r8   r9   rD   rF   rb   ru   __annotations__r   r   r   r   <module>   sR    
!