
    Ih                        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mZ dd
lmZ erddlmZ dZ G d d      Z G d de      Z G d de      Zy)zSimple messaging interface.    )annotationsN)deque)Empty)	monotonic)TYPE_CHECKING   )entity	messaging)maybe_channel)TracebackType)SimpleQueueSimpleBufferc                      e Zd ZeZdZd Z	 	 	 	 	 	 	 	 ddZddZddZd Z		 	 ddZ
d	 Zd
 Zd Zd Zd Zd Zd ZeZy)
SimpleBaseFc                    | S N selfs    E/var/www/html/planif/env/lib/python3.12/site-packages/kombu/simple.py	__enter__zSimpleBase.__enter__   s        c                $    | j                          y r   )close)r   exc_typeexc_valexc_tbs       r   __exit__zSimpleBase.__exit__   s     	

r   c                    t        |      | _        || _        || _        || _        | j                  j
                  d   | _        t               | _        | j                  j                  | j                         y )Nr   )r   channelproducerconsumerno_ackqueuesqueuer   bufferregister_callback_receive)r   r    r!   r"   r#   s        r   __init__zSimpleBase.__init__#   sX    $W-  ]]))!,
g''6r   Nc                   |s| j                         S | j                          t               }|}	 | j                  r| j                  j	                         S ||dk  r| j                         	 | j                  j                  j                  j                  |       |t               |z
  }||z
  }# t        j                  $ r | j                         w xY w)Ng        )timeout)
get_nowait_consumer   r&   popleftr   r    
connectionclientdrain_eventssocketr+   )r   blockr+   
time_start	remainingelapseds         r   getzSimpleBase.get,   s    ??$$[
	{{{{**,,$c)9jjl"# ''..;;I;N $#+
2#g-	1 & >> #jjl"#s   .0B3 3$Cc                    | j                   j                  | j                  | j                  j                        }|s| j                         |S )N)r#   accept)r%   r7   r#   r"   r9   r   )r   ms     r   r,   zSimpleBase.get_nowaitN   s:    JJNN$++dmm6J6JNK**,r   c                H     | j                   j                  |f||||d| y )N)
serializerrouting_keyheaderscompression)r!   publish)r   messager<   r>   r?   r=   kwargss          r   putzSimpleBase.putT   s3    g 	()3*5&-*5		(
 !'	(r   c                6    | j                   j                         S r   )r"   purger   s    r   clearzSimpleBase.clear]   s    }}""$$r   c                F    | j                   j                  d      \  }}}|S )NT)passive)r%   queue_declare)r   _sizes      r   qsizezSimpleBase.qsize`   s$    ZZ--d-;
4r   c                8    | j                   j                          y r   )r"   cancelr   s    r   r   zSimpleBase.closed   s    r   c                :    | j                   j                  |       y r   )r&   append)r   message_datarA   s      r   r(   zSimpleBase._receiveg   s    7#r   c                x    | j                   s.| j                  j                  | j                         d| _         y y )N)r#   T)
_consumingr"   consumer#   r   s    r   r-   zSimpleBase._consumej   s.    MM!!!5"DO r   c                "    | j                         S )z`len(self) -> self.qsize()`.)rL   r   s    r   __len__zSimpleBase.__len__o   s    zz|r   c                     y)NTr   r   s    r   __bool__zSimpleBase.__bool__s   s    r   )r   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | NonereturnNone)F)TN)NNNN)__name__
__module____qualname__r   rS   r   r   r)   r7   r,   rC   rF   rL   r   r(   r-   rV   rX   __nonzero__r   r   r   r   r      s    EJ, & %	
 
7 .D GK(%$#
Kr   r   c                  >     e Zd ZdZdZi Zi ZddiZ	 	 	 d fd	Z xZ	S )r   z!Simple API for persistent queues.Ftypedirectc
                   |}
t        | j                  fi |xs i }t        | j                  fi |xs i }t        | j                  fi |xs i }|| j                  }t        |
t        j                        s3t        j                  |fi |}t        j                  |||fd|i|}
|}n|
j                  }|
j                  }t        j                  ||
|	      }t        j                  |||||      }t        | =  ||||       y )Nqueue_arguments)r9   )r<   r=   r?   )dict
queue_opts
queue_argsexchange_optsr#   
isinstancer	   QueueExchangeexchanger=   r
   ConsumerProducersuperr)   )r   r    namer#   re   rf   rg   r<   r?   r9   r%   rk   r=   r"   r!   	__class__s                  r   r)   zSimpleQueue.__init__   s    $//>Z-=2>
$//>Z-=2>
T//G=3FBG>[[F%.t=}=HLLx /1;/#-/E K~~H++K%%guVD%%gx1;2=2=? 	(!6	+r   )NNNNNNN)
r[   r\   r]   __doc__r#   re   rf   rg   r)   __classcell__)rp   s   @r   r   r   x   s2    +FJJX&M>BAE*.+ +r   r   c                  *    e Zd ZdZdZdddZddddZy)r   z Simple API for ephemeral queues.TF)durableauto_delete	transient)rt   delivery_moderu   N)r[   r\   r]   rq   r#   re   rg   r   r   r   r   r      s'    *F"!%'J %&1$(*Mr   r   )rq   
__future__r   r2   collectionsr   r%   r   timer   typingr    r	   r
   r/   r   typesr   __all__r   r   r   r   r   r   <module>r      sQ    ! "        %#
)a aH +*  +F*; *r   