o
    —¨Êh`  ã                   @  s¢   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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.
é    )Úannotations)Úcount)ÚTYPE_CHECKINGé   )Ú	messaging)ÚExchangeÚQueue)ÚTracebackType)Ú	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   ú>/var/www/html/env/lib/python3.10/site-packages/kombu/compat.pyÚ_iterconsume   s   €ýr   c                      sr   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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ƒ 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__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 ƒ  ¡  d| _d S ©NT)r    ÚcloseÚ_closed©r"   r%   r   r   r-   C   s   

zPublisher.closec                 C  ó   | S r'   r   r/   r   r   r   Ú	__enter__G   ó   zPublisher.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚreturnÚNonec                 C  ó   |   ¡  d S r'   ©r-   ©r"   r3   r5   r7   r   r   r   Ú__exit__J   ó   zPublisher.__exit__c                 C  s   | j S r'   )r#   r/   r   r   r   ÚbackendR   s   zPublisher.backend)NNNNNN©r3   r4   r5   r6   r7   r8   r9   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r.   r!   r*   r-   r1   r>   Úpropertyr@   Ú__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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ƒ j| j|fi |	¤Ž d S )N)r   r   r   r   )r   r   r   Ú	exclusiver   )r#   r@   r   rH   r   Úqueuer   r   r   r   r   r    r!   )
r"   r   rI   r   r   r   r   rH   r   r$   r%   r   r   r!   c   s2   
üûzConsumer.__init__c                   ó   || _ tƒ  |¡ d S r'   ©r@   r    Úrevive©r"   r#   r%   r   r   rL   �   ó   zConsumer.revivec                 C  s   |   ¡  | j ¡  d| _d S r,   )Úcancelr@   r-   r.   r/   r   r   r   r-   …   s   

zConsumer.closec                 C  r0   r'   r   r/   r   r   r   r1   Š   r2   zConsumer.__enter__r3   r4   r5   r6   r7   r8   r9   r:   c                 C  r;   r'   r<   r=   r   r   r   r>   �   r?   zConsumer.__exit__c                 C  s   | j dd�S )NT)Úinfinite)Ú	iterqueuer/   r   r   r   Ú__iter__•   s   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)rZ   Ú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'   )rc   Ú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   rY   )r"   r   rP   Úitems_since_startÚitemr   r   r   rQ   ±   s   €
ÿûzConsumer.iterqueue)NNNNNNNrA   ©NFr'   )NN)rB   rC   rD   rE   rI   r   r   r   r   rH   r   r.   r!   rL   r-   r1   r>   rR   rY   r[   r_   rc   rf   rQ   rG   r   r   r%   r   r   W   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|r7| ¡ D ]\}}	| tj|fi |	¤Ž¡ q&t	ƒ j
| j|fi |¤Ž d S )NTF)Ú_provided_channelr@   r#   ÚextendrS   ÚitemsÚappendr   Ú	from_dictr    r!   )
r"   r   ro   Ú	consumersr#   r$   rS   r   Ú
queue_nameÚqueue_optionsr%   r   r   r!   ¼   s   
zConsumerSet.__init__Fc                 C  r`   r'   ra   rb   r   r   r   rc   Ï   r+   zConsumerSet.iterconsumec                 C  s   |   ¡ S r'   )r]   r/   r   r   r   r_   Ò   r\   zConsumerSet.discard_allc                 K  s   |   tj|fi |¤Ž¡S r'   )Ú	add_queuer   ro   )r"   rI   Úoptionsr   r   r   Úadd_consumer_from_dictÕ   s   z"ConsumerSet.add_consumer_from_dictc                 C  s   |j D ]}|  |¡ qd S r'   )rS   rs   )r"   r   rI   r   r   r   Úadd_consumerØ   s   
ÿzConsumerSet.add_consumerc                   rJ   r'   rK   rM   r%   r   r   rL   Ü   rN   zConsumerSet.revivec                 C  s    |   ¡  | js| j ¡  d S d S r'   )rO   rk   r#   r-   r/   r   r   r   r-   à   s   ÿzConsumerSet.close)NNNri   )rB   rC   rD   r!   rc   r_   ru   rv   rL   r-   rG   r   r   r%   r   rj   º   s    ÿ
rj   )FN)rE   Ú
__future__r   Ú	itertoolsr   Útypingr   r   r   Úentityr   r   Útypesr	   Ú__all__ro   Úentry_to_queuer   ÚProducerr
   r   rj   r   r   r   r   Ú<module>   s    
8c