o
    wvXj„  ã                   @   s–   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ dZe
jZddd„ZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZd
S )zYCarrot compatibility interface.

See https://pypi.org/project/carrot/ for documentation.
é    )Úabsolute_importÚunicode_literals)Úcounté   )Ú	messaging)ÚExchangeÚQueue)Úitems)Ú	PublisherÚConsumerFNc                 c   s<   � |j |d� tdƒD ]}|r||kr d S |  ¡ V  qd S )N)Úno_ackr   )Úconsumer   Údrain_events)Ú
connectionÚconsumerr   ÚlimitÚ	iteration© r   úI/var/www/html/myproject/venv/lib/python3.10/site-packages/kombu/compat.pyÚ_iterconsume   s   €ýr   c                       sp   e Zd ZdZdZdZdZdZdZdZ				d‡ fdd„	Z
d	d
„ Z‡ fdd„Zdd„ Zdd„ Zedd„ ƒZ‡  ZS )r
   zCarrot compatible producer.Ú ÚdirectTFNc           	         s’   |r|}|p| j | _ |p| j| _|p| j| _|d ur|| _|d ur$|| _t| j tƒs9t| j | j| j| j| jd�| _ tt| ƒj	|| j fi |¤Ž d S )N)ÚnameÚtypeÚrouting_keyÚauto_deleteÚdurable)
ÚexchangeÚexchange_typer   r   r   Ú
isinstancer   Úsuperr
   Ú__init__)	Úselfr   r   r   r   r   r   ÚchannelÚkwargs©Ú	__class__r   r   r!   %   s"   ü zPublisher.__init__c                 O   s   | j |i |¤ŽS ©N)Úpublish)r"   Úargsr$   r   r   r   Úsend<   ó   zPublisher.sendc                    s   t t| ƒ ¡  d| _d S ©NT)r    r
   ÚcloseÚ_closed©r"   r%   r   r   r-   ?   s   
zPublisher.closec                 C   ó   | S r'   r   r/   r   r   r   Ú	__enter__C   ó   zPublisher.__enter__c                 G   ó   |   ¡  d S r'   ©r-   ©r"   Úexc_infor   r   r   Ú__exit__F   ó   zPublisher.__exit__c                 C   s   | j S r'   )r#   r/   r   r   r   ÚbackendI   s   zPublisher.backend)NNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r.   r!   r*   r-   r1   r7   Úpropertyr9   Ú__classcell__r   r   r%   r   r
      s$    þr
   c                       s®   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d„	Z‡ fd	d
„Zdd„ Zdd„ Zdd„ Zdd„ Zd dd„Zdd„ Zd!dd„Zd"dd„Zd!dd„Zd dd„Z‡  ZS )#r   zCarrot compatible consumer.r   r   TFNc	           
         s¾   |  ¡ | _|d ur|| _|d ur|| _|d ur|| _|p| j| _|p$| j| _|p*| j| _|p0| j| _t	| j| j| j| j| jd�}t
| j|| j| j| j| jd�}tt| ƒj| j|fi |	¤Ž d S )N)r   r   r   r   )r   r   r   Ú	exclusiver   )r#   r9   r   r@   r   Úqueuer   r   r   r   r   r    r   r!   )
r"   r   rA   r   r   r   r   r@   r   r$   r%   r   r   r!   Z   s2   
üû zConsumer.__init__c                    ó   || _ tt| ƒ |¡ d S r'   )r9   r    r   Úrevive©r"   r#   r%   r   r   rC   x   ó   zConsumer.revivec                 C   s   |   ¡  | j ¡  d| _d S r,   )Úcancelr9   r-   r.   r/   r   r   r   r-   |   s   

