
    `f(              	           d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 dddhd	d
ddddZ G d d          Z G d d ee	j                            ZddddeddfdZed             Zedd            ZdS )z-Create Celery app instances used for testing.    N)contextmanager)deepcopy)symbol_by_name)Celery_stateFjsonTUTCz	memory://zcache+memory://)worker_hijack_root_loggerworker_log_coloraccept_content
enable_utctimezone
broker_urlresult_backendbroker_heartbeatc                       e Zd ZdZd ZdS )TrapzTrap that pretends to be an app but raises an exception instead.

    This to protect from code that does not properly pass app instances,
    then falls back to the current_app.
    c                 Z    |dk    s|dk    rd S t          |           t          d          )N_is_coroutine__func__zTest depends on current_app)printRuntimeError)selfnames     L/var/www/html/env/lib/python3.11/site-packages/celery/contrib/testing/app.py__getattr__zTrap.__getattr__   s8     ?""dj&8&84d8999    N)__name__
__module____qualname____doc__r    r   r   r   r      s-         : : : : :r   r   c                   "     e Zd ZdZ fdZ xZS )UnitLoggingz)Sets up logging for the test application.c                 H     t                      j        |i | d| _        d S )NT)super__init__already_setup)r   argskwargs	__class__s      r   r'   zUnitLogging.__init__*   s-    $)&)))!r   )r   r   r    r!   r'   __classcell__)r+   s   @r   r$   r$   '   s>        33" " " " " " " " "r   r$   c                    ddl m} t          t          t                    fi |pi }||                    dd           ||                    dd           |rdn|}t          | pdf||||d|}	|	                    |           |	S )zApp used for testing.   )tasksNr   r   zcelery.tests)set_as_currentlogbrokerbackend) r/   dictr   DEFAULT_TEST_CONFIGpopr   add_defaults)
r   configenable_loggingr0   r1   r3   r2   r*   r/   test_apps
             r   TestAppr<   /   s     (.//@@6<R@@F

<&&&

#T*** 
)$$cC%   H &!!!Or   c              #      K   t                      t          j        }t          j                    G fdd          } |            t          _        	 dV  |t          _        dS # |t          _        w xY w)zContextmanager that installs the trap app.

    The trap means that anything trying to use the current or default app
    will raise an exception.
    c                       e Zd Z ZdS )set_trap.<locals>.NonTLSN)r   r   r    current_app)traps   r   NonTLSr?   O   s        r   rB   N)r   r   _tlsset_default_app)appprev_tlsrB   rA   s      @r   set_traprG   D   s       66D{H
4            &((FKhs   A( (A6c              #   z  K   t          j                    }t           j        }t          t           j                  }t          j        t           j                  }	 |r,t          |           5  dV  ddd           n# 1 swxY w Y   ndV  t          j	        |           |t           j
        _        | |ur|                                  |t           _        |t           _        dS # t          j	        |           |t           j
        _        | |ur|                                  |t           _        |t           _        w xY w)zWSetup default app for testing.

    Ensures state is clean after the test returns.
    N)r   get_current_appdefault_appset_on_app_finalizersweakrefWeakSet_appsrG   rD   rC   r@   close)rE   use_trapprev_current_appprev_default_appprev_finalizers	prev_appss         r   setup_default_apprV   Y   s_      -//)&344O--I! 	#                 EEE/000"2&&&IIKKK$3!  	/000"2&&&IIKKK$3!     s1   C# +A<0C# <B  C# B C# #AD:)F)r!   rM   
contextlibr   copyr   kombu.utils.importsr   celeryr   r   r6   r   log_clsr$   r<   rG   rV   r"   r   r   <module>r\      sT   3 3  % % % % % %       . . . . . . ! ! ! ! ! ! ! ! "'h'	 	 : : : : : : : : " " " " "..00 " " " d5T$   *   ( ! ! ! ! ! !r   