
    0Fiee                       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 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 e
rd dlmZ d eeej         efD             Z!ddiZ" ej#        e$          Z% G d de          Z& G d de          Z' G d de          Z(d:dZ) G d d e          Z* G d! d"e          Z+ G d# d$e          Z, G d% d&e          Z- G d' d(e          Z. G d) d*e          Z/ G d+ d,e          Z0d- ed.          i fd.e&i fd/e(i fd0e'i fd1e*i fd2e+i fd3e-i fd4e.i fd5e,i fd6e/i fd7e0i fgZ1d8e2d9<   dS );    )annotationsN)Hashable)datetime)TYPE_CHECKING)firstmerge)escape)WebSocketHandler)format_bytesformat_time)WebsocketPlugin)RequestHandlerredirect)time)
log_errors)	Schedulerc                    i | ]
}|j         |S  )__name__).0funcs     ?lib/python3.11/site-packages/distributed/http/scheduler/info.py
<dictcomp>r      s,        	M4      rel_path_staticsz../../..c                  $    e Zd Zed             ZdS )Workersc                     | 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   selfs    r   getzWorkers.get%   sf    	
k	
 	
 $%
  		
 	
 	
 	
 	
r   Nr   
__module____qualname__r   r,   r   r   r   r   r   $   -        
 
 Z
 
 
r   r   c                  $    e Zd Zed             ZdS )Workerc                   t          j        |          }|| j        j        vr|                     d           d S  | j        	 dd|z   | j        |dt          | j        j        | j        j        t          | j
        t                     d S )N  worker.htmlzWorker: )r!   r"   r2   )r5   )r	   url_unescaper%   workers
send_errorr$   r   r&   r'   r(   r)   r   r+   workers     r   r,   z
Worker.get6   s    $V,,,,,OOC   F	
v%k		
 	

 $%
  	
 	
 	
 	
 	
r   Nr-   r   r   r   r2   r2   5   s-        
 
 Z
 
 
r   r2   c                  $    e Zd Zed             ZdS )
Exceptionsc                     | j         	 dd| j        dt          | j        j        | j        j        t
          | j        t                     d S )Nexceptions.htmlr<   r    )r>   r#   r*   s    r   r,   zExceptions.getM   sf    	
k	
 	
 $%
  		
 	
 	
 	
 	
r   Nr-   r   r   r   r<   r<   L   r0   r   r<   keystrr"   r   returnr   c                b    |j         D ]}t          |          | k    r|c S t          |           N)tasksr@   KeyError)r?   r"   ks      r   _get_actual_scheduler_keyrG   ]   s<    _  q66S==HHH 
3--r   c                  $    e Zd Zed             ZdS )Taskc                D   t          j        |          }	 t          || j                  }n&# t          $ r |                     d           Y d S w xY w | j        	 dd|z   || j        dt          | j        j        | j        j	        t          | j        t                     d S )Nr4   	task.htmlzTask: )r!   rI   r"   )rK   )r	   r6   rG   r%   rE   r8   r$   r   r&   r'   r(   r)   r   )r+   taskrequested_keys      r   r,   zTask.gete   s    "4((	5dDKHHMM 	 	 	OOC   FF	 		
T/k		
 	

 $%
  	
 	
 	
 	
 	
s   , AANr-   r   r   r   rI   rI   d   s-        
 
 Z
 
 
r   rI   c                  $    e Zd Zed             ZdS )Logsc                    | j                                         } | j        	 dd|dt          | j        t
                     d S )N	logs.htmlrO   r!   logsrQ   )r%   get_logsr$   r   r)   r   )r+   rS   s     r   r,   zLogs.get   s_    {##%%	
	
 	
 DJ 011		
 	
 	
 	
 	
r   Nr-   r   r   r   rO   rO   ~   s-        
 
 Z
 
 
r   rO   c                  $    e Zd Zed             ZdS )
WorkerLogsc                  K   t          j                  	 | j                            g           d {V }n^# t          $ rQ t          fd| j        j                                        D                       s|                     d           Y d S  w xY w|         } | j	        	 ddz   |dt          | j        t                     d S )N)r7   c              3  .   K   | ]}|j         k    V  d S rC   )address)r   wr:   s     r   	<genexpr>z!WorkerLogs.get.<locals>.<genexpr>   s*      QQqv*QQQQQQr   r4   rQ   zLogs: rR   rT   )r	   r6   r%   get_worker_logs	Exceptionanyr7   valuesr8   r$   r   r)   r   )r+   r:   rS   s    ` r   r,   zWorkerLogs.get   s     $V,,	44fX4FFFFFFFFDD 	 	 	QQQQDK4G4N4N4P4PQQQQQ $$$		
 F|	
V#	
 	
 DJ 011		
 	
 	
 	
 	
s   "< ABBNr-   r   r   r   rW   rW      s-        
 
 Z
 
 
r   rW   c                  $    e Zd Zed             ZdS )WorkerCallStacksc                ^  K   t          j        |          }	 d | j        j        |         j        D             }n&# t
          $ r |                     d           Y d S w xY w| j                            |           d {V } | j        	 dd|z   |dt          | j
        t                     d S )Nc                    h | ]	}|j         
