a
    xd                     @   s   d Z ddlZddlmZ ddlZddlmZmZ ddlm	Z	m
Z
 e ejedd Zejedd	id
ejdd Zejedd	id
ejdd ZdS )The ``celery graph`` command.    N)
itemgetter)CeleryCommandhandle_preload_options)DependencyGraphGraphFormatterc                 C   s   dS )r   N )ctxr   r   H/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/bin/graph.pygraph   s    r   Zallow_extra_argsT)clsZcontext_settingsc                 C   sh   | j j }dd | jpddgD }d|v rN|jj}d|v rX|j|jj n
|jjj}|t	j
 dS )zDisplay bootsteps graph.c                 S   s   h | ]}|  qS r   )lower.0argr   r   r
   	<setcomp>       zbootsteps.<locals>.<setcomp>workerconsumerN)objappZWorkControllerargsZ	blueprintr   Zconnect_withr   to_dotsysstdout)r	   r   includeZworker_graphr   r   r
   	bootsteps   s    
r   c                    s  fddd-ddt fdd| jD dv d	d
 G dd d}G fddd| G  fdddt}dd G dd d|}G fddd|}G fddd|}ddlm} |dtddpd}tddpd}|ffd d!	}	| jj}
zd" }d#p&g }W nb t	y   |
j
  pLi }g g  }}| D ]&\}}|| ||d$ d%  q`Y n0 t|}d&|
jj}i }|	|d}|r||kr|dd |d' g }t|D ]*\}}|	ttt|d(|||| < q|d)|
  }|r4||nd*}t| d+}|| |r^|| dg}t|D ]\}}|||d,}|| ||| |r||| ||j}|r|D ]$} |}|| ||| q|d  d7  < ql|tj d*S ).zDisplay workers graph.c                    s    t dd| dS )Nr      :)r   	partition)r   )
maybe_listr   r
   	simplearg%   s    zworkers.<locals>.simplearg,c                 S   s*   | d || d v r | d  |n| d fS )Nr      )split)lsepr   r   r
   r    (   s    zworkers.<locals>.maybe_listc                 3   s   | ]} |V  qd S Nr   r   )r!   r   r
   	<genexpr>+   r   zworkers.<locals>.<genexpr>genericc                 S   s   d t| j| jdd S )Nz
{} ({}://)z://r   )formattype__name___labelr$   )noder   r   r
   generic_label.   s    zworkers.<locals>.generic_labelc                   @   s.   e Zd ZdZi ZdddZdd Zdd ZdS )	zworkers.<locals>.NodeNc                 S   s   || _ || _d S r'   )r-   pos)selflabelr0   r   r   r
   __init__6   s    zworkers.<locals>.Node.__init__c                 S   s   | j S r'   r-   r1   r   r   r
   r2   :   s    zworkers.<locals>.Node.labelc                 S   s   |   S r'   r2   r5   r   r   r
   __str__=   s    zworkers.<locals>.Node.__str__)N)r,   
__module____qualname__Zforce_labelschemer3   r2   r7   r   r   r   r
   Node2   s
   
r;   c                       s0   e Zd ZdddddddZ fdd	Z  ZS )
zworkers.<locals>.ThreadZ
lightcyan4ZyellowZoval
   g333333?black)	fillcolorZ	fontcolorshapeZfontsizewidthcolorc                    s$   || _ t jdt dd d S )Nzthr-r   )r2   r0   )
real_labelsuperr3   next)r1   r2   kwargs)	__class__tidsr   r
   r3   J   s
    z workers.<locals>.Thread.__init__)r,   r8   r9   r:   r3   __classcell__r   )rG   )rF   r
   Thread@   s   	rI   c                       s4   e Zd Zdd Z fddZdd Z fddZd	S )
zworkers.<locals>.Formatterc                 S   s   |o
|  S r'   r6   r1   r   r   r   r
   r2   S   s    z workers.<locals>.Formatter.labelc                    sD   |j rt|jn|j}t| r*|j|d< | |t| jfi |S )Nr2   )r0   dictr:   
isinstancerB   	draw_nodeZnode_scheme)r1   r   r:   rI   r   r
   r.   V   s    

zworkers.<locals>.Formatter.nodec                 S   s   |  |t| jfi |jS r'   )rM   rK   Zterm_schemer:   rJ   r   r   r
   terminal_node^   s    z(workers.<locals>.Formatter.terminal_nodec                    s*   t | r|jddd | ||| j|S )Nnonetee)Z	arrowheadZ	arrowtail)rL   updateZ	draw_edgeZedge_scheme)r1   abattrsrN   r   r
   edgec   s    
zworkers.<locals>.Formatter.edgeN)r,   r8   r9   r2   r.   rO   rV   r   rN   r   r
   	FormatterQ   s   rW   c                    s6   ddddddddd	d
d
 d  fddt| D S )Nu   ₀u   ₁u   ₂u   ₃u   ₄u   ₅u   ₆u   ₇u   ₈u   ₉)
0123456789 c                    s   g | ]} | qS r   r   )r   iSr   r
   
<listcomp>k   r   z.workers.<locals>.subscript.<locals>.<listcomp>)joinstr)nr   rd   r
   	subscripth   s    

zworkers.<locals>.subscriptc                   @   s   e Zd ZdS )zworkers.<locals>.WorkerN)r,   r8   r9   r   r   r   r
   Workerm   s   rk   c                       s*   e Zd ZddddddZ fddZd	S )
zworkers.<locals>.Backendfolderr   r#   r=   Z
peachpuff3)r?   r@   heightrA   r>   c                    s    r| S | j S r'   r4   r5   r)   r/   r   r
   r2   y   s    zworkers.<locals>.Backend.labelNr,   r8   r9   r:   r2   r   rn   r   r
   Backendp   s   rp   c                       s(   e Zd ZdddddZ fddZdS )	zworkers.<locals>.BrokerZcircleZ
cadetblue3Z
cadetblue4r#   )r?   r>   rA   rm   c                    s    r| S | j S r'   r4   r5   rn   r   r
   r2      s    zworkers.<locals>.Broker.labelNro   r   rn   r   r
   Broker|   s   rq   r   )countr#   Zwmax   Ztmax   c                    s~   t | }|o||k}dv r4 fddt| D } |rz| d|d  | |d  g } d d ||d  | |d < | S )N	enumeratec                    s$   g | ]\}}  |d   qS )r#   r   )r   rc   r   )namerj   r   r
   rf      s   z/workers.<locals>.maybe_abbr.<locals>.<listcomp>r   r#   u   {}⎨…{}⎬r   )lenru   r*   )r%   rv   maxsizeZabbr)r   rj   )rv   r
   
maybe_abbr   s    zworkers.<locals>.maybe_abbrnodesthreadspoolzmax-concurrencybackendPbrokerN)	formatter)r0   )r"   )rK   r   r   	itertoolsrr   intgetr   r   KeyErrorcontrolinspectstatsitemsappendrw   confZresult_backendru   listrangeZconnection_for_readas_urir   Zadd_arcZadd_edger-   r   r   r   )r	   r;   rW   rk   rp   rq   rr   ZWmaxZTmaxrz   r   workersr|   Zrepliesr   ZreplyZwlenr~   Zthreads_forrc   r   depsZ	curworkerthreadr   )rI   r   r)   r/   r    r!   rj   rG   r
   r   !   sx    







r   )__doc__r   operatorr   ZclickZcelery.bin.baser   r   Zcelery.utils.graphr   r   groupZpass_contextr   commandr   r   r   r   r   r
   <module>   s   