U
    Z+d.'                  
   @   s  d Z ddlZddlZddlmZmZ ddlmZ dZddl	m
Z
 dd ZG d	d
 d
Zejddeje
dd Zejddejdedejdedejdeddejdeddejdeddejdd Zejddejdedejdedejdd Zejddejd edejdedejd!edejd"d# Zejd$dejd edejdeddejdeddejdeddejd%d& Zejd'dejd edejdeddejd(eddejd)d* Zejd+dejd edejd,d- Zejd.dejd edejd/eddejd0d1 Zejd2dejd3edejdedejd!edejd4eddejd5eddejd6d7 Zejd8dejd9edejd:d; ZeeZdS )<zAMQP 0.9.1 REPL.    N)
ConnectionMessage)register_repl)amqp)handle_preload_optionsc                 C   s   | d krdS | j | j| jdS )Nz.No messages in queue. basic.publish something.bodyZ
propertiesZdelivery_infor   )message r
   3/tmp/pip-unpacked-wheel-ucduq0nd/celery/bin/amqp.pydump_message   s    r   c                   @   s@   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dS )AMQPContextc                 C   s&   || _ | j j | _d | _|   d S N)cli_contextapp
connectionchannel	reconnect)selfr   r
   r
   r   __init__   s    zAMQPContext.__init__c                 C   s   | j jS r   )r   r   r   r
   r
   r   r      s    zAMQPContext.appc                 C   s.   t |tr| j| n| jt| d S r   )
isinstancestrr   echopprintpformat)r   retvalr
   r
   r   respond!   s    
zAMQPContext.respondc                 C   s   | j | j j d|  d S )Nz: )r   errorERROR)r   	exceptionr
   r
   r   
echo_error'   s    zAMQPContext.echo_errorc                 C   s   | j | j j d S r   )r   r   OKr   r
   r
   r   echo_ok*   s    zAMQPContext.echo_okc              
   C   s   | j r| j   n| jj  | _ | jd| j   d z| j   W n0 ttfk
rx } z| 	| W 5 d }~X Y nX | jj
dddd | j j| _d S )Nz-> connecting to .z-> connected.ZgreenTZfgZbold)r   closer   r   r   as_uriconnectConnectionRefusedErrorConnectionResetErrorr!   sechoZdefault_channelr   )r   er
   r
   r   r   -   s    zAMQPContext.reconnectN)
__name__
__module____qualname__r   propertyr   r   r!   r#   r   r
   r
   r
   r   r      s   
r   T)Zinvoke_without_commandc                 C   s   t | jtst| j| _dS )z}AMQP Administration Shell.

    Also works for non-AMQP transports (but not ones that
    store declarations in memory).
    N)r   objr   )ctxr
   r
   r   r   =   s    	r   zexchange.declare)nameexchange)typer5   passiveF)r5   defaultdurableauto_deletec              
   C   sz   | j d kr| d |   nXz| j j|||||d W n4 tk
rl } z| | |   W 5 d }~X Y n
X |   d S )N(Not connected to broker. Please retry...)r4   r5   r6   r8   r9   )r   r!   r   exchange_declare	Exceptionr#   )amqp_contextr4   r5   r6   r8   r9   r,   r
   r
   r   r;   J   s    




r;   zexchange.delete	if_unusedc              
   C   st   | j d kr| d |   nRz| j j||d W n4 tk
rf } z| | |   W 5 d }~X Y n
X |   d S )Nr:   )r4   r>   )r   r!   r   exchange_deleter<   r#   )r=   r4   r>   r,   r
   r
   r   r?   l   s    




r?   z
queue.bindqueuerouting_keyc              
   C   sv   | j d kr| d |   nTz| j j|||d W n4 tk
rh } z| | |   W 5 d }~X Y n
X |   d S )Nr:   )r@   r4   rA   )r   r!   r   
queue_bindr<   r#   )r=   r@   r4   rA   r,   r
   r
   r   rB      s    	




rB   zqueue.declarec              
   C   s   | j d kr| d |   nnz| j j||||d}W n4 tk
rj } z| | |   W 5 d }~X Y n"X | jjdj| ddd |   d S )Nr:   )r@   r6   r8   r9   z!queue:{} messages:{} consumers:{}cyanTr%   )	r   r!   r   queue_declarer<   r   r+   formatr#   )r=   r@   r6   r8   r9   r   r,   r
   r
   r   rD      s$    




 rD   zqueue.deleteif_emptyc              
   C   s   | j d kr| d |   nlz| j j|||d}W n4 tk
rh } z| | |   W 5 d }~X Y n"X | jj| dddd |   d S )Nr:   )r@   r>   rF    messages deleted.rC   Tr%   )r   r!   r   queue_deleter<   r   r+   r#   )r=   r@   r>   rF   r   r,   r
   r
   r   rH      s"    




 rH   zqueue.purgec              
   C   s   | j d kr| d |   nhz| j j|d}W n4 tk
rd } z| | |   W 5 d }~X Y n"X | jj| dddd |   d S )Nr:   )r@   rG   rC   Tr%   )r   r!   r   queue_purger<   r   r+   r#   )r=   r@   r   r,   r
   r
   r   rI      s    



 rI   z	basic.getno_ackc              
   C   s   | j d kr| d |   n`z| j j||d}W n4 tk
rf } z| | |   W 5 d }~X Y nX | t| |   d S )Nr:   )rJ   )r   r!   r   	basic_getr<   r   r   r#   )r=   r@   rJ   r	   r,   r
   r
   r   rK      s    



rK   zbasic.publishmsg	mandatory	immediatec              
   C   s   | j d kr| d |   nnt| jjtr4t|}z| j j|||||d W n4 tk
r } z| | |   W 5 d }~X Y n
X | 	  d S )Nr:   )r4   rA   rM   rN   )
r   r!   r   r   r   r   r   basic_publishr<   r#   )r=   rL   r4   rA   rM   rN   r,   r
   r
   r   rO     s     




rO   z	basic.ackdelivery_tagc              
   C   sp   | j d kr| d |   nNz| j | W n4 tk
rb } z| | |   W 5 d }~X Y n
X |   d S )Nr:   )r   r!   r   	basic_ackr<   r#   )r=   rP   r,   r
   r
   r   rQ   &  s    



rQ   )__doc__r   Zclickr   r   r   Z
click_replr   __all__Zcelery.bin.baser   r   r   groupZpass_contextcommandargumentr   boolZpass_objr;   r?   rB   rD   rH   rI   rK   rO   intrQ   replr
   r
   r
   r   <module>   s  '










