
    ^f`                        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
mZ erddlmZ d	Zej        ZddZ G d dej                  Z G d dej                  Z G d dej                  ZdS )zYCarrot compatibility interface.

See https://pypi.org/project/carrot/ for documentation.
    )annotations)count)TYPE_CHECKING   )	messaging)ExchangeQueue)TracebackType)	PublisherConsumerFNc              #     K   |                     |           t          d          D ]#}|r	||k    r d S |                                 V  $d S )N)no_ackr   )consumer   drain_events)
connectionconsumerr   limit	iterations        >/var/www/html/env/lib/python3.11/site-packages/kombu/compat.py_iterconsumer      sp      F###1XX ( (	 	Y%''EE%%''''''( (    c                  v     e Zd ZdZdZdZdZdZdZdZ		 	 	 d fd	Z
d Z fd	Zd
 ZddZed             Z xZS )r   zCarrot compatible producer. directTFNc                `   |r|}|p| j         | _         |p| j        | _        |p| j        | _        ||| _        ||| _        t          | j         t                    s2t          | j         | j        | j        | j        | j                  | _          t                      j        || j         fi | d S )N)nametyperouting_keyauto_deletedurable)	exchangeexchange_typer   r   r    
isinstancer   super__init__)
selfr   r!   r   r"   r    r   channelkwargs	__class__s
            r   r%   zPublisher.__init__)   s      	! J 1DM*@d.@&:$*:"*D"DL$-22 	;$$-*.*<151A151A-1\	; ; ;DM
 	T]==f=====r   c                     | j         |i |S N)publish)r&   argsr(   s      r   sendzPublisher.send@   s    t|T,V,,,r   c                V    t                                                       d| _        d S NT)r$   close_closed)r&   r)   s    r   r1   zPublisher.closeC   s    r   c                    | S r+    r&   s    r   	__enter__zPublisher.__enter__G       r   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | NonereturnNonec                .    |                                   d S r+   r1   r&   r8   r:   r<   s       r   __exit__zPublisher.__exit__J        	

r   c                    | j         S r+   )r'   r5   s    r   backendzPublisher.backendR   s
    |r   )NNNNNNr8   r9   r:   r;   r<   r=   r>   r?   )__name__
__module____qualname____doc__r!   r"   r   r    r   r2   r%   r.   r1   r6   rC   propertyrF   __classcell__r)   s   @r   r   r      s        %%HMKGKG>B?C> > > > > >.- - -            X    r   r   c                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZ	 	 	 d fd	Z fdZd	 Zd
 ZddZd ZddZd ZddZddZddZddZ xZS ) r   zCarrot compatible consumer.r   r   TFNc	                   |                                 | _        ||| _        ||| _        ||| _        |p| j        | _        |p| j        | _        |p| j        | _        |p| j        | _        t          | j        | j        | j        | j        | j                  }t          | j        || j        | j        | j        | j                  } t                      j        | j        |fi |	 d S )N)r   r   r   r    )r!   r   r    	exclusiver   )r'   rF   r    rQ   r   queuer!   r"   r   r   r	   r$   r%   )r&   r   rR   r!   r   r"   r    rQ   r   r(   r)   s             r   r%   zConsumer.__init__c   s	    "))++"DL &DN"*D(dj
 1DM*@d.@&:$*:DM!%!3(,(8(,(8$(L	2 2 2
 dj'"&"2"l $"&"24 4 4 	u7777777r   c                X    || _         t                                          |           d S r+   rF   r$   reviver&   r'   r)   s     r   rU   zConsumer.revive   &    wr   c                n    |                                   | j                                         d| _        d S r0   )cancelrF   r1   r2   r5   s    r   r1   zConsumer.close   s.    r   c                    | S r+   r4   r5   s    r   r6   zConsumer.__enter__   r7   r   r8   r9   r:   r;   r<   r=   r>   r?   c                .    |                                   d S r+   rA   rB   s       r   rC   zConsumer.__exit__   rD   r   c                .    |                      d          S )NT)infinite)	iterqueuer5   s    r   __iter__zConsumer.__iter__   s    ~~t~,,,r   c                    || j         }| j        d                             |          }|r|r|                     |j        |           |S )Nr   )r   queuesgetreceivepayload)r&   r   enable_callbacksmessages       r   fetchzConsumer.fetch   sR    >[F+a.$$V,, 	7 7W_g666r   c                     t          d          )Nz Use fetch(enable_callbacks=True))NotImplementedErrorr5   s    r   process_nextzConsumer.process_next   s    !"DEEEr   c                L    |t          d          |                                 S )Nz&discard_all does not implement filters)ri   purge)r&   
