
    h#                        d 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
 ddlZddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ 	 ddlmZ ddlmZ ddlmZ  e       Z  e       Z! G d d      Z#d Z$ G d dejJ                        Z& G d dejN                        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      Z/ G d' d(ej`                        Z1 e,       Z2 e-       Z3 e.       Z4 e/       Z5 e1       Z6 e+       Z7y# e"$ r
 d ZdZ dZ!Y w xY w))z Click customizations for Celery.    N)OrderedDictupdate_wrapper)pformat)Any)Context	ParamType)cached_property)get_current_app)user_preload_options)text)mlevel)maybe_iso8601)	highlight)Terminal256Formatter)PythonLexerc                     | S )z2Place holder function in case pygments is missing. )sargskwargss      K/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/bin/base.pyr   r      s        c                   r    e Zd ZdZddZed        Zed        ZddZddZ	ddZ
dd	Zd
 Zd Zd ZddZy)
CLIContextzContext Object for the CLI.c                 T    |xs
 t               | _        || _        || _        || _        y)zInitialize the CLI context.N)r   appno_colorquietworkdir)selfr   r   r    r   s        r   __init__zCLIContext.__init__%   s&    +/+ 
r   c                 *    | j                  ddd      S )NOKgreenTfgboldstyler!   s    r   r$   zCLIContext.OK,   s    zz$7z66r   c                 *    | j                  ddd      S )NERRORredTr&   r)   r+   s    r   r-   zCLIContext.ERROR0   s    zz'e$z77r   Nc                 J    | j                   r|S t        j                  |fi |S N)r   clickr*   r!   messager   s      r   r*   zCLIContext.style4   s"    ==N;;w1&11r   c                     | j                   rd|d<   t        j                  |fi | y t        j                  |fi | y NFcolorr   r1   echosechor2   s      r   r9   zCLIContext.secho:   s4    ==#F7OJJw)&)KK*6*r   c                     | j                   rd|d<   t        j                  |fi | y t        j                  |fi | y r5   )r   r1   r8   r2   s      r   r8   zCLIContext.echoA   s4    ==#F7OJJw)&)JJw)&)r   c                     d|d<   | j                   rd|d<   t        j                  |fi | y t        j                  |fi | y )NTerrFr6   r7   r2   s      r   errorzCLIContext.errorH   s=    u==#F7OJJw)&)KK*6*r   c                    t        |t              r| j                  | j                  |      fS t        |t              r`d|v sd|v r| j                  |      S t        j                  |dd      }| j                  st        |t        t              }| j                  |fS t        |t              r| j                  |fS | j                  t        |      fS )Nokr=   T   )	sort_keysindent)
isinstancelistr$   pretty_listdictpretty_dict_ok_errorjsondumpsr   r   LEXER	FORMATTERstrr   )r!   nr   s      r   prettyzCLIContext.prettyP   s    a77D,,Q///aqyGqL0033JJqD;}}!!UI6Awwz!a77A:ww
""r   c                 >     |sydj                   fd|D              S )Nz	- empty -
c              3   N   K   | ]  }j                  d d       d|   yw)*white)r'    Nr)   ).0itemr!   s     r   	<genexpr>z)CLIContext.pretty_list.<locals>.<genexpr>b   s/      
8<tzz#'z*+1TF3
s   "%)joinr!   rM   s   ` r   rE   zCLIContext.pretty_list_   s'    yy 
@A
 
 	
r   c                     	 | j                   t        j                  | j                  |d         d   d      fS # t        $ r Y nw xY w| j
                  t        j                  | j                  |d         d   d      fS )Nr?      r@   r=   )r$   r   rB   rN   KeyErrorr-   rY   s     r   rG   zCLIContext.pretty_dict_ok_errorf   s{    	GGKKAdG 4Q 7;= = 		

DKK'
3A6:< 	<s   69 	AAc                     |dk(  r| j                   ry | j                    xr | j                  |dd       dxs d}| j                  | d|        |r|r| j                  |       y y y )Nz<-rS   Tr&   rT    )r   r*   r8   )r!   	directiontitlebody	show_bodydirstrs         r   say_chatzCLIContext.say_chato   so    ZZVtzz)dz'S&TTU$V\Z\		VHAeW%&IIIdO 4r   )Fr0   )r^   F)__name__
__module____qualname____doc__r"   r
   r$   r-   r*   r9   r8   r=   rN   rE   rG   rd   r   r   r   r   r   "   sZ    % 7 7 8 82+*+#
