
    h                     N   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j2                  Zej6                  Zd Zd Zd Zej@                  jC                  d      rd Z"n!ej@                  jC                  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@                  jC                  d      r e,        y e-        y)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                 0    t         j                  |        | S )z8Connect callback to be called when any app is finalized.)_on_app_finalizersadd)callbacks    I/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/_state.pyr   r   +   s    8$O    c                 @    t        t              }|D ]
  } ||         y N)setr   )app	callbacksr   s      r   _announce_app_finalizedr   1   s    &'I r   c                     | a y 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y)_TLSN)__name__
__module____qualname__r	   r   r   r   r!   r!   @   s	     Kr   r!   c                     | a y)zSet default app.N)default_appr   s    r   r   r   V   s	     Kr   c            
          t         <ddlm}  t         | dg dt        j
                  j                  d      xs d             t        j                  xs 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   \   sI    *b::>>/2?i
 	 *{*r   c                     | t         _        y 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                         | j	                  t        j                         t               S )Nr   z-- USES CURRENT_APP)file)	tracebackprintsysstderrprint_stackr5   )r>   s    r   r   r   p   s2    ##**53::.!!r   c                  "    t         j                  S )zCurrently executing task.)_task_stacktopr   r   r   r   r   y   s    ??r   c                  t    t        t        j                        D ]  } | j                  j                  r| c S  y)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   ~   s+     **+||++K ,r   c                 .    t         j                  |        y r   )_appsr   r'   s    r   _register_apprN      s    	IIcNr   c                 .    t         j                  |        y 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                    ddl m} 	 ddlm} | lt        t        dd       r"t        d        |        t        j                  S |r |       j                  dk(  rt        d      t        d        |        t        S | S # t        $ r d }Y }w xY w)	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-23M###/"3"9"9]"JM**./J  s   A> >BBc                      t         ay)z Enable tracing of app instances.N)r^   app_or_defaultr   r   r   enable_tracera      s	     +Nr   c                      t         ay)z!Disable tracing of app instances.N)rU   r`   r   r   r   disable_tracerc      s	     %Nr   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      sH   
 
    +   	 U  #
!9??  vl  $$  ?? + ::>>.!/ ZZ^^L!" 'O
	 O$ %&&+% ::>>$%NOr   