
    h                     B   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j                         ej                  ed                      Zej                  eddi	      ej                  d
               Zej                  eddi	      ej                  d               Zy)The ``celery graph`` command.    N)
itemgetter)CeleryCommandhandle_preload_options)DependencyGraphGraphFormatterc                      y)r   N )ctxs    L/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/bin/graph.pygraphr      s        allow_extra_argsT)clscontext_settingsc                    | j                   j                  j                         }| j                  xs ddgD ch c]  }|j	                          }}d|v rJ|j
                  j                  }d|v rP|j
                  j                  |j                  j
                         n |j                  j
                  j                  }|j                  t        j                         yc c}w )zDisplay bootsteps graph.workerconsumerN)objappWorkControllerargslower	blueprintr   connect_withr   to_dotsysstdout)r   r   argincludeworker_graphs        r   	bootstepsr"      s     WW[['')F&)hh&H8Z2HIssyy{IGI7''-- ))&//*C*CD0066

# Js   C c           
         fdd&dt        fd| j                  D              dv d  G d d      } G fdd	|       G fd
dt              }d  G d d|      } G fdd|      } G fdd|      }ddlm}  |d      t        j                  dd      xs d      }t        j                  dd      xs d      }|ffd	}	| j                  j                  }
	 d   }j                  d      xs g }t        |      }j                  d|
j                   j"                        }i } |	|d      }|r||kD  r|dd |d    gz   }t%        |      D ]0  \  }} |	t'        t)        t        |                  d!|      |||   <   2  |j                  d"|
j+                         j-                                     }|r ||      nd#}t/         |       $      }|j1                  |       |r|j1                  |       dg}t%        |      D ]  \  }} |||%      }|j1                  |       |j3                  ||       |r|j3                  ||       |j                  |j4                        }|r2|D ]-  } |      }|j1                  |       |j3                  ||       / |dxx   dz  cc<    |j7                  t8        j:                         y## t        $ rt |
j                  j                         j                         xs i }g g }}|j                         D ]-  \  }}|j                  |       |j                  |d   d          / Y Qw xY w)'zDisplay workers graph.c                 R      t        dd      | j                  d                  S )Nr      :)r   	partition)r   
maybe_lists    r   	simpleargzworkers.<locals>.simplearg%   s&    **Q*3==+=>??r   c                 N    | d   || d   v r| d   j                  |      fS | d   fS )Nr      )split)lseps     r   r(   zworkers.<locals>.maybe_list(   s3    tqtQqTZZ_==1==r   c              3   .   K   | ]  } |        y wNr
   ).0r   r)   s     r   	<genexpr>zworkers.<locals>.<genexpr>+   s     33	#3s   genericc                     dj                  t        |       j                  | j                  j	                  d      d         S )Nz
{} ({}://)z://r   )formattype__name___labelr,   )nodes    r   generic_labelzworkers.<locals>.generic_label.   s:    ""4:#6#6#';;#4#4U#;A#>@ 	@r   c                   (    e Zd ZdZi ZddZd Zd Zy)workers.<locals>.NodeNc                      || _         || _        y r0   )r8   pos)selflabelr>   s      r   __init__zworkers.<locals>.Node.__init__6   s    DKDHr   c                     | j                   S r0   r8   r?   s    r   r@   zworkers.<locals>.Node.label:   s    ;;r   c                 "    | j                         S r0   r@   rD   s    r   __str__zworkers.<locals>.Node.__str__=   s    ::<r   r0   )r7   
__module____qualname__force_labelschemerA   r@   rG   r
   r   r   Noder<   2   s    			 r   rL   c                   4     e Zd ZdddddddZ fdZ xZS )	workers.<locals>.Thread
lightcyan4yellowoval
   g333333?black)	fillcolor	fontcolorshapefontsizewidthcolorc                 N    || _         t        | 	  dt               d       y )Nzthr-r   )r@   r>   )
real_labelsuperrA   next)r?   r@   kwargs	__class__tidss      r   rA   z workers.<locals>.Thread.__init__J   s-    #DOGT$ZL)  r   )r7   rH   rI   rK   rA   __classcell__)r_   r`   s   @r   ThreadrN   @   s&    %!
	 	r   rb   c                   .    e Zd Zd Z fdZd Z fdZy)workers.<locals>.Formatterc                 *    |xr |j                         S r0   rF   r?   r   s     r   r@   z workers.<locals>.Formatter.labelS   s    &399;&r   c                     |j                   rt        |j                        n|j                  }t        |      r|j                  |d<   | j                  |t        | j                  fi |      S )Nr@   )r>   dictrK   