<r   r   c                 &      fd}t        |       S )z6Extract preload options and return a wrapped callable.c                    | j                   j                  }|j                  j                  dg       D cg c]  }|j                   }}|r+|D ci c]  }|||   
 }}t        j                  ||        | g|i |S c c}w c c}w )Npreload)senderr   options)objr   user_optionsgetnamer   send)	ctxr   r   r   opreload_optionspreload_optionro   fs	           r   callerz&handle_preload_options.<locals>.callerz   s    ggkk+.+;+;+?+?	2+NOa166OO '6" ~ 66L 
 !%%QCN&t&v&& Ps   BB	r   )rw   rx   s   ` r   handle_preload_optionsry   x   s    ' &!$$r   c                   ,     e Zd ZdZ fdZ fdZ xZS )CeleryOptionzCustomized option for Celery.c                 ~    | j                   r|j                  | j                      | _        t        |   |g|i |S r0   )default_value_from_contextrn   defaultsuperget_default)r!   rs   r   r   	__class__s       r   r   zCeleryOption.get_default   s<    **774#B#BCDLw"38888r   c                     |j                  dd      | _        |j                  dd      | _        t        |   |i | y)zInitialize a Celery option.
help_groupNr}   )popr   r}   r   r"   r!   r   r   r   s      r   r"   zCeleryOption.__init__   s<     **\48*0**5QSW*X'$)&)r   )re   rf   rg   rh   r   r"   __classcell__r   s   @r   r{   r{      s    '9
* *r   r{   c                       e Zd ZdZd Zy)CeleryCommandzCustomized command for Celery.c                    t               }| j                  |      D ]  }|j                  |      }|t        |d      rA|j                  r5|j                  t        |j                        g       j                  |       d|j                  dg       j                  |        |j                         D ]0  \  }}|j                  |      5  |j                  |       ddd       2 y# 1 sw Y   =xY w)z7Write all the options into the formatter if they exist.Nr   Options)r   
get_paramsget_help_recordhasattrr   
setdefaultrL   appenditemssectionwrite_dl)r!   rs   	formatteroptsparamrvrq   
opts_groups           r   format_optionszCeleryCommand.format_options   s    }__S)E&&s+B~5,/E4D4DOOC(8(8$92>EEbIOOIr299"= * !%

D*""4( /"":./ / !-/ /s   
C''C0	N)re   rf   rg   rh   r   r   r   r   r   r      s
    (/r   r   c                   :     e Zd ZdZ fdZdedededefdZ xZ	S )DaemonOptionzCommon daemonization optionc                     t        |   |f|j                  dd      |j                  d| j                        d| y )Nr   zDaemonization Optionscallback)r   r   )r   r"   r   daemon_settingr   s      r   r"   zDaemonOption.__init__   sD     	#$*JJ|=T$U"(**Z9L9L"M	# "	#r   rs   optvaluereturnc                     |xsN t        |j                  j                  j                  |j                  j
                   d| j
                   d      S )z
        Try to fetch daemonization option from applications settings.
        Use the daemon command name as prefix (eg. `worker` -> `worker_pidfile`)
        _N)getattrrn   r   confcommandrq   )r!   rs   r   r   s       r   r   zDaemonOption.daemon_setting   sA    
 Z 0 0S[[5E5E4Fa		{2SUYZZr   )
re   rf   rg   rh   r"   r   r{   r   r   r   r   s   @r   r   r      s1    %#[' [ [S [S [r   r   c                   "     e Zd ZdZ fdZ xZS )CeleryDaemonCommandzDaemon commands.c                     t        |   |i | | j                  j                  t	        ddd      t	        dd      t	        dd      t	        d	d
      t	        dd      t	        dd      f       y)z7Initialize a Celery command with common daemon options.z	--logfilez-fz#Log destination; defaults to stderr)helpz	--pidfilez&PID file path; defaults to no PID filez--uidz Drops privileges to this user IDz--gidz!Drops privileges to this group IDz--umaskz,Create files and directories with this umaskz--executablez&Override path to the Python executableN)r   r"   paramsextendr   r   s      r   r"   zCeleryDaemonCommand.__init__   sp    $)&)d1VW+ST'IJ'JK)WX.VW
 	r   )re   rf   rg   rh   r"   r   r   s   @r   r   r      s    
 
r   r   c                       e Zd ZdZdZd Zy)CommaSeparatedListzComma separated list argument.zcomma separated listc                 ,    t        j                  |      S r0   )r   str_to_list)r!   r   r   rs   s       r   convertzCommaSeparatedList.convert   s    &&r   Nre   rf   rg   rh   rq   r   r   r   r   r   r      s    (!D'r   r   c                       e Zd ZdZdZd Zy)	JsonArrayzJSON formatted array argument.z
json arrayc                     t        |t              r|S 	 t        j                  |      }t        t              s| j                  | d       |S # t        $ r$}| j                  t        |             Y d }~Nd }~ww xY w)Nz was not an array)rC   rD   rH   loads
ValueErrorfailrL   r!   r   r   rs   ves         r   r   zJsonArray.convert   sn    eT"L	

5!A !T"II012  	IIc!f	   A 	A<A77A<Nr   r   r   r   r   r      s    (Dr   r   c                       e Zd ZdZdZd Zy)
JsonObjectzJSON formatted object argument.zjson objectc                     t        |t              r|S 	 t        j                  |      }t        t              s| j                  | d       |S # t        $ r$}| j                  t        |             Y d }~Nd }~ww xY w)Nz was not an object)rC   rF   rH   r   r   r   rL   r   s         r   r   zJsonObject.convert   sn    eT"L	

5!A !T"II123  	IIc!f	r   Nr   r   r   r   r   r      s    )Dr   r   c                       e Zd ZdZdZd Zy)ISO8601DateTimezISO 8601 Date Time argument.z	iso-86091c                 t    	 t        |      S # t        t        f$ r}| j                  |       Y d }~y d }~ww xY wr0   )r   	TypeErrorr   r   r!   r   r   rs   r   s        r   r   zISO8601DateTime.convert  s4    	 '':& 	IIaLL	s   
 727Nr   r   r   r   r   r      s    &Dr   r   c                       e Zd ZdZdZd Zy)ISO8601DateTimeOrFloatz%ISO 8601 Date Time or float argument.ziso-86091 or floatc                     	 t        |      S # t        t        f$ r Y nw xY w	 t        |      S # t        t        f$ r}| j	                  |       Y d }~y d }~ww xY wr0   )floatr   r   r   r   r   s        r   r   zISO8601DateTimeOrFloat.convert  sZ    	<:& 			 '':& 	IIaLL	s    
 
. AAANr   r   r   r   r   r     s    /D	r   r   c                   ,     e Zd ZdZ fdZ fdZ xZS )LogLevelzLog level option.c                 $    t         |   d       y)z:Initialize the log level option with the relevant choices.)DEBUGINFOWARNINGr-   CRITICALFATALN)r   r"   )r!   r   s    r   r"   zLogLevel.__init__   s    STr   c                     t        |t        j                        r|S |j                         }t        |   |||      }t        |      S r0   )rC   numbersIntegralupperr   r   r   )r!   r   r   rs   r   s       r   r   zLogLevel.convert$  s?    eW--.Luc2e}r   )re   rf   rg   rh   r"   r   r   r   s   @r   r   r     s    U r   r   )8rh   rH   r   collectionsr   	functoolsr   pprintr   typingr   r1   r   r	   kombu.utils.objectsr
   celery._stater   celery.signalsr   celery.utilsr   celery.utils.logr   celery.utils.timer   pygmentsr   pygments.formattersr   pygments.lexersr   rJ   rK   ImportErrorr   ry   Optionr{   Commandr   r   r   r   r   r   r   r   Choicer   
JSON_ARRAYJSON_OBJECTISO8601ISO8601_OR_FLOAT	LOG_LEVELCOMMA_SEPARATED_LISTr   r   r   <module>r      s=   &   # $    $ / ) /  # +'"8+ ME$&IS Sl%(*5<< */EMM /&[< ["-  ' '	 ( (	i 	Y "u||   [
l

)+ J	)+ w   EIs   D8 8EE