U
    cc_!                     @   s  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	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 z(ddlmZ ddlmZ ddlmZ W n$ ek
r   dd ZdZdZY nX e Ze ZG dd dZ dd Z!G dd de	j"Z#G dd de	j$Z%G dd de%Z&G dd de
Z'G dd de
Z(G d d! d!e
Z)G d"d# d#e
Z*G d$d% d%e
Z+G d&d' d'e	j,Z-e( Z.e) Z/e* Z0e+ Z1e- Z2e' Z3dS )(z Click customizations for Celery.    N)OrderedDictupdate_wrapper)pformat)	ParamType)cached_property)get_current_app)user_preload_options)text)mlevel)maybe_iso8601)	highlight)Terminal256Formatter)PythonLexerc                 O   s   | S )z2Place holder function in case pygments is missing. )sargskwargsr   r   I/var/www/html/project/venv/lib/python3.8/site-packages/celery/bin/base.pyr      s    r   c                   @   s|   e Zd ZdZdddZedd Zedd Zdd
dZdddZ	dddZ
dddZdd Zdd Zdd Zd ddZd	S )!
CLIContextzContext Object for the CLI.Fc                 C   s"   |pt  | _|| _|| _|| _dS )zInitialize the CLI context.N)r   appno_colorquietworkdir)selfr   r   r   r   r   r   r   __init__$   s    zCLIContext.__init__c                 C   s   | j ddddS )NOKgreenTfgboldstyler   r   r   r   r   +   s    zCLIContext.OKc                 C   s   | j ddddS )NERRORredTr   r!   r#   r   r   r   r$   /   s    zCLIContext.ERRORNc                 K   s   | j r
|S tj|f|S d S N)r   clickr"   r   messager   r   r   r   r"   3   s    zCLIContext.stylec                 K   s0   | j rd|d< tj|f| ntj|f| d S NFcolorr   r'   echosechor(   r   r   r   r.   9   s    zCLIContext.sechoc                 K   s0   | j rd|d< tj|f| ntj|f| d S r*   )r   r'   r-   r(   r   r   r   r-   @   s    zCLIContext.echoc                 K   s8   d|d< | j r&d|d< tj|f| ntj|f| d S )NTerrFr+   r,   r(   r   r   r   errorG   s
    zCLIContext.errorc                 C   s   t |tr| j| |fS t |trjd|ks4d|kr>| |S tj|ddd}| js`t	|t
t}| j|fS t |tr~| j|fS | jt|fS )Nokr0   T   )	sort_keysindent)
isinstancelistr   pretty_listdictpretty_dict_ok_errorjsondumpsr   r   LEXER	FORMATTERstrr   )r   nr   r   r   r   prettyO   s    





zCLIContext.prettyc                    s    |sdS d  fdd|D S )Nz	- empty -
c                 3   s&   | ]} j d dd d| V  qdS )*white)r    Nr!   ).0itemr#   r   r   	<genexpr>a   s    z)CLIContext.pretty_list.<locals>.<genexpr>)joinr   r?   r   r#   r   r7   ^   s
    zCLIContext.pretty_listc                 C   sX   z"| j t| |d d dfW S  tk
r6   Y nX | jt| |d d dfS )Nr1      r2   r0   )r   r
   r4   r@   KeyErrorr$   rI   r   r   r   r9   e   s    zCLIContext.pretty_dict_ok_error c                 C   s^   |dkr| j rd S | j  r0| j|ddd dp2d}| | d|  |rZ|rZ| | d S )Nz<-rC   Tr   rD   rL   )r   r"   r-   )r   	directiontitlebodyZ	show_bodyZdirstrr   r   r   say_chatn   s    "zCLIContext.say_chat)F)N)N)N)N)rL   F)__name__
__module____qualname____doc__r   r   r   r$   r"   r.   r-   r0   r@   r7   r9   rP   r   r   r   r   r   !   s   






	r   c                    s    fdd}t | S )z6Extract preload options and return a wrapped callable.c                    sV   | j j}dd |jdg D }|rF fdd|D }tj||d | f| S )Nc                 S   s   g | ]
}|j qS r   )name)rE   or   r   r   
<listcomp>|   s     z:handle_preload_options.<locals>.caller.<locals>.<listcomp>Zpreloadc                    s   i | ]}| | qS r   r   )rE   Zpreload_optionr   r   r   
<dictcomp>   s    z:handle_preload_options.<locals>.caller.<locals>.<dictcomp>)Zsenderr   options)objr   user_optionsgetr	   send)ctxr   r   r   Zpreload_optionsr\   frX   r   callery   s    
z&handle_preload_options.<locals>.callerr   )ra   rb   r   r`   r   handle_preload_optionsw   s    rc   c                       s,   e Zd ZdZ fddZ fddZ  ZS )CeleryOptionzCustomized option for Celery.c                    s(   | j r|j| j  | _t j|f||S r&   )default_value_from_contextr[   defaultsuperget_default)r   r_   r   r   	__class__r   r   rh      s    zCeleryOption.get_defaultc                    s.   | dd| _| dd| _t j|| dS )zInitialize a Celery option.
help_groupNre   )poprk   re   rg   r   r   r   r   ri   r   r   r      s    zCeleryOption.__init__)rQ   rR   rS   rT   rh   r   __classcell__r   r   ri   r   rd      s   rd   c                   @   s   e Zd ZdZdd ZdS )CeleryCommandzCustomized command for Celery.c              
   C   s   t  }| |D ]R}||}|dk	rt|drP|jrP|t|jg | q|dg | q| D ](\}}|	| |
