a
    xdB                     @   sr   d Z ddlZddlmZmZ zddlmZ W n eyJ   ddlmZ Y n0 dddZddd	Z	d
efddZ
dS )zUseful mocks for unit testing.    N)datetime	timedelta)Mock c	                 K   s   |si n|}ddl m}
 ddlm} |p,| }td| d}|| |d|_|||d}|j|	 |
|||fdd	\|_|_|_	|||f|_
|S )
z)Create task message in protocol 2 format.r   dumpsuuidTaskMessage-name)idtaskshadow)	callbackserrbackschainjson)
serializer)kombu.serializationr   celeryr	   r   headersupdatecontent_typecontent_encodingbodypayload)r   r   argskwargsr   r   r   r   utcoptionsr   r	   messageembedr   r   T/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/contrib/testing/mocks.pyTaskMessage   s     

r$   c                 K   s~   |si n|}ddl m} ddlm}	 |p,|	 }td| d}
i |
_| |||||d|
_|
j| ||
j\|
_|
_	|
_
|
S )z)Create task message in protocol 1 format.r   r   r   r
   r   )r   r   r   r   r   r   )r   r   r   r	   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r   r	   r!   r   r   r#   TaskMessage1-   s$    
r%   Tc           	      C   s  |   |jdd}|jdd}|jdd}|rJ|  t|d }n|jdd}|rnt|trn| }|jdd}|rt|tj	r|  t|d }|rt|tr| }||j
f|j|j|j|rdd	 |D nd|rd
d	 |D nd|||d|jS )zCreate task message from :class:`celery.Signature`.

    Example:
        >>> m = task_message_from_sig(app, add.s(2, 2))
        >>> amqp_client.basic_publish(m, exchange='ex', routing_key='rkey')
    linkNZ
link_error	countdown)secondsetaexpiresc                 S   s   g | ]}t |qS r   dict.0sr   r   r#   
<listcomp>i       z)task_message_from_sig.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r+   r-   r   r   r#   r0   j   r1   )r   r   r   r   r   r)   r*   r   )freezer    popnowr   
isinstancer   	isoformatnumbersRealr   r   r   r   )	Zappsigr   r$   r   r   r'   r)   r*   r   r   r#   task_message_from_sigO   s6    r:   )Nr   NNNNNN)Nr   NNNN)__doc__r7   r   r   Zcaser   ImportErrorZunittest.mockr$   r%   r:   r   r   r   r#   <module>   s.           
$      
"