o
    Df2                     @  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	   Y/home/ubuntu/webapp/venv/lib/python3.10/site-packages/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d1ddZdd Z	d1ddZd1ddZ		d3ddZd4ddZd1ddZdd  Z		d5d"d#Zd1d$d%Zd1d&d'Z d1d(d)Z!d1d*d+Z"		-d6d.d/Z#dS )7r   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  r   )NotImplementedError)r   argskwargsr	   r	   r
   _NA   s   zAsyncQueue._NAAllc                 C     | j | ||S r   )r   get_queue_attributes)r   
attributescallbackr	   r	   r
   get_attributes    s   zAsyncQueue.get_attributesc                 C  s   | j | |||S r   )r   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   labelaws_account_idaction_namer   r	   r	   r
   r-   A   s   
zAsyncQueue.add_permissionc                 C  r   r   )r   remove_permission)r   r.   r   r	   r	   r
   r1   G      zAsyncQueue.remove_permissionc                 C  s   | j d||tt|dS )Nr   )wait_time_secondsr   )get_messagesr   r   )r   r   r3   r   r	   r	   r
   readJ   s
   zAsyncQueue.readc                 C  s"   | j j| | |t| j||dS N)r   )r   send_messageget_body_encodedr   _on_message_sent)r   messagedelay_secondsr   r	   r	   r
   writeR   s   
zAsyncQueue.writec                 C     | j j| ||dS r6   )r   send_message_batchr   messagesr   r	   r	   r
   write_batchX      zAsyncQueue.write_batchc                 C  s   |j |_ |j|_|S r   )idmd5)r   orig_messagenew_messager	   r	   r
   r9   ]   s   zAsyncQueue._on_message_sentr   c                 C  s   | j j| |||||dS )N)number_messagesr   r   r3   r   )r   receive_message)r   num_messagesr   r   r3   r   r	   r	   r
   r4   b   s   zAsyncQueue.get_messagesc                 C  r   r   )r   delete_message)r   r:   r   r	   r	   r
   rJ   l   r2   zAsyncQueue.delete_messagec                 C  r=   r6   )r   delete_message_batchr?   r	   r	   r
   rK   o   rB   zAsyncQueue.delete_message_batchc                 C  r=   r6   )r   change_message_visibility_batchr?   r	   r	   r
   rL   t   rB   z*AsyncQueue.change_message_visibility_batchc                 C  s   | j j| |dS r6   )r   delete_queue)r   r   r	   r	   r
   deletey   r2   zAsyncQueue.delete
   ApproximateNumberOfMessagesc                 C  s   | j |t| j||tdS r6   r"   )r   	page_sizevtimeoutr   r%   r	   r	   r
   count|   s
   
zAsyncQueue.count)r   Nr   r*   )NNN)NN)r   NNNN)rO   rO   NrP   )$__name__
__module____qualname____doc__r   r   r   
count_slowdumpsave_to_filesave_to_filenamesave
save_to_s3load_from_s3load_from_fileload_from_filenameloadclearr   r    r&   r#   r,   r+   r-   r1   r5   r<   rA   r9   r4   rJ   rK   rL   rN   rS   r	   r	   r	   r
   r      sP    














N)
rW   
__future__r   viner   r:   r   _all__r   r   r	   r	   r	   r
   <module>   s    