U
    bh2                     @  sH   d Z ddlmZ ddlmZ ddlmZ dgZdd ZG d	d dZ	d
S )z Amazon SQS queue implementation.    )annotations)	transform   )AsyncMessage
AsyncQueuec                 C  s   t | dkr| d S dS )z4Get the first item in a list, or None if list empty.r   r   N)len)rs r	   D/tmp/pip-unpacked-wheel-earovzxb/kombu/asynchronous/aws/sqs/queue.py
list_first   s    r   c                   @  s  e Zd ZdZddefddZdd Ze Z Z Z	 Z
 Z Z Z Z Z ZZd0dd	Zd1d
dZd2ddZdd Zd3ddZdd Zd4ddZd5ddZd6ddZd7ddZd8ddZdd  Zd9d"d#Zd:d$d%Zd;d&d'Z d<d(d)Z!d=d*d+Z"d>d.d/Z#dS )?r   zAsync SQS Queue.Nc                 C  s   || _ || _|| _d | _d S N)
connectionurlmessage_classvisibility_timeout)selfr   r   r   r	   r	   r
   __init__   s    zAsyncQueue.__init__c                 O  s
   t  d S r   )NotImplementedError)r   argskwargsr	   r	   r
   _NA   s    zAsyncQueue._NAAllc                 C  s   | j | ||S r   )r   Zget_queue_attributes)r   
attributescallbackr	   r	   r
   get_attributes    s
      zAsyncQueue.get_attributesc                 C  s   | j | |||S r   )r   Zset_queue_attribute)r   	attributevaluer   r	   r	   r
   set_attribute%   s       zAsyncQueue.set_attributeVisibilityTimeoutc                 C  s   |  |t| j||tS r   r   r   _coerce_field_valueint)r   r   _attrr	   r	   r
   get_timeout*   s        zAsyncQueue.get_timeoutc                 C  s   ||| S r   r	   )r   keytyperesponser	   r	   r
   r    1   s    zAsyncQueue._coerce_field_valuec                 C  s   |  d|t| j|S )Nr   )r   r   _on_timeout_set)r   r   r   r	   r	   r
   set_timeout4   s      zAsyncQueue.set_timeoutc                 C  s   |r
|| _ | j S r   )r   )r   r   r	   r	   r
   r'   <   s    zAsyncQueue._on_timeout_setc                 C  s   | j | ||||S r   )r   add_permission)r   labelZaws_account_idaction_namer   r	   r	   r
   r)   A   s        zAsyncQueue.add_permissionc                 C  s   | j | ||S r   )r   remove_permission)r   r*   r   r	   r	   r
   r,   G   s    zAsyncQueue.remove_permissionc                 C  s   | j d||tt|dS )Nr   )wait_time_secondsr   )get_messagesr   r   )r   r   r-   r   r	   r	   r
   readJ   s     zAsyncQueue.readc                 C  s"   | j j| | |t| j||dS N)r   )r   send_messageZget_body_encodedr   _on_message_sent)r   messageZdelay_secondsr   r	   r	   r
   writeR   s      zAsyncQueue.writec                 C  s   | j j| ||dS r0   )r   Zsend_message_batchr   messagesr   r	   r	   r
   write_batchX   s
      zAsyncQueue.write_batchc                 C  s   |j |_ |j|_|S r   )idmd5)r   Zorig_messageZnew_messager	   r	   r
   r2   ]   s    zAsyncQueue._on_message_sentr   c                 C  s   | j j| |||||dS )N)Znumber_messagesr   r   r-   r   )r   Zreceive_message)r   Znum_messagesr   r   r-   r   r	   r	   r
   r.   b   s     zAsyncQueue.get_messagesc                 C  s   | j | ||S r   )r   delete_message)r   r3   r   r	   r	   r
   r:   l   s    zAsyncQueue.delete_messagec                 C  s   | j j| ||dS r0   )r   delete_message_batchr5   r	   r	   r
   r;   o   s
      zAsyncQueue.delete_message_batchc                 C  s   | j j| ||dS r0   )r   change_message_visibility_batchr5   r	   r	   r
   r<   t   s
      z*AsyncQueue.change_message_visibility_batchc                 C  s   | j j| |dS r0   )r   Zdelete_queue)r   r   r	   r	   r
   deletey   s    zAsyncQueue.delete
   ApproximateNumberOfMessagesc                 C  s   | j |t| j||tdS r0   r   )r   Z	page_sizeZvtimeoutr   r"   r	   r	   r
   count|   s        zAsyncQueue.count)r   N)N)Nr   )N)N)N)NNN)NN)N)r   NNNN)N)N)N)N)r>   r>   Nr?   )$__name__
__module____qualname____doc__r   r   r   Z
count_slowdumpZsave_to_fileZsave_to_filenamesaveZ
save_to_s3Zload_from_s3Zload_from_fileZload_from_filenameloadclearr   r   r#   r    r(   r'   r)   r,   r/   r4   r7   r2   r.   r:   r;   r<   r=   r@   r	   r	   r	   r
   r      sT    



 

  


      





  N)
rD   
__future__r   Zviner   r3   r   Z_all__r   r   r	   r	   r	   r
   <module>   s   