U
    Z+d
                     @   s   d Z ddlZddlmZmZmZmZ ddlmZ ej	edej
ddedd	d
dej
ddeed	ddej
ddeed	ddejedd ZdS )zBThe ``celery purge`` program, used to delete messages from queues.    N)COMMA_SEPARATED_LISTCeleryCommandCeleryOptionhandle_preload_options)text)clsz-fz--forceTzPurging OptionszDon't prompt for verification.)r   Zis_flag
help_grouphelpz-Qz--queuesz-Comma separated list of queue names to purge.)r   typer   r	   z-Xz--exclude-queuesz2Comma separated list of queues names not to purge.c                    s  | j j}t|p|jj }t|p$g }|| }t|}|rt|d}|sd	t
|}tj| j jddd d| d| dd	d
 dd  | t fdd|D }	W 5 Q R X |	rt|	d}
| j d|	 d|
 d| d| d	 n| j d| d| d dS )zvErase all messages from all known task queues.

    Warning:

        There's no undo operation for this command.
    queuez, WARNINGZred)Zfgz!:This will remove all tasks from z: z.
         There is no undo for this operation!

(to skip this prompt use the -f option)
Are you sure you want to delete all tasks?T)abortc                 S   s0   z| j |pdW S  | jk
r*   Y dS X d S )Nr   )Zdefault_channelZqueue_purgeZchannel_errors)connr    r   4/tmp/pip-unpacked-wheel-ucduq0nd/celery/bin/purge.py_purge7   s    zpurge.<locals>._purgec                 3   s   | ]} |V  qd S )Nr   ).0r   r   r   r   r   	<genexpr>>   s     zpurge.<locals>.<genexpr>messagezPurged  z from z known task .zNo messages purged from N)objappsetZamqpqueueskeyslenr   Z	pluralizejoinsortedclickZconfirmstyleZconnection_for_writesumZecho)ctxforcer   Zexclude_queuesr   namesZqnumZqueues_headlineZqueue_namesmessagesZmessages_headliner   r   r   purge	   s&    $
"(r'   )__doc__r    Zcelery.bin.baser   r   r   r   Zcelery.utilsr   commandoptionZpass_contextr'   r   r   r   r   <module>   s8   
