
    Ih                    B   d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ d
ZdZdZdZ G d dej*                        Z G d dej,                  ej.                        Z G d dej0                        Z G d dej2                        Zy)zT`librabbitmq`_ transport.

.. _`librabbitmq`: https://pypi.org/project/librabbitmq/
    )annotationsN)ChannelErrorConnectionError)get_manager)version_string_as_tuple   )base)to_rabbitmq_queue_argumentsz
    librabbitmq version too old to detect RabbitMQ version information
    so make sure you are using librabbitmq 1.5 when using rabbitmq > 3.3
i(  i'  zAssl not supported by librabbitmq, please use pyamqp:// or stunnelc                  "     e Zd ZdZ fdZ xZS )MessagezAMQP Message (librabbitmq).c                    t         |   |||||j                  d      |j                  d      |j                  d      |j                  d             y )Ndelivery_tagcontent_typecontent_encodingheaders)channelbodydelivery_info
propertiesr   r   r   r   )super__init__get)selfr   propsinfor   	__class__s        T/var/www/html/planif/env/lib/python3.12/site-packages/kombu/transport/librabbitmq.pyr   zMessage.__init__$   sR    .1>2"YY'9:IIi( 	 	*    )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   r   r   !   s    %	* 	*r   r   c                  (    e Zd ZdZeZ	 	 	 ddZd Zy)ChannelzAMQP Channel (librabbitmq).Nc                N    ||ni }|j                  |||d       |||d<   ||fS )z%Encapsulate data into a AMQP message.)r   r   r   priority)update)r   r   r'   r   r   r   r   s          r   prepare_messagezChannel.prepare_message5   sH     $.#9Zr
</?&-/ 	0 %-Jz"Zr   c                    t        |fi |}|j                         D ci c]  \  }}|j                  d      | c}}S c c}}w )Nutf8)r
   itemsencode)r   	argumentskwargskvs        r   prepare_queue_argumentszChannel.prepare_queue_argumentsD   s>    /	DVD	090AB1 !#BBBs   A )NNNNN)r   r    r!   r"   r   r)   r2    r   r   r%   r%   0   s    %G-1<@15 Cr   r%   c                      e Zd ZdZeZeZy)
ConnectionzAMQP Connection (librabbitmq).N)r   r    r!   r"   r%   r   r3   r   r   r5   r5   I   s    (GGr   r5   c                  F   e Zd ZdZeZeZeZe	j                  j                  eej                  eefz   Ze	j                  j"                  efz   ZdZdZe	j                  j*                  j-                  dd      Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z d Z!e"d        Z#y)	TransportzAMQP Transport (librabbitmq).amqplibrabbitmqTF)asynchronous
heartbeatsc                    || _         |j                  d      xs | j                  | _        |j                  d      xs | j                  | _        d | _        y )Ndefault_portdefault_ssl_port)clientr   r=   r>   _Transport__reader)r   r?   r/   s      r   r   zTransport.__init__g   sO    "JJ~6K$:K:K!',>!? "7!%!6!6 	r   c                "    t         j                  S N)r8   __version__r   s    r   driver_versionzTransport.driver_versionn   s    r   c                "    |j                         S rB   )r   r   
connections     r   create_channelzTransport.create_channelq   s    !!##r   c                &     |j                   di |S )Nr3   )drain_events)r   rH   r/   s      r   rK   zTransport.drain_eventst   s    &z&&000r   c                0   | j                   }| j                  j                         D ]   \  }}t        ||d      rt	        |||       " |j
                  rt        t              t        |j                  |j                  |j                  |j                  |j                  |j                  |j
                  |j                  dfi |j                   xs i } | j"                  di |}| j                   |_         |j$                  | j                   _        |S )z(Establish connection to the AMQP broker.N)hostuseridpasswordvirtual_hostlogin_methodinsistsslconnect_timeoutr3   )r?   default_connection_paramsr,   getattrsetattrrS   NotImplementedErrorNO_SSL_ERRORdictrM   rN   rO   rP   rQ   rR   rT   transport_optionsr5   rK   )r   conninfonamedefault_valueoptsconns         r   establish_connectionzTransport.establish_connectionw   s    ;;#'#A#A#G#G#I 	7D-8T40$6	7 <<%l33MMoo ))$11$11oo<<'77	
 	/ ''-2	/ t&&kk#'#4#4 r   c                F    d| j                   _        |j                          y)z!Close the AMQP broker connection.N)r?   rK   closerG   s     r   close_connectionzTransport.close_connection   s    #' r   c                ^   |~|j                   j                         D ]	  }d |_         	 t        j                  |j                                |j                   j                          |j                  j                          d | j                  _        d | _
        y # t        t        f$ r Y ^w xY wrB   )channelsvaluesrH   osrc   filenoOSError
ValueErrorclear	callbacksr?   rK   )r   rH   r   s      r   _collectzTransport._collect   s    !%..557 *%)"***,- %%'  &&(#'  Z( s   #B B,+B,c                    |j                   S rB   )	connectedrG   s     r   verify_connectionzTransport.verify_connection   s    ###r   c                \    |j                  |j                         | j                  ||       y rB   )
add_readerri   on_readable)r   rH   loops      r   register_with_event_loopz"Transport.register_with_event_loop   s&    !1!1:t	
r   c                4    t        | j                  g|i |S rB   )r   r?   )r   argsr/   s      r   r   zTransport.get_manager   s    4;;8888r   c                    	 |j                   }|j                  d      dk(  rt        |d         dk  S y# t        $ r% t	        j
                  t        t                     Y yw xY w)NproductRabbitMQversion)   r}   T)server_propertiesr   r   AttributeErrorwarningswarnUserWarning	W_VERSION)r   rH   r   s      r   qos_semantics_matches_specz$Transport.qos_semantics_matches_spec   se    	J00E yy#z1.uY/?@6II  	2MM+i01 	2s   4 +A"!A"c                j    dd| j                   j                  r| j                  n| j                  dddS )Nguest	localhostPLAIN)rN   rO   porthostnamerQ   )r?   rS   r>   r=   rD   s    r   rU   z#Transport.default_connection_params   s6     .2kkooT**++##
 	
r   N)$r   r    r!   r"   r5   DEFAULT_PORTr=   DEFAULT_SSL_PORTr>   r	   r7   connection_errorsr   socketerrorIOErrorrj   channel_errorsr   driver_typedriver_name
implementsextendr   rE   rI   rK   ra   rd   rn   rq   rv   r   r   propertyrU   r3   r   r   r7   r7   P   s    'JL' 	((V\\7G,= 	= 
 	%%7  KK**11 2 J
 $1.
$

9 
 
r   r7   )r"   
__future__r   rh   r   r   r9   r8   r   r   kombu.utils.amq_managerr   kombu.utils.textr    r	   r
   r   r   r   rY   r   r%   
StdChannelr5   r7   r3   r   r   <module>r      s   
 # 	    5 / 4  -	  
*dll *CdllDOO C2 n
 n
r   