Ë
    UV.j¹.  ã                  ó–   — d Z ddlmZ ddl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d
lmZ ddlmZ dZ G d„ de	«      Zd„ Zd„ Zy)zAmazon SQS Connection.é    )ÚannotationsN)Ú
Serializer)Ú	transform)ÚAsyncAWSQueryConnection)Ú
AWSRequesté   )Úboto3)ÚAsyncMessage)Ú
AsyncQueue)ÚAsyncSQSConnectionc                  óè   ‡ — e Zd ZdZ	 	 	 	 dˆ fd„	Zd„ Zd„ Zdd„Z	 dd„Zdd„Z	d„ Z
dd	„Zdd
„Z	 	 	 dd„Zdd„Zdd„Z	 dd„Z	 dd„Zdd„Z	 dd„Zdd„Zdd„Zdd„ZeZd„ Zdd„Z	 dd„Zdd„Zˆ xZS ) r   zAsync SQS Connection.c                ó®   •— t         €t        d«      ‚t        ‰| �  |f||dœ|¤Ž |r|ndg| _        t        |t        «      r	|g| _        y |xs g | _        y )Nzboto3 is not installed)Úregion_nameÚdebugÚApproximateReceiveCount)r	   ÚImportErrorÚsuperÚ__init__Úmessage_system_attribute_namesÚ
isinstanceÚstrÚmessage_attribute_names)ÚselfÚsqs_connectionr   Úregionr   r   ÚkwargsÚ	__class__s          €úgC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\kombu/asynchronous/aws/sqs/connection.pyr   zAsyncSQSConnection.__init__   s|   ø€ ô ˆ=ÜÐ6Ó7Ð7Ü‰ÑØð	
à eñ	
ð ò	
ñ /MÑ*ÐSlÐRmð 	Ô+ô *4Ð4KÌSÔ)QÐ$Ð%ð 	Õ$à)Ò/¨Rð 	Õ$ó    c                ó¸   — |j                  «       }|r||d<   d|i}i }|j                  «       dk(  rd|i}|j                  «       dk(  rd|d<   t        d	|||dœ|¤ŽS )
NÚActionÚdataÚgetÚparamsÚpostz0application/x-www-form-urlencoded; charset=utf-8úContent-Type)ÚmethodÚurlÚheaders© )ÚcopyÚlowerr   )r   Ú	operationr$   Ú	queue_urlr'   Úparam_payloadr)   s          r   Ú_create_query_requestz(AsyncSQSConnection._create_query_request/   sr   € Ø—‘“ˆÙØ(ˆF�8Ñð   Ð(ˆØˆØ�<‰<‹>˜UÒ"à% vÐ.ˆMà�<‰<‹>˜VÒ#Ø&XˆG�NÑ#äÐY ¨YÀÑYÈ=ÑYÐYr   c                ó  — |j                  «       }||d<   | j                  j                  j                  }|j	                  |«      }| j                  j
                  j                  }i }|j                  d   }d|› �}	|	|d<   dj                  |j                  d   |j                  «      }
