o
    ?Zc                     @   s<   d 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.    )	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   V/var/www/chikooza/env/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"   /   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_timeout2   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,   ?   s   
zAsyncQueue.add_permissionc                 C   r   r   )r   remove_permission)r   r-   r   r   r   r	   r0   E      zAsyncQueue.remove_permissionc                 C   s   | j d||tt|dS )Nr   )wait_time_secondsr   )get_messagesr   r
   )r   r   r2   r   r   r   r	   readH   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	   writeP   s   
zAsyncQueue.writec                 C      | j j| ||dS r5   )r   send_message_batchr   messagesr   r   r   r	   write_batchV      zAsyncQueue.write_batchc                 C   s   |j |_ |j|_|S r   )idmd5)r   orig_messagenew_messager   r   r	   r8   [   s   zAsyncQueue._on_message_sentr   c                 C   s   | j j| |||||dS )N)number_messagesr   r   r2   r   )r   receive_message)r   num_messagesr   r   r2   r   r   r   r	   r3   `   s   zAsyncQueue.get_messagesc                 C   r   r   )r   delete_message)r   r9   r   r   r   r	   rI   j   r1   zAsyncQueue.delete_messagec                 C   r<   r5   )r   delete_message_batchr>   r   r   r	   rJ   m   rA   zAsyncQueue.delete_message_batchc                 C   r<   r5   )r   change_message_visibility_batchr>   r   r   r	   rK   r   rA   z*AsyncQueue.change_message_visibility_batchc                 C   s   | j j| |dS r5   )r   delete_queue)r   r   r   r   r	   deletew   r1   zAsyncQueue.delete
   ApproximateNumberOfMessagesc                 C   s   | j |t| j||tdS r5   r!   )r   	page_sizevtimeoutr   r$   r   r   r	   countz   s
   
zAsyncQueue.count)r   Nr   r)   )NNN)NN)r   NNNN)rN   rN   NrO   )$__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,   r0   r4   r;   r@   r8   r3   rI   rJ   rK   rM   rR   r   r   r   r	   r      sP    














N)rV   viner   r9   r   _all__r
   r   r   r   r   r	   <module>   s    