
    Ih                    >   d Z ddlmZ ddlZddlZddlmZ ddlm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 erddlmZ dZdefdefdefdefdefdZd Zd Zd Z G d d      Z G d d      Z G d de      Z ed e g d      d      Z! G d d       Z"y)!zBase transport interface.    )annotationsN)TYPE_CHECKING)RecoverableConnectionError)ChannelErrorConnectionError)Message)
dictfilter)cached_property)maybe_s_to_ms)TracebackType)r   
StdChannel
Management	Transportz	x-expireszx-message-ttlzx-max-lengthzx-max-length-byteszx-max-priority)expiresmessage_ttl
max_lengthmax_length_bytesmax_priorityc                t    t        t        d |j                         D                    }|rt        | fi |S | S )a!  Convert queue arguments to RabbitMQ queue arguments.

    This is the implementation for Channel.prepare_queue_arguments
    for AMQP-based transports.  It's used by both the pyamqp and librabbitmq
    transports.

    Arguments:
        arguments (Mapping):
            User-supplied arguments (``Queue.queue_arguments``).

    Keyword Arguments:
        expires (float): Queue expiry time in seconds.
            This will be converted to ``x-expires`` in int milliseconds.
        message_ttl (float): Message TTL in seconds.
            This will be converted to ``x-message-ttl`` in int milliseconds.
        max_length (int): Max queue length (in number of messages).
            This will be converted to ``x-max-length`` int.
        max_length_bytes (int): Max queue size in bytes.
            This will be converted to ``x-max-length-bytes`` int.
        max_priority (int): Max priority steps for queue.
            This will be converted to ``x-max-priority`` int.

    Returns
    -------
        Dict: RabbitMQ compatible queue arguments.
    c              3  :   K   | ]  \  }}t        ||        y wN)_to_rabbitmq_queue_argument).0keyvalues      M/var/www/html/planif/env/lib/python3.12/site-packages/kombu/transport/base.py	<genexpr>z.to_rabbitmq_queue_arguments.<locals>.<genexpr>=   s#      C 	$C/s   )r	   dictitems)	argumentsoptionsprepareds      r   to_rabbitmq_queue_argumentsr#   !   sA    8 $ !--/  H +34	&X&A	A    c                8    t         |    \  }}||	 ||      fS |fS r   )RABBITMQ_QUEUE_ARGUMENTS)r   r   opttyps       r   r   r   D   s,    ',HCe/E
::U::r$   c                L    t        dj                  | j                  |            S )Nz<Transport {0.__module__}.{0.__name__} does not implement {1})NotImplementedErrorformat	__class__)objmethods     r   
_LeftBlankr/   J   s&    FMMMM6	#$ $r$   c                  P    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
	 	 	 	 	 	 	 	 d
d	Zy)r   zStandard channel base class.Nc                &    ddl m}  || g|i |S )Nr   )Consumer)kombu.messagingr2   )selfargskwargsr2   s       r   r2   zStdChannel.ConsumerU       ,.t.v..r$   c                &    ddl m}  || g|i |S )Nr   )Producer)r3   r9   )r4   r5   r6   r9   s       r   r9   zStdChannel.ProducerY   r7   r$   c                    t        | d      Nget_bindingsr/   r4   s    r   r<   zStdChannel.get_bindings]       ~..r$   c                     y)zCallback called after RPC reply received.

        Notes
        -----
           Reply queue semantics: can be used to delete the queue
           after transient reply message received.
        N )r4   queues     r   after_reply_message_receivedz'StdChannel.after_reply_message_received`   s    r$   c                    |S r   rA   )r4   r    r6   s      r   prepare_queue_argumentsz"StdChannel.prepare_queue_argumentsi   s    r$   c                    | S r   rA   r>   s    r   	__enter__zStdChannel.__enter__l   s    r$   c                $    | j                          y r   )close)r4   exc_typeexc_valexc_tbs       r   __exit__zStdChannel.__exit__o   s     	

r$   )rJ   ztype[BaseException] | NonerK   zBaseException | NonerL   zTracebackType | NonereturnNone)__name__
__module____qualname____doc__no_ack_consumersr2   r9   r<   rC   rE   rG   rM   rA   r$   r   r   r   P   sT    &///, & %	
 