| W 5 Q R X qldS )z7Write all the options into the formatter if they exist.Nrk   Options)r   
get_paramsZget_help_recordhasattrrk   
setdefaultr>   appenditemssectionZwrite_dl)r   r_   	formatteroptsparamrvrU   Z
opts_groupr   r   r   format_options   s    
zCeleryCommand.format_optionsN)rQ   rR   rS   rT   r{   r   r   r   r   ro      s   ro   c                       s    e Zd ZdZ fddZ  ZS )CeleryDaemonCommandzDaemon commands.c                    s   t  j|| | jtddd | jtddd | jtddd | jtddd | jtddd | jtddd | jtddd d	S )
z7Initialize a Celery command with common daemon options.)z-fz	--logfilezDaemonization Options)rk   )z	--pidfile)z--uid)z--gid)z--umask)z--executableN)rg   r   paramsrt   rd   rm   ri   r   r   r      s    zCeleryDaemonCommand.__init__)rQ   rR   rS   rT   r   rn   r   r   ri   r   r|      s   r|   c                   @   s   e Zd ZdZdZdd ZdS )CommaSeparatedListzComma separated list argument.zcomma separated listc                 C   s
   t |S r&   )r
   Zstr_to_listr   valuery   r_   r   r   r   convert   s    zCommaSeparatedList.convertNrQ   rR   rS   rT   rU   r   r   r   r   r   r~      s   r~   c                   @   s   e Zd ZdZdZdd ZdS )	JsonArrayzJSON formatted array argument.z
json arrayc              
   C   sl   t |tr|S zt|}W n0 tk
rL } z| t| W 5 d }~X Y nX t |tsh| | d |S )Nz was not an array)r5   r6   r:   loads
ValueErrorfailr>   r   r   ry   r_   ver   r   r   r      s    
 
zJsonArray.convertNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdd ZdS )
JsonObjectzJSON formatted object argument.zjson objectc              
   C   sl   t |tr|S zt|}W n0 tk
rL } z| t| W 5 d }~X Y nX t |tsh| | d |S )Nz was not an object)r5   r8   r:   r   r   r   r>   r   r   r   r   r      s    
 
zJsonObject.convertNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdd ZdS )ISO8601DateTimezISO 8601 Date Time argument.z	iso-86091c              
   C   s@   z
t |W S  ttfk
r: } z| | W 5 d }~X Y nX d S r&   )r   	TypeErrorr   r   r   r   ry   r_   r   r   r   r   r      s    
zISO8601DateTime.convertNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdd ZdS )ISO8601DateTimeOrFloatz%ISO 8601 Date Time or float argument.ziso-86091 or floatc              
   C   sd   z
t |W S  ttfk
r"   Y nX z
t|W S  ttfk
r^ } z| | W 5 d }~X Y nX d S r&   )floatr   r   r   r   r   r   r   r   r      s    

zISO8601DateTimeOrFloat.convertNr   r   r   r   r   r      s   r   c                       s,   e Zd ZdZ fddZ fddZ  ZS )LogLevelzLog level option.c                    s   t  d dS )z:Initialize the log level option with the relevant choices.)DEBUGINFOWARNINGr$   CRITICALFATALN)rg   r   r#   ri   r   r   r     s    zLogLevel.__init__c                    s0   t |tjr|S | }t |||}t|S r&   )r5   numbersIntegralupperrg   r   r   r   ri   r   r   r     s
    zLogLevel.convert)rQ   rR   rS   rT   r   r   rn   r   r   ri   r   r   
  s   r   )4rT   r:   r   collectionsr   	functoolsr   pprintr   r'   r   Zkombu.utils.objectsr   Zcelery._stater   Zcelery.signalsr	   Zcelery.utilsr
   Zcelery.utils.logr   Zcelery.utils.timer   pygmentsr   Zpygments.formattersr   Zpygments.lexersr   ImportErrorr<   r=   r   rc   Optionrd   Commandro   r|   r~   r   r   r   r   ZChoicer   Z
JSON_ARRAYZJSON_OBJECTZISO8601ZISO8601_OR_FLOATZ	LOG_LEVELZCOMMA_SEPARATED_LISTr   r   r   r   <module>   sP   
V	