isinstancer[   	draw_nodenode_scheme)r?   r   rK   rb   s      r   r9   zworkers.<locals>.Formatter.nodeV   sZ    ),T#**%cjjF#v&"%..w>>T$**5f5 r   c                 b    | j                  |t        | j                  fi |j                        S r0   )rj   rh   term_schemerK   rf   s     r   terminal_nodez(workers.<locals>.Formatter.terminal_node^   s,    >>T$**9cjj9 r   c                 ~    t        |      r|j                  dd       | j                  ||| j                  |      S )Nnonetee)	arrowhead	arrowtail)ri   update	draw_edgeedge_scheme)r?   abattrsrb   s       r   edgezworkers.<locals>.Formatter.edgec   s8    !V$v?>>!Q(8(8%@@r   N)r7   rH   rI   r@   r9   rn   rz   )rb   s   r   	Formatterrd   Q   s    	'		
	Ar   r{   c                 |    ddddddddd	d
d
}dj                  t        |       D cg c]  }||   	 c}      S c c}w )Nu   ₀u   ₁u   ₂u   ₃u   ₄u   ₅u   ₆u   ₇u   ₈u   ₉)
0123456789 )joinstr)nSis      r   	subscriptzworkers.<locals>.subscripth   sE    e%e%e%e%Iwwc!f-!-..-s   9c                       e Zd Zy)workers.<locals>.WorkerN)r7   rH   rI   r
   r   r   Workerr   m   s    r   r   c                   *    e Zd ZddddddZ fdZy)	workers.<locals>.Backendfolderr%   r+   rS   
peachpuff3)rV   rX   heightrY   rT   c                 0    r |       S | j                   S r0   rC   r?   r3   r:   s    r   r@   zworkers.<locals>.Backend.labely       *1=&Bt{{Br   Nr7   rH   rI   rK   r@   r3   r:   s   r   Backendr   p   s    %
	Cr   r   c                   (    e Zd ZdddddZ fdZy)workers.<locals>.Brokercircle
cadetblue3
cadetblue4r+   )rV   rT   rY   r   c                 0    r |       S | j                   S r0   rC   r   s    r   r@   zworkers.<locals>.Broker.label   r   r   Nr   r   s   r   Brokerr   |   s    %!	
	Cr   r   r   )countr+   wmax   tmax   c           	         t        |       }|xr ||kD  }dv r*t        |       D cg c]  \  }}|  |dz           } }}|r9| d|dz
   | |dz
     gz   } dj                  |d    ||dz
  z
              | |dz
  <   | S c c}}w )N	enumerater+   r   u   {}⎨…{}⎬r%   )lenr   r5   )	r-   namemaxsizeabbrr   r   r   r   s	          r   
maybe_abbrzworkers.<locals>.maybe_abbr   s    1v!tcz$(|-Q 6)AE*+, -A -!C!G$(},A(//Q437#346AcAgJ-s   Bnodesthreadspoolzmax-concurrencybackendPbrokerN)	formatter)r>   ),)rh   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_edger8   r   r   r   ) r   rL   r{   r   r   r   r   WmaxTmaxr   r   workersr   repliesr   replywlenr   threads_forr   r   deps	curworkerthreadrb   r   r3   r:   r(   r)   r   r`   s                            @@@@@@@@r   r   r   !   s   @> 3#((33D4G@    "AN A./
 
C$ 
C	C 	C  8Dtxx"'a(Dtxx"'a(D $ 
 ''++C=w-((9%+ w<Dhhy#(("9"9:GK(+Gt!A,'"+.(
7",s7|$%sD#
GAJ )
 DHH#))+2246 7F")ggtGY[1DLLWIw'	6A&Vff%MM&'*//&--0!V$ff- "
 	! ( 	KK

S  =++%%'--/52r$]]_MFENN6"NN5=):;< -=s   4K# #A9M M )__doc__r   operatorr   clickcelery.bin.baser   r   celery.utils.graphr   r   grouppass_contextr   commandr"   r   r
   r   r   <module>r      s    # 
   A > (   ( =4F3MN
$  O
$ =4F3MNb  Obr   