S r   )r?   )r   tss     r   	<setcomp>z'WorkerCallStacks.get.<locals>.<setcomp>   s    LLLrBFLLLr   r4   keyscall-stack.htmlzCall Stacks: r!   
call_stackri   )r	   r6   r%   r7   
processingrE   r8   get_call_stackr$   r   r)   r   )r+   r:   rh   rk   s       r   r,   zWorkerCallStacks.get   s      $V,,	LLT[%8%@%KLLLDD 	 	 	OOC   FF	  ;5545@@@@@@@@
	
!F*!	
 	
 DJ 011		
 	
 	
 	
 	
s   !: AANr-   r   r   r   rb   rb      s-        
 
 Z
 
 
r   rb   c                  $    e Zd Zed             ZdS )TaskCallStackc                z  K   t          j        |          }	 t          || j                  }n&# t          $ r |                     d           Y d S w xY w| j                            |g           d {V }|s|                     d           d S  | j        	 dd|z   |dt          | j
        t                     d S )Nr4   rg   zG<p>Task not actively running. It may be finished or not yet started</p>ri   zCall Stack: rj   rl   )r	   r6   rG   r%   rE   r8   rn   writer$   r   r)   r   )r+   r?   rM   rk   s       r   r,   zTaskCallStack.get   s     !#&&	5c4;GGMM 	 	 	OOC   FF	  ;55M?5KKKKKKKK
 	JJ<    
 DK!$s*%  
$455	    s   . AANr-   r   r   r   rp   rp      s-          Z  r   rp   c                      e Zd Zd ZdS )IndividualPlotsc                   	 ddl m t          fd| j        j        j        D                       }d |j        D             }d t          j        t          j	        
                    t          j	                            t                    dd                    D             }i ||}|                     |           d S # t          t          f$ r |                     i            Y d S w xY w)Nr   )BokehTornadoc              3  <   K   | ]}t          |          |V  d S rC   )
isinstance)r   apprv   s     r   r\   z&IndividualPlots.get.<locals>.<genexpr>   sG       & &c<00&& & & & & &r   c                    i | ]{}|                     d                               d          *|                    d          ?|                    d                               dd                                          ||S )/individual-z.json- lstrip
startswithendswithstripreplacer!   r   uris     r   r   z'IndividualPlots.get.<locals>.<dictcomp>   s          ::c??--m<<  W--	 		#&&sC006688#     r   c                .   i | ]}|                     d                               d          *|                    d          ?|                    d                               dd                              dd                                          d|z   S )r{   r|   z.html r}   r~   z	/statics/r   r   s     r   r   z'IndividualPlots.get.<locals>.<dictcomp>   s     
! 
! 
!  ::c??--m<<
! BEgAVAV
!		#"%%c""+	
! 
! 
!r   z..static)bokeh.server.tornadorv   r   r%   http_applicationapplications	app_pathsoslistdirpathjoindirname__file__rr   ImportErrorStopIteration)r+   bokeh_applicationindividual_bokehindividual_staticresultrv   s        @r   r,   zIndividualPlots.get   s*   	999999 % & & & &;7D& & & ! !
   ,6     
! 
! :GLL!:!:D(KK 
! 
! 
! ?(>,=>FJJv]+ 	 	 	JJrNNNNNN	s   B;C   &C*)C*N)r   r.   r/   r,   r   r   r   rt   rt      s#            r   rt   c                  .    e Zd ZddZd Zd Zd Zd ZdS )EventstreamHandlerNc                    || _         |pi | _        t          | | j                   | _        | j                             | j                   d S rC   )r%   r)   r   plugin
add_plugin)r+   dask_serverr)   s      r   
initializezEventstreamHandler.initialize   sE    ![b
%dDK88t{+++++r   c                    ||d<   t          |          D ] }t          ||         t                    r||= !|                     |           d S )Nname)listrx   byteswrite_message)r+   r   datarF   s       r   sendzEventstreamHandler.send   sX    Vd 	 	A$q'5)) G4     r   c                d    | j         j        D ]"}| j                            | j         |           #d S rC   )r%   r7   r   
add_workerr9   s     r   openzEventstreamHandler.open   s=    k) 	8 	8FK""4;7777	8 	8r   c                    t          j        |          }|d         dk    r8|                     ddt          t	          j                              i           d S d S )Nr   pingpong	timestamp)jsonloadsr   r@   r   now)r+   messages     r   
on_messagezEventstreamHandler.on_message   sU    *W%%6?f$$IIf{C,?,?@AAAAA %$r   c                P    | j                             | j        j                   d S )N)r   )r%   remove_pluginr   r   r*   s    r   on_closezEventstreamHandler.on_close  s&    !!t{'7!88888r   )NN)r   r.   r/   r   r   r   r   r   r   r   r   r   r      sg        , , , ,! ! !8 8 8B B B
9 9 9 9 9r   r   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.jsoneventstreamzlist[tuple]routes)r?   r@   r"   r   rA   r   )3
__future__r   r   loggingr   os.pathcollections.abcr   r   typingr   tlzr   r   tornador	   tornado.websocketr
   
dask.utilsr   r   !distributed.diagnostics.websocketr   distributed.http.utilsr   r   distributed.metricsr   distributed.utilsr   distributedr   fromtimestampr(   r   	getLoggerr   loggerr   r2   r<   rG   rI   rO   rW   rb   rp   rt   r   r   __annotations__r   r   r   <module>r      s   " " " " " " "   				  $ $ $ $ $ $                                 . . . . . . 0 0 0 0 0 0 0 0 = = = = = = ; ; ; ; ; ; ; ; $ $ $ $ $ $ ( ( ( ( ( ( &%%%%%% {H,BDI  
 '
3  
	8	$	$
 
 
 
 
n 
 
 
"
 
 
 
 
^ 
 
 
.
 
 
 
 
 
 
 
"   
 
 
 
 
> 
 
 
4	
 	
 	
 	
 	
> 	
 	
 	

 
 
 
 
 
 
 
(
 
 
 
 
~ 
 
 
$    N   2    n   B9 9 9 9 9) 9 9 9: hh/00"5,!:r2vr*T2&T2&"$4b9!="5Z,3',      r   