|
|d<   t        j                  |«      j                  «       |dœ}|j                  j                  d	t        j                   «      }t#        d||d
œ|¤ŽS )NÚQueueUrlÚjsonVersionzapplication/x-amz-json-r&   z{}.{}ÚtargetPrefixzX-Amz-Target)r"   r)   r'   )r'   r(   r*   )r+   r   ÚmetaÚservice_modelÚoperation_modelÚ	_endpointÚhostÚmetadataÚformatÚnameÚjsonÚdumpsÚencodeÚhttpr#   r   ÚDEFAULT_METHODr   )r   r-   r$   r.   r6   r7   r(   r)   Újson_versionÚcontent_typeÚtargetr/   r'   s                r   Ú_create_json_requestz'AsyncSQSConnection._create_json_request@   s  € Ø—‘“ˆØ&ˆˆzÑà×+Ñ+×0Ñ0×>Ñ>ˆØ'×7Ñ7¸	ÓBˆà×!Ñ!×+Ñ+×0Ñ0ˆàˆà&×/Ñ/°Ñ>ˆØ0°°Ð?ˆØ".ˆ�Ñð —‘Ø×$Ñ$ ^Ñ4Ø× Ñ ó
ˆð #)ˆ�Ñô —J‘J˜vÓ&×-Ñ-Ó/Øñ
ˆð
 !×%Ñ%×)Ñ)¨(´J×4MÑ4MÓNˆÜð 
ØØñ
ð ñ
ð 	
r   c                óî  — | j                   j                  }| j                   j                  j                  }|j                  }	i |xs i ¥|j                  |	i «      ¥}
|	dk(  r| j                  ||
||«      }n(|	dk(  r| j                  ||
|«      }nt        d|	› d�«      ‚|j                  j                  «       dk(  rdnd}|j                  |||¬«       |j                  «       }| j                  ||¬	«      S )
aõ  Override make_request to support different protocols.

        botocore has changed the default protocol of communicating
        with SQS backend from 'query' to 'json', so we need a special
        implementation of make_request for SQS. More information on this can
        be found in: https://github.com/celery/kombu/pull/1807.

        protocol_params: Optional[dict[str, dict]] of per-protocol additional parameters.
            Supported for the SQS query to json protocol transition.
        Úqueryr=   zUnsupported protocol: Ú.r#   zpresign-urlÚstandard)Úsigning_type©Úcallback)r   Ú_request_signerr5   r6   Úprotocolr#   r0   rE   Ú	Exceptionr'   r,   ÚsignÚprepareÚ_mexe)r   Úoperation_namer$   r.   ÚverbrL   Úprotocol_paramsÚsignerr6   rN   Ú
