o
    ?Zct                     @   sX   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 dZG d	d
 d
eZdS )zAmazon SQS Connection.    )	transform)AsyncAWSQueryConnection   )boto3)AsyncMessage)
AsyncQueue)AsyncSQSConnectionc                       s   e Zd ZdZd1 fdd	Z	d2ddZd3d	d
Zdd Zd4ddZd5ddZ				d6ddZ
d5ddZd5ddZ	d5ddZ	d2ddZd5ddZ	d5d d!Zd5d"d#Zd7d%d&Zd5d'd(ZeZd)d* Zd5d+d,Z	d5d-d.Zd5d/d0Z  ZS )8r   zAsync SQS Connection.r   Nc                    s.   t d u rtdt j|f||d| d S )Nzboto3 is not installed)region_namedebug)r   ImportErrorsuper__init__)selfsqs_connectionr
   regionkwargs	__class__ [/var/www/chikooza/env/lib/python3.10/site-packages/kombu/asynchronous/aws/sqs/connection.pyr      s   
zAsyncSQSConnection.__init__c                 C   s*   d|i}|rt |d|d< | jd||dS )N	QueueNamedDefaultVisibilityTimeoutCreateQueuecallback)format
get_object)r   
queue_namevisibility_timeoutr   paramsr   r   r   create_queue   s   zAsyncSQSConnection.create_queueFc                 C   s   | j dd |j|dS )NDeleteQueuer   
get_statusid)r   queueforce_deletionr   r   r   r   delete_queue$   s   zAsyncSQSConnection.delete_queuec                 C   s   | j j|d}|d S )N)r   QueueUrl)r   get_queue_url)r   r&   resr   r   r   r*   (   s   z AsyncSQSConnection.get_queue_urlAllc                 C      | j dd|i|j|dS )NGetQueueAttributesAttributeNamer   )r   r%   )r   r&   	attributer   r   r   r   get_queue_attributes,   s   z'AsyncSQSConnection.get_queue_attributesc                 C      | j d||d|j|dS )NSetQueueAttribute)zAttribute.NamezAttribute.Valuer   r#   )r   r&   r0   valuer   r   r   r   set_queue_attribute2   s
   z&AsyncSQSConnection.set_queue_attributer   ApproximateReceiveCountc                 C   sx   d|i}|r
||d< |r&i }	t |D ]\}
}||	dt|
d  < q||	 |d ur.||d< | jd|dtfg|||dS )	NMaxNumberOfMessagesVisibilityTimeoutzAttributeName.r   WaitTimeSecondsReceiveMessageMessage)r   parent)	enumeratestrupdateget_listr   )r   r&   	queue_urlnumber_messagesr   
attributeswait_time_secondsr   r    attrsidxattrr   r   r   receive_message9   s   
z"AsyncSQSConnection.receive_messagec                 C   s   |  |||S N)delete_message_from_handler   r&   receipt_handler   r   r   r   delete_messageM   s   z!AsyncSQSConnection.delete_messagec                 C   s\   i }t |D ]\}}d|d  }|| d|j| d|ji q| jd||jd|dS )NzDeleteMessageBatchRequestEntry.r   .Id.ReceiptHandleDeleteMessageBatchPOSTverbr   r>   r@   r%   rM   r   )r   r&   messagesr   r    imprefixr   r   r   delete_message_batchR   s   z'AsyncSQSConnection.delete_message_batchc                 C   s   | j dd|i||dS )NDeleteMessageReceiptHandler   )r$   rL   r   r   r   rK   _   s   z-AsyncSQSConnection.delete_message_from_handlec                 C   s.   d|i}|rt ||d< | jd||jd|dS )NMessageBodyDelaySecondsSendMessagerR   rS   )intr   r%   )r   r&   message_contentdelay_secondsr   r    r   r   r   send_messagef   s   zAsyncSQSConnection.send_messagec              
   C   sn   i }t |D ]%\}}d|d  }|| d|d | d|d | d|d i q| jd||jd	|d
S )NzSendMessageBatchRequestEntry.r   rO   r   z.MessageBodyz.DelaySeconds   SendMessageBatchrR   rS   )r>   r@   r   r%   )r   r&   rV   r   r    rW   msgrY   r   r   r   send_message_batchp   s   z%AsyncSQSConnection.send_message_batchc                 C   r2   )NChangeMessageVisibility)r\   r9   r   r#   )r   r&   rM   r   r   r   r   r   change_message_visibility~   s   z,AsyncSQSConnection.change_message_visibilityc              
   C   sr   i }t |D ]'\}}d|d  }|| d|d j| d|d j| d|d i q| jd||jd|d	S )
Nz)ChangeMessageVisibilityBatchRequestEntry.r   rO   r   rP   z.VisibilityTimeoutChangeMessageVisibilityBatchrR   rS   rU   )r   r&   rV   r   r    rW   tprer   r   r   change_message_visibility_batch   s   z2AsyncSQSConnection.change_message_visibility_batch c                 C   s(   i }|r||d< | j d|dtfg|dS )NQueueNamePrefix
ListQueuesr)   r   )rA   r   )r   rY   r   r    r   r   r   get_all_queues   s   z!AsyncSQSConnection.get_all_queuesc                 C   s   |  |t| j||S rJ   )rq   r   _on_queue_ready)r   r   r   r   r   r   	get_queue   s   zAsyncSQSConnection.get_queuec                    s   t  fdd|D d S )Nc                 3   s     | ]}|j  r|V  qd S rJ   )urlendswith).0qnamer   r   	<genexpr>   s    z5AsyncSQSConnection._on_queue_ready.<locals>.<genexpr>)next)r   ry   queuesr   rx   r   rr      s   z"AsyncSQSConnection._on_queue_readyc                 C   s   | j dd|jidtfg|dS )NListDeadLetterSourceQueuesr)   r   )rA   rt   r   )r   r&   r   r   r   r   get_dead_letter_source_queues   s
   
z0AsyncSQSConnection.get_dead_letter_source_queuesc                 C   s   | j d|||d|j|dS )NAddPermission)LabelAWSAccountId
ActionNamer   r#   )r   r&   labelaws_account_idaction_namer   r   r   r   add_permission   s   z!AsyncSQSConnection.add_permissionc                 C   r-   )NRemovePermissionr   r   r#   )r   r&   r   r   r   r   r   remove_permission   s   z$AsyncSQSConnection.remove_permission)r   N)NN)FN)r,   NrJ   )r   Nr6   NN)rn   N)__name__
__module____qualname____doc__r   r!   r(   r*   r1   r5   rI   rN   rZ   rK   rc   rg   ri   rm   rq   rs   lookuprr   r~   r   r   __classcell__r   r   r   r   r      s>    














	

	


r   N)r   viner   !kombu.asynchronous.aws.connectionr   extr   messager   r&   r   __all__r   r   r   r   r   <module>   s    