o
    ›¨Êh¤  ã                   @   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   úB/var/www/html/env/lib/python3.10/site-packages/celery/bin/graph.pyÚgraph   s    r   Úallow_extra_argsT)ÚclsÚcontext_settingsc                 C   sh   | j j ¡ }dd„ | jpddgD ƒ}d|v r'|jj}d|v r&|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ÚappÚWorkControllerÚargsÚ	blueprintr   Úconnect_withr   Úto_dotÚsysÚstdout)r	   r   ÚincludeÚ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¡pndƒ}tˆ dd¡pxdƒ}|f‡‡fd d!„	}	| jj}
zˆd" }ˆ d#¡p’g }W n. t	yÂ   |
j
 ¡  ¡ p£i }g g }}| ¡ D ]\}}| |¡ | |d$ d% ¡ q­Y nw t|ƒ}ˆ d&|
jj¡}i }|	|dƒ}|rç||krç|dd… |d' g }t|ƒD ]\}}|	ttt|ƒƒƒd(|ƒ||| < që|ˆ d)|
 ¡  ¡ ¡ƒ}|�r||ƒnd*}t|ƒ d+�}| |¡ |�r(| |¡ dg}t|ƒD ]E\}}|||d,�}| |¡ | ||¡ |�rM| ||¡ | |j¡}|�rk|D ]}ˆ |ƒ}| |¡ | ||¡ �qX|d  d7  < �q/| 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   |¡fS | 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>+   s   € 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-   )r3   Úpos)ÚselfÚlabelr6   r   r   r
   Ú__init__6   s   
zworkers.<locals>.Node.__init__c                 S   s   | j S r-   ©r3   ©r7   r   r   r
   r8   :   s   zworkers.<locals>.Node.labelc                 S   s   |   ¡ S r-   ©r8   r;   r   r   r
   Ú__str__=   s   zworkers.<locals>.Node.__str__r-   )r2   Ú
__module__Ú__qualname__Úforce_labelÚschemer9   r8   r=   r   r   r   r
   ÚNode2   s    
rB   c                       s0   e Zd ZdddddddœZ‡ ‡fdd	„Z‡  ZS )
zworkers.<locals>.ThreadÚ
lightcyan4ÚyellowÚovalé
   g333333Ó?Úblack)Ú	fillcolorÚ	fontcolorÚshapeÚfontsizeÚwidthÚcolorc                    s$   || _ tƒ jdtˆƒ› �dd� d S )Nzthr-r   )r8   r6   )Ú
real_labelÚsuperr9   Únext)r7   r8   Úkwargs)Ú	__class__Útidsr   r
   r9   J   s
   
þz workers.<locals>.Thread.__init__)r2   r>   r?   rA   r9   Ú__classcell__r   )rS   )rR   r
   ÚThread@   s    ú	rU   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-   r<   ©r7   r   r   r   r
   r8   S   s   z workers.<locals>.Formatter.labelc                    sD   |j rt|jƒn|j}t|ˆ ƒr|j|d< |  |t| jfi |¤Ž¡S )Nr8   )r6   ÚdictrA   Ú
isinstancerN   Ú	draw_nodeÚnode_scheme)r7   r   rA   ©rU   r   r
   r4   V   s   

ÿzworkers.<locals>.Formatter.nodec                 S   s   |   |t| jfi |j¤Ž¡S r-   )rY   rW   Úterm_schemerA   rV   r   r   r
   Úterminal_node^   s   ÿz(workers.<locals>.Formatter.terminal_nodec                    s*   t |ˆ ƒr|jddd� |  ||| j|¡S )NÚnoneÚtee)Ú	arrowheadÚ	arrowtail)rX   ÚupdateÚ	draw_edgeÚedge_scheme)r7   ÚaÚbÚattrsr[   r   r
   Úedgec   s   
zworkers.<locals>.Formatter.edgeN)r2   r>   r?   r8   r4   r]   rh   r   r[   r   r
   Ú	FormatterQ   s
    ri   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   rv   r
   Ú	subscripth   s   

ÿzworkers.<locals>.subscriptc                   @   s   e Zd ZdS )zworkers.<locals>.WorkerN)r2   r>   r?   r   r   r   r
   ÚWorkerm   s    r}   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)   rG   Ú
peachpuff3)rJ   rL   ÚheightrM   rH   c                    ó   ˆ rˆ| ƒS | j S r-   r:   r;   ©r/   r5   r   r
   r8   y   ó   zworkers.<locals>.Backend.labelN©r2   r>   r?   rA   r8   r   r‚   r   r
   ÚBackendp   s    ûr…   c                       s(   e Zd ZdddddœZ‡ ‡fdd„ZdS )	zworkers.<locals>.BrokerÚcircleÚ
cadetblue3Ú
cadetblue4r)   )rJ   rH   rM   r€   c                    r�   r-   r:   r;   r‚   r   r
   r8   „   rƒ   zworkers.<locals>.Broker.labelNr„   r   r‚   r   r
   ÚBroker|   s    ür‰   r   )Úcountr)   Úwmaxé   Útmaxé   c                    s~   t | ƒ}|o	||k}dˆv r‡ ‡fdd„t| ƒD ƒ} |r=| d|d … | |d  g } d ˆ d ˆ||d  ƒ¡| |d < | S )NÚ	enumeratec                    s$   g | ]\}}ˆ › ˆ|d  ƒ› �‘qS )r)   r   )r   ru   r   )Únamer|   r   r
   rx   �   s    ÿz/workers.<locals>.maybe_abbr.<locals>.<listcomp>r   r)   u   {}âŽ¨â€¦{}âŽ¬r#   )Úlenr�   r0   )r+   r�   ÚmaxÚsizeÚabbr)r   r|   )r�   r
   Ú
maybe_abbrŒ   s   ÿÿzworkers.<locals>.maybe_abbrÚnodesÚthreadsÚpoolzmax-concurrencyÚbackendéÿÿÿÿÚPÚbrokerN)Ú	formatter)r6   )r(   )rW   r   r   Ú	itertoolsrŠ   ÚintÚgetr   r   ÚKeyErrorÚcontrolÚinspectÚstatsÚitemsÚappendr‘   ÚconfÚresult_backendr�   ÚlistÚrangeÚconnection_for_readÚas_urir   Úadd_arcÚadd_edger3   r   r   r   )r	   rB   ri   r}   r…   r‰   rŠ   ÚWmaxÚTmaxr•   r   Úworkersr—   Úrepliesr   ÚreplyÚwlenr™   Úthreads_forru   rœ   ÚdepsÚ	curworkerÚthreadr   )rU   r   r/   r5   r&   r'   r|   rS   r
   r±   !   s|   


þý
ÿÿ



r±   )Ú__doc__r   Úoperatorr   ÚclickÚcelery.bin.baser   r   Úcelery.utils.graphr   r   ÚgroupÚpass_contextr   Úcommandr"   r±   r   r   r   r
   Ú<module>   s     