filterfuncs     r   discard_allzConsumer.discard_all   s+    !%8: : :zz||r   c                0    t          | j        | ||          S r+   r   r   r&   r   r   s      r   iterconsumezConsumer.iterconsume       DOT65AAAr   c                J    |                      |          }t          |          S r+   )rr   list)r&   r   its      r   waitzConsumer.wait   s     e$$Bxxr   c              #  z   K   t                      D ])}|                                 }|s||r	||k    r d S |V  *d S r+   )r   rg   )r&   r   r]   items_since_startitems        r   r^   zConsumer.iterqueue   sb      !& 	 	::<<D  ".0E99JJJJ	 	r   )NNNNNNNrG   NFr+   )NN)rH   rI   rJ   rK   rR   r!   r   r"   r    rQ   r   r2   r%   rU   r1   r6   rC   r_   rg   rj   rn   rr   rw   r^   rM   rN   s   @r   r   r   W   sH       %%EHKMGIKG8<?C-18 8 8 8 8 8<           
     - - -   F F F   B B B B          r   r   c                  N     e Zd Z	 	 d
 fd	ZddZd Zd Zd Z fdZd	 Z	 xZ
S )ConsumerSetNc                r   |rd| _         || _        n d| _         |                                | _        g }|r|D ]}|                    |j                   |r?|                                D ]*\  }}	|                    t          j        |fi |	           + t                      j
        | j        |fi | d S )NTF)_provided_channelrF   r'   extendra   itemsappendr	   	from_dictr$   r%   )r&   r   r   	consumersr'   r(   ra   r   
queue_namequeue_optionsr)   s             r   r%   zConsumerSet.__init__   s     	0%)D""DLL%*D"%--//DL 	/% / /ho.... 	L-6__->-> L L)
MeojJJMJJKKKKv8888888r   Fc                0    t          | j        | ||          S r+   rp   rq   s      r   rr   zConsumerSet.iterconsume   rs   r   c                *    |                                  S r+   )rl   r5   s    r   rn   zConsumerSet.discard_all   s    zz||r   c                L    |                      t          j        |fi |          S r+   )	add_queuer	   r   )r&   rR   optionss      r   add_consumer_from_dictz"ConsumerSet.add_consumer_from_dict   s&    ~~eoe??w??@@@r   c                D    |j         D ]}|                     |           d S r+   )ra   r   )r&   r   rR   s      r   add_consumerzConsumerSet.add_consumer   s2    _ 	" 	"ENN5!!!!	" 	"r   c                X    || _         t                                          |           d S r+   rT   rV   s     r   rU   zConsumerSet.revive   rW   r   c                r    |                                   | j        s| j                                         d S d S r+   )rY   r   r'   r1   r5   s    r   r1   zConsumerSet.close   s>    % 	!L     	! 	!r   )NNNr{   )rH   rI   rJ   r%   rr   rn   r   r   rU   r1   rM   rN   s   @r   r}   r}      s        =A9 9 9 9 9 9&B B B B  A A A" " "         ! ! ! ! ! ! !r   r}   )FN)rK   
__future__r   	itertoolsr   typingr   r   r   entityr   r	   typesr
   __all__r   entry_to_queuer   Producerr   r   r}   r4   r   r   <module>r      sH   
 # " " " " "                         # # # # # # # # $######
# ( ( ( (5 5 5 5 5	" 5 5 5p` ` ` ` `y! ` ` `F)! )! )! )! )!)$ )! )! )! )! )!r   