
    `fV                         d Z ddlZddlmZmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ 	 	 	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
ZdefdZ G d de	          Zd ZdS )zUseful mocks for unit testing.    N)datetime	timedelta)AnyMappingSequence)Mock)Celery)	Signature c	                    |si n|}ddl m}
 ddlm} |p	 |            }t	          d|           }|| |d|_        |||d}|j                            |	            |
|||f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embeds                 N/var/www/html/env/lib/python3.11/site-packages/celery/contrib/testing/mocks.pyTaskMessager+      s     )RR6F))))))	ttvvB+r++,,,G GO
 $EJJEO7###CH5	vu&D D D@G'2GL VU+GON    c                    |si n|}ddl m} ddlm}	 |p	 |	            }t	          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(   s              r*   TaskMessage1r.   -   s     )RR6F))))))	ttvvB+r++,,,GGO GO O7###CH5D D@G'2GL Nr,   Tc                 D   |                                  |j                            dd          }|j                            dd          }|j                            dd          }|r&|                                 t	          |          z   }n|j                            dd          }|r)t          |t                    r|                                }|j                            dd          }|r?t          |t          j	                  r%|                                 t	          |          z   }|r)t          |t                    r|                                } ||j
        f|j        |j        |j        |rd |D             nd|r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')
    linkN
link_error	countdown)secondsetaexpiresc                 ,    g | ]}t          |          S r   dict.0ss     r*   
<listcomp>z)task_message_from_sig.<locals>.<listcomp>i   s    ...q477...r,   c                 ,    g | ]}t          |          S r   r7   r9   s     r*   r<   z)task_message_from_sig.<locals>.<listcomp>j   s    ,,,a$q'',,,r,   )r   r$   r%   r   r   r4   r5   r&   )freezer'   popnowr   
isinstancer   	isoformatnumbersRealr   r   r$   r%   )	appsigr&   r+   r   r   r2   r4   r5   s	            r*   task_message_from_sigrG   O   s    JJLLL--I{|T22HT22I +ggii)I6666kooeT**
 z#x(( mmookooi..G 9:gw|44 9''))i8888 &:gx00 &##%%;	V#(z2;E..I....08B,,8,,,,d	 	 +	 	 	r,   c                       e Zd ZdZd Zd ZdS )_ContextMockzDummy class implementing __enter__ and __exit__.

    The :keyword:`with` statement requires these to be implemented
    in the class, not just the instance.
    c                     | S Nr   )selfs    r*   	__enter__z_ContextMock.__enter__y   s    r,   c                     d S rK   r   )rL   exc_infos     r*   __exit__z_ContextMock.__exit__|   s    r,   N)__name__
__module____qualname____doc__rM   rP   r   r,   r*   rI   rI   r   s<               r,   rI   c                      t          | i |}|                    t                      d           |                    t                      d           ||j        _        d|j        _        |S )z3Mock that mocks :keyword:`with` statement contexts.rM   rP   N)rI   attach_mockrM   return_valuerP   )r$   r%   objs      r*   ContextMockrY      s_    

'
'
'COOLNNK000OOLNNJ///!$CM !%CLJr,   )Nr   NNNNNN)Nr   NNNN)rT   rC   r   r   typingr   r   r   unittest.mockr   r   r	   celery.canvasr
   r+   r.   rG   rI   rY   r   r,   r*   <module>r]      s7   $ $  ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) )             # # # # # #
 	
   H 	
   D )-+        F    4   	 	 	 	 	r,   