zConsumer.closec                 C   r0   r'   r   r/   r   r   r   r1   �   r2   zConsumer.__enter__c                 G   r3   r'   r4   r5   r   r   r   r7   „   r8   zConsumer.__exit__c                 C   s   | j dd�S )NT)Úinfinite)Ú	iterqueuer/   r   r   r   Ú__iter__‡   r8   zConsumer.__iter__c                 C   s8   |d u r| j }| jd  |¡}|r|r|  |j|¡ |S )Nr   )r   ÚqueuesÚgetÚreceiveÚpayload)r"   r   Úenable_callbacksÚmessager   r   r   ÚfetchŠ   s   zConsumer.fetchc                 C   s   t dƒ‚)Nz Use fetch(enable_callbacks=True))ÚNotImplementedErrorr/   r   r   r   Úprocess_next“   ó   zConsumer.process_nextc                 C   s   |d urt dƒ‚|  ¡ S )Nz&discard_all does not implement filters)rQ   Úpurge)r"   Ú
filterfuncr   r   r   Údiscard_all–   s
   ÿzConsumer.discard_allc                 C   ó   t | j| ||ƒS r'   ©r   r   ©r"   r   r   r   r   r   Úiterconsumeœ   r+   zConsumer.iterconsumec                 C   s   |   |¡}t|ƒS r'   )rZ   Úlist)r"   r   Úitr   r   r   ÚwaitŸ   s   
zConsumer.waitc                 c   s>   � t ƒ D ]}|  ¡ }|s|d u s|r||kr d S |V  qd S r'   )r   rP   )r"   r   rG   Úitems_since_startÚitemr   r   r   rH   £   s   €
ÿûzConsumer.iterqueue)NNNNNNN©NFr'   )NN)r:   r;   r<   r=   rA   r   r   r   r   r@   r   r.   r!   rC   r-   r1   r7   rI   rP   rR   rV   rZ   r]   rH   r?   r   r   r%   r   r   N   s2    þ
	


r   c                       sX   e Zd Z		d‡ fdd„	Zddd„Zdd„ Zd	d
„ Zdd„ Z‡ fdd„Zdd„ Z	‡  Z
S )ÚConsumerSetNc           
         sŽ   |r	d| _ || _nd| _ | ¡ | _g }|r |D ]}| |j¡ q|r7t|ƒD ]\}}	| tj|fi |	¤Ž¡ q&t	t
| ƒj| j|fi |¤Ž d S )NTF)Ú_provided_channelr9   r#   ÚextendrJ   r	   Úappendr   Ú	from_dictr    ra   r!   )
r"   r   re   Ú	consumersr#   r$   rJ   r   Ú
queue_nameÚqueue_optionsr%   r   r   r!   ®   s   
 zConsumerSet.__init__Fc                 C   rW   r'   rX   rY   r   r   r   rZ   Á   r+   zConsumerSet.iterconsumec                 C   s   |   ¡ S r'   )rT   r/   r   r   r   rV   Ä   rS   zConsumerSet.discard_allc                 K   s   |   tj|fi |¤Ž¡S r'   )Ú	add_queuer   re   )r"   rA   Úoptionsr   r   r   Úadd_consumer_from_dictÇ   s   z"ConsumerSet.add_consumer_from_dictc                 C   s   |j D ]}|  |¡ qd S r'   )rJ   ri   )r"   r   rA   r   r   r   Úadd_consumerÊ   s   
ÿzConsumerSet.add_consumerc                    rB   r'   )r9   r    ra   rC   rD   r%   r   r   rC   Î   rE   zConsumerSet.revivec                 C   s    |   ¡  | js| j ¡  d S d S r'   )rF   rb   r#   r-   r/   r   r   r   r-   Ò   s   ÿzConsumerSet.close)NNNr`   )r:   r;   r<   r!   rZ   rV   rk   rl   rC   r-   r?   r   r   r%   r   ra   ¬   s    ÿ
ra   )FN)r=   Ú
__future__r   r   Ú	itertoolsr   r   r   Úentityr   r   Úfiver	   Ú__all__re   Úentry_to_queuer   ÚProducerr
   r   ra   r   r   r   r   Ú<module>   s    
3^