
    `f                     Z   d Z ddlZddlZddlZddlZddlmZ ddlmZ dZ	da
da ej                    Z e            Zdad Zd Zd	 Zd
 Z G d dej                  Z e            Z e            Zej        Zej        Zd Zd Zd Zej         !                    d          rd Z"n ej         !                    d          rd Z"neZ"d Z#d Z$ ee"          Z% ee#          Z&d Z'd Z(d Z)ddZ*ddZ+d Z,d Z-ej         !                    d          r e,             dS  e-             dS )zInternal state.

This is an internal module containing thread state
like the ``current_app``, and ``current_task``.

This module shouldn't be used directly.
    N)Proxy)
LocalStack)set_default_appget_current_appget_current_taskget_current_worker_taskcurrent_appcurrent_taskconnect_on_app_finalizeFc                 :    t                               |            | S )z8Connect callback to be called when any app is finalized.)_on_app_finalizersadd)callbacks    ?/var/www/html/env/lib/python3.11/site-packages/celery/_state.pyr   r   +   s    8$$$O    c                 N    t          t                    }|D ]} ||            d S N)setr   )app	callbacksr   s      r   _announce_app_finalizedr   1   s8    &''I   r   c                 
    | a d S r   _task_join_will_block)blockss    r   _set_task_join_will_blockr   7   s    "r   c                      t           S r   r    r   r   task_join_will_blockr   <   s      r   c                       e Zd ZdZdS )_TLSN)__name__
__module____qualname__r	   r   r   r   r!   r!   @   s         KKKr   r!   c                 
    | a dS )zSet default app.N)default_appr   s    r   r   r   V   s     KKKr   c            
          t           Addlm}  t           | dg dt          j                            d          pd                     t          j        pt           S )Nr   CelerydefaultFCELERY_LOADER)fixupsset_as_currentloader)	r&   celery.app.baser*   r   osenvironget_tlsr	   r)   s    r   _get_current_appr5   \   sl    ******b:>>/22?i
 
 
 	 	 	 *{*r   c                     | t           _        d S r   )r4   r	   r'   s    r   _set_current_appr7   g   s    Dr   C_STRICT_APPc                       t          d          )zReturn the current app.zUSES CURRENT APP)RuntimeErrorr   r   r   r   r   l   s    -...r   
C_WARN_APPc                      dd l } t          dt          j                   |                     t          j                   t                      S )Nr   z-- USES CURRENT_APP)file)	tracebackprintsysstderrprint_stackr5   )r>   s    r   r   r   p   sI    ##*55553:...!!!r   c                      t           j        S )zCurrently executing task.)_task_stacktopr   r   r   r   r   y   s
    ?r   c                  ^    t          t          j                  D ]} | j        j        s| c S dS )zCurrently executing task, that was applied by the worker.

    This is used to differentiate between the actual task
    executed by the worker and any task that was called within
    a task (using ``task.__call__`` or ``task.apply``)
    N)reversedrD   stackrequestcalled_directly)tasks    r   r   r   ~   sC     *++  |+ 	KKK	 r   c                 :    t                               |            d S r   )_appsr   r'   s    r   _register_apprN      s    	IIcNNNNNr   c                 :    t                               |            d S r   )rM   discardr'   s    r   _deregister_apprQ      s    	MM#r   c                      t           S r   )rM   r   r   r   _get_active_appsrS      s    Lr   c                 &    | t                      S | S r   )r   r'   s    r   _app_or_defaultrU      s    
{   Jr   c                 H   ddl m} 	 ddlm} n# t          $ r d }Y nw xY w| t          t          dd           r%t          d            |             t          j        S |r |            j	        dk    rt          d          t          d            |             t          S | S )	Nr   )rB   )current_processr	   z-- RETURNING TO CURRENT APP --MainProcesszDEFAULT APPz-- RETURNING TO DEFAULT APP --)r>   rB   billiard.processrW   ImportErrorgetattrr4   r?   r	   _name	Exceptionr&   )r   rB   rW   s      r   _app_or_default_tracer^      s    %%%%%%4444444   
{4-- 	$2333KMMM## 	+//"3"3"9]"J"JM***.///Js    c                      t           adS )z Enable tracing of app instances.N)r^   app_or_defaultr   r   r   enable_tracera      s     +NNNr   c                      t           adS )z!Disable tracing of app instances.N)rU   r`   r   r   r   disable_tracerc      s     %NNNr   CELERY_TRACE_APPr   ).__doc__r1   r@   	threadingweakrefcelery.localr   celery.utils.threadsr   __all__r&   r`   WeakSetrM   r   r   r   r   r   r   r   localr!   r4   rD   pushpush_current_taskpoppop_current_taskr   r5   r7   r2   r3   r   r   r   r	   r
   rN   rQ   rS   rU   r^   ra   rc   r   r   r   <module>rq      s    
			 



            + + + + + +   	 SUU      # # #
! ! !    9?    tvvjll  $  ?   + + +   :>>.!! '/ / / / Z^^L!! '" " " " 'O  
	 	 	 eO$$ u%&&            &+ + +% % % :>>$%% LNNNNNMOOOOOr   