all_paramsÚrequestrJ   Úprepared_requests                 r   Úmake_requestzAsyncSQSConnection.make_requestb   s  € ð ×$Ñ$×4Ñ4ˆà×+Ñ+×0Ñ0×>Ñ>ˆØ ×)Ñ)ˆØL˜š 2ÐL¨/×*=Ñ*=¸hÈÓ*KÐLˆ
à�wÒØ×0Ñ0Ø 
¨I°tó=‰Gà˜ÒØ×/Ñ/Ø 
¨Ió7‰Gô Ð4°X°J¸aÐ@ÓAÐAà(/¯©×(<Ñ(<Ó(>À%Ò(G‘}Øð 	ð 	�‰�N G¸,ˆÔGØ"Ÿ?™?Ó,Ðà�z‰zÐ*°XˆzÓ>Ð>r   c                óT   — d|i}|rt        |d«      |d<   | j                  d||¬«      S )NÚ	QueueNameÚdÚDefaultVisibilityTimeoutÚCreateQueuerK   )r;   Ú
get_object)r   Ú
queue_nameÚvisibility_timeoutrL   r$   s        r   Úcreate_queuezAsyncSQSConnection.create_queue„   sC   € à˜zÐ*ˆÙÜ17Ø" Có2ˆFÐ-Ñ.ð �‰˜}¨fØ(0ð ó 2ð 	2r   c                ó@   — | j                  dd |j                  |¬«      S )NÚDeleteQueuerK   ©Ú
get_statusÚid)r   ÚqueueÚforce_deletionrL   s       r   Údelete_queuezAsyncSQSConnection.delete_queueŽ   s%   € Ø�‰˜}¨d°E·H±HØ(0ð ó 2ð 	2r   c                óD   — | j                   j                  |¬«      }|d   S )N)r\   r2   )r   Úget_queue_url)r   ri   Úress      r   rm   z AsyncSQSConnection.get_queue_url’   s%   € Ø×!Ñ!×/Ñ/¸%Ð/Ó@ˆØ�:‰Ðr   c                óD   — | j                  dd|i|j                  |¬«      S )NÚGetQueueAttributesÚAttributeNamerK   )r`   rh   )r   ri   Ú	attributerL   s       r   Úget_queue_attributesz'AsyncSQSConnection.get_queue_attributes–   s+   € Ø�‰Ø  ?°IÐ">Ø�H‰H˜xð ó 
ð 	
r   c           
     óV   — | j                  di |j                  |d||ii||dœdœ¬«      S )NÚSetQueueAttributeÚ
Attributes)zAttribute.NamezAttribute.Value©r=   rG   )rL   rU   rf   )r   ri   rr   ÚvaluerL   s        r   Úset_queue_attributez&AsyncSQSConnection.set_queue_attributeœ   sA   € Ø�‰ØØØ�H‰H˜xà%¨	°5Ð'9Ð:Ø,5È%ÑPñð	 ó 
ð 	
r   c           	     óæ  — d|i}i i dœ}	|�|n| j                   }
| j                  r| j                  nd }|r||d<   |
rG|	d   j                  dt        |
«      i«       |	d   j                  t	        dt        |
«      i«      «       |rG|	d   j                  dt        |«      i«       |	d   j                  t	        dt        |«      i«      «       |�||d	<   | j                  d
|dt        fg||||	¬«      S )NÚMaxNumberOfMessages)rG   r=   ÚVisibilityTimeoutr=   ÚMessageSystemAttributeNamesrG   ÚMessageSystemAttributeNameÚMessageAttributeNamesÚWaitTimeSecondsÚReceiveMessageÚMessage)rL   ÚparentrU   )r   r   ÚupdateÚlistÚ_query_object_encodeÚget_listr
   )r   ri   r.   Únumber_messagesrb   Ú
attributesÚwait_time_secondsrL   r$   Úproto_paramsÚattrsÚmsg_attr_namess               r   Úreceive_messagez"AsyncSQSConnection.receive_message§   s  € ð
 (¨Ð9ˆØ!#¨RÑ0ˆØ(Ð4‘
¸$×:]Ñ:]ˆØ9=×9UÒ9U˜×5Ò5Ð[_ˆáØ*<ˆFÐ&Ñ'ÙØ˜Ñ ×'Ñ'Ð)FÌÈUËÐ(TÔUØ˜Ñ!×(Ñ(Ô)=Ð?[Ô]aÐbgÓ]hÐ>iÓ)jÔkÙØ˜Ñ ×'Ñ'Ð)@Ä$À~ÓBVÐ(WÔXØ˜Ñ!×(Ñ(Ô)=Ð?VÔX\Ð]kÓXlÐ>mÓ)nÔoØÐ(Ø(9ˆFÐ$Ñ%à�}‰}Ø˜f¨	´<Ð'@Ð&AØ °Ø(ð ó 
ð 	
r   c                ó(   — | j                  |||«      S ©N)Údelete_message_from_handle©r   ri   Úreceipt_handlerL   s       r   Údelete_messagez!AsyncSQSConnection.delete_messageÂ   s   € Ø×.Ñ.Ø�> 8ó
ð 	
r   c           
     ó  — d|D �cg c]  }|j                   |j                  dœ‘Œ c}it        d|D �cg c]  }|j                   |j                  dœ‘Œ c}i«      dœ}| j                  di |j                   d||¬«      S c c}w c c}w )NÚEntries)ÚIdÚReceiptHandleÚDeleteMessageBatchRequestEntryrw   ÚDeleteMessageBatchÚPOST©rT   rL   rU   ©rh   r“   r†   r`   )r   ri   ÚmessagesrL   ÚmÚp_paramss         r   Údelete_message_batchz'AsyncSQSConnection.delete_message_batchÇ   s¨   € ð ÑU]Ó^ÑU]ÐPQ 1§4¡4¸!×:JÑ:JÓKÐU]Ñ^ðô *Ø0á%ó3á%˜ð Ÿ4™4°!×2BÑ2BÓCØ%ñ3ð+ó ñ	

ˆð �‰Ø  " e§h¡hØ (¸Hð ó 
ð 	
ùò _ùò3s
   † A>³ Bc                ó0   — | j                  dd|i||¬«      S )NÚDeleteMessager˜   rK   )rg   r’   s       r   r‘   z-AsyncSQSConnection.delete_message_from_handleÙ   s'   € à�‰Ø˜o¨~Ð>Ø˜Hð ó 
ð 	
r   c                ój   — d|i}|rt        |«      |d<   | j                  d||j                  d|¬«      S )NÚMessageBodyÚDelaySecondsÚSendMessager›   ©rT   rL   )Úintr`   rh   )r   ri   Úmessage_contentÚdelay_secondsrL   r$   s         r   Úsend_messagezAsyncSQSConnection.send_messageà   sD   € à Ð1ˆÙÜ%(¨Ó%7ˆF�>Ñ"Ø�‰Ø˜6 5§8¡8Ø (ð ó 
ð 	
r   c           
     óÎ   — i }t        |«      D ]6  \  }}d|dz   › �}|j                  |› d�|d   |› d�|d   |› d�|d   i«       Œ8 | j                  d||j                  d	|¬
«      S )NzSendMessageBatchRequestEntry.r   z.Idr   z.MessageBodyz.DelaySecondsé   ÚSendMessageBatchr›   r¨   )Ú	enumerater„   r`   rh   )r   ri   rž   rL   r$   ÚiÚmsgÚprefixs           r   Úsend_message_batchz%AsyncSQSConnection.send_message_batchê   s’   € ØˆÜ Ö)‰FˆAˆsØ4°Q¸±U°GÐ<ˆFØ�M‰MØ�(˜#�  A¡Ø�(˜,Ð'¨¨Q©Ø�(˜-Ð(¨#¨a©&ðõ ð *ð �‰Ø ¨¯©Ø (ð ó 
ð 	
r   c                óF   — | j                  d||dœ|j                  |¬«      S )NÚChangeMessageVisibility)r˜   r|   rK   rf   )r   ri   r“   rb   rL   s        r   Úchange_message_visibilityz,AsyncSQSConnection.change_message_visibilityø   s/   € à�‰Ø%Ø,Ø"4ñ6à�H‰H˜xð	 ó 
ð 	
r   c                óÒ   — |D �cg c]%  }|d   j                   |d   j                  |d   dœ‘Œ' }}d|it        d|i«      dœ}| j                  di |j                   d||¬	«      S c c}w )
Nr   r   )r—   r˜   r|   r–   Ú(ChangeMessageVisibilityBatchRequestEntryrw   ÚChangeMessageVisibilityBatchr›   rœ   r�   )r   ri   rž   rL   ÚtÚentriesr    s          r   Úchange_message_visibility_batchz2AsyncSQSConnection.change_message_visibility_batch  s”   € ñ ó
á�ð �Q‘4—7‘7¨Q¨q©T×-@Ñ-@ÐWXÐYZÑW[Ó\Øð 	ð 
ð  Ð(Ü)Ð+UÐW^Ð*_Ó`ñ
ˆð
 �‰Ø*¨B°·±Ø (Ø$ð ó 
ð 	
ùò
s   …*A$c                óL   — i }|r||d<   | j                  d|dt        fg|¬«      S )NÚQueueNamePrefixÚ
ListQueuesr2   rK   )r‡   r   )r   r³   rL   r$   s       r   Úget_all_queuesz!AsyncSQSConnection.get_all_queues  s=   € ØˆÙØ(.ˆFÐ$Ñ%Ø�}‰}Ø˜& J´
Ð#;Ð"<Øð ó 
ð 	
r   c                óP   — | j                  |t        | j                  ||«      «      S r�   )rÁ   r   Ú_on_queue_ready)r   ra   rL   s      r   Ú	get_queuezAsyncSQSConnection.get_queue  s*   € à×"Ñ"ØÜ�d×*Ñ*¨H°jÓAó
ð 	
r   c                ó.   ‡— t        ˆfd„|D «       d «      S )Nc              3  óZ   •K  — | ]"  }|j                   j                  ‰«      sŒ|–— Œ$ y ­wr�   )r(   Úendswith)Ú.0Úqr<   s     €r   Ú	<genexpr>z5AsyncSQSConnection._on_queue_ready.<locals>.<genexpr>%  s!   øè ø€ Ð7™�1 !§%¡%§.¡.°Õ"6ŒQ™ùs   ƒ +¤+)Únext)r   r<   Úqueuess    ` r   rÃ   z"AsyncSQSConnection._on_queue_ready#  s   ø€ ÜÛ7™Ó7¸ó
ð 	
r   c                óR   — | j                  dd|j                  idt        fg|¬«      S )NÚListDeadLetterSourceQueuesr2   rK   )r‡   r(   r   )r   ri   rL   s      r   Úget_dead_letter_source_queuesz0AsyncSQSConnection.get_dead_letter_source_queues(  s4   € Ø�}‰}Ø(¨:°u·y±yÐ*AØœ*Ð%Ð&Øð ó 
ð 	
r   c                óH   — | j                  d|||dœ|j                  |¬«      S )NÚAddPermission)ÚLabelÚAWSAccountIdÚ
ActionNamerK   rf   )r   ri   ÚlabelÚaws_account_idÚaction_namerL   s         r   Úadd_permissionz!AsyncSQSConnection.add_permission/  s4   € à�‰ØØØ+Ø&ñ(ð �H‰H˜xð ó 
ð 	
r   c                óD   — | j                  dd|i|j                  |¬«      S )NÚRemovePermissionrÒ   rK   rf   )r   ri   rÕ   rL   s       r   Úremove_permissionz$AsyncSQSConnection.remove_permission9  s*   € Ø�‰Ø ¨%Ð 0°%·(±(ÀXð ó 
ð 	
r   )r   NNN)NN)FN)ÚAllNr�   )r   NNNN)Ú N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r0   rE   rZ   rc   rk   rm   rs   ry   rŽ   r”   r¡   r‘   r¬   r´   r·   r½   rÁ   rÄ   ÚlookuprÃ   rÏ   rØ   rÛ   Ú__classcell__)r   s   @r   r   r      s¹   ø„ Ùð
 ØØ'+Ø $õ
ò0Zò" 
óD ?ðF 8<ó2ó2òó
ó	
ð GKØ+/Øó
ó6
ó

ð& -1ó
ð 37ó
ó
ð @Dó
ó
ó"
ó
ð €Fò
ó

ð !%ó
÷
r   r   c                ót   — i }t        |d| «       |j                  «       D ��ci c]  \  }}||“Œ
 c}}S c c}}w )NrÝ   )Ú_query_object_encode_partÚitems)ræ   r$   ÚkÚvs       r   r†   r†   ?  s9   € Ø€FÜ˜f b¨%Ô0Ø#Ÿ\™\œ^Ô,™^‘T�Q˜ˆAˆq‰D˜^Ò,Ð,ùÓ,s   £4c                ó"  — |r|› d�n|}t        |t        t        f«      r(t        |«      D ]  \  }}t	        | |› |dz   › �|«       Œ y t        |t
        «      r*|j                  «       D ]  \  }}t	        | |› |› �|«       Œ y t        |«      | |<   y )NrH   r   )r   r…   Útupler°   rå   Údictræ   r   )r$   r³   ÚpartÚdottedr±   ÚitemÚkeyrx   s           r   rå   rå   E  sŒ   € Ù#�ˆx�q‰\¨€Fä�$œœu˜Ô&Ü  –‰GˆAˆtÜ% f°°¸¸Q¹¸Ð.@À$ÕGñ 'ä	�Dœ$Ô	ØŸ*™*ž,‰JˆC�Ü% f°°¸¸Ð.>ÀÕFñ 'ô ˜T›ˆˆvŠr   )rá   Ú
__future__r   r=   Úbotocore.serializer   Úviner   Ú!kombu.asynchronous.aws.connectionr   Úkombu.asynchronous.aws.extr   Úextr	   Úmessager
   ri   r   Ú__all__r   r†   rå   r*   r   r   Ú<module>rø      sB   ðÙ å "ã å )Ý å EÝ 1å Ý !Ý à
!€ôh
Ð0ô h
òV	-ó
#r   