r$   r   c                      e Zd ZdZd Zd Zy)r   z!AMQP Management API (incomplete).c                    || _         y r   )	transport)r4   rW   s     r   __init__zManagement.__init__{   s	    "r$   c                    t        | d      r;   r=   r>   s    r   r<   zManagement.get_bindings~   r?   r$   N)rP   rQ   rR   rS   rX   r<   rA   r$   r   r   r   x   s    +#/r$   r   c                  "    e Zd ZdZd Zd Zd Zy)
Implementsz/Helper class used to define transport features.c                >    	 | |   S # t         $ r t        |      w xY wr   )KeyErrorAttributeError)r4   r   s     r   __getattr__zImplements.__getattr__   s+    	&9 	& %%	&s    c                    || |<   y r   rA   )r4   r   r   s      r   __setattr__zImplements.__setattr__   s    S	r$   c                (     | j                   | fi |S r   )r,   )r4   r6   s     r   extendzImplements.extend   s    t~~d-f--r$   N)rP   rQ   rR   rS   r_   ra   rc   rA   r$   r   r[   r[      s    9&.r$   r[   F)directtopicfanoutheaders)asynchronousexchange_type
heartbeatsc                  `   e Zd ZdZeZdZdZdZefZ	e
fZdZdZdZej!                         Zd Zd Zd Zd Zd	 Zd
 ZddZd Zd Zd Zd Zd Zej>                  ej@                  e!jD                  e!jF                  ffdZ$d Z%d Z&dddZ'e(d        Z)d Z*e+d        Z,e(d        Z-e(d        Z.y)r   zBase class for transports.NFN/Ac                    || _         y r   )client)r4   rn   r6   s      r   rX   zTransport.__init__   s	    r$   c                    t        | d      )Nestablish_connectionr=   r>   s    r   rp   zTransport.establish_connection   s    566r$   c                    t        | d      )Nclose_connectionr=   r4   
connections     r   rr   zTransport.close_connection   s    122r$   c                    t        | d      )Ncreate_channelr=   rs   s     r   rv   zTransport.create_channel   s    /00r$   c                    t        | d      )Nclose_channelr=   rs   s     r   rx   zTransport.close_channel   s    //r$   c                    t        | d      )Ndrain_eventsr=   )r4   rt   r6   s      r   rz   zTransport.drain_events   r?   r$   c                     y r   rA   )r4   rt   rates      r   heartbeat_checkzTransport.heartbeat_check       r$   c                     y)Nrl   rA   r>   s    r   driver_versionzTransport.driver_version   s    r$   c                     y)Nr   rA   rs   s     r   get_heartbeat_intervalz Transport.get_heartbeat_interval   s    r$   c                     y r   rA   r4   rt   loops      r   register_with_event_loopz"Transport.register_with_event_loop   r~   r$   c                     y r   rA   r   s      r   unregister_from_event_loopz$Transport.unregister_from_event_loop   r~   r$   c                     yNTrA   rs   s     r   verify_connectionzTransport.verify_connection       r$   c                >    j                   fdS )Nc                    j                   st        d      	  d       | j                  |        y # $ r Y y $ r}|j                  v rY d }~y  d }~ww xY w)NzSocket was disconnectedr   )timeout)	connectedr   errno	call_soon)r   exc_read_unavailrt   rz   errorr   s     r   r   z%Transport._make_reader.<locals>._read   sd    ''01JKKQ' NN5$'   99(s    	6 AAAAA)rz   )r4   rt   r   r   r   r   rz   s    ````@@r   _make_readerzTransport._make_reader   s    !..	( 	( r$   c                     yr   rA   rs   s     r   qos_semantics_matches_specz$Transport.qos_semantics_matches_spec   r   r$   c                `    | j                   }|| j                  |      x}| _          ||       y r   )_Transport__readerr   )r4   rt   r   readers       r   on_readablezTransport.on_readable   s.    >%)%6%6z%BBFT]tr$   c                    t               )z(Customise the display format of the URI.)r*   )r4   uriinclude_passwordmasks       r   as_urizTransport.as_uri   s    !##r$   c                    i S r   rA   r>   s    r   default_connection_paramsz#Transport.default_connection_params   s    	r$   c                $    | j                  |       S r   )r   )r4   r5   r6   s      r   get_managerzTransport.get_manager  s    t$$r$   c                "    | j                         S r   )r   r>   s    r   managerzTransport.manager  s    !!r$   c                .    | j                   j                  S r   )
implementsrj   r>   s    r   supports_heartbeatszTransport.supports_heartbeats	  s    )))r$   c                .    | j                   j                  S r   )r   rh   r>   s    r   supports_evzTransport.supports_ev  s    +++r$   )   )Fz**)r   strrN   r   )/rP   rQ   rR   rS   r   rn   can_parse_urldefault_portr   connection_errorsr   channel_errorsdriver_typedriver_namer   default_transport_capabilitiesrc   r   rX   rp   rr   rv   rx   rz   r}   r   r   r   r   r   socketr   r   r   EAGAINEINTRr   r   r   r   propertyr   r   r
   r   r   r   rA   r$   r   r   r      s   $J F M L )* #_N
 K KH/668J7310/ 06~~!<<5<<2M&$  % " " * * , ,r$   r   )#rS   
__future__r   r   r   typingr   amqp.exceptionsr   kombu.exceptionsr   r   kombu.messager   kombu.utils.functionalr	   kombu.utils.objectsr
   kombu.utils.timer   typesr   __all__intr&   r#   r   r/   r   r   r   r[   	frozensetr   r   rA   r$   r   <module>r      s     #     6 : ! - / *#
> ]+#]3!3'-s3%s+  BF;$% %P/ /. .  ",DE" v, v,r$   