
    h#                         d Z ddlZddlZddlZddlZddlmZmZ ddlm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	lmZ dd
lmZmZmZmZ dZdadZedz   Z e       Z G d d      ZddZ d Z!y)zLoader base class.    N)datetimetimezone)json)cached_property)signals)reraise)DictAttributeforce_mapping)
maybe_list)NotAPackagefind_moduleimport_from_cwdsymbol_by_name)
BaseLoaderFzPError: Module '{module}' doesn't exist, or it's not a valid Python module name.
zDid you mean '{suggest}'?
c                      e Zd ZdZ e       ZdZi ZdZe	Z
d ZddZd Zd Zd Zd Zd	 Zd
 ZddZddZd Zd Zd Zd Zd dZddZd Zd Zd ej<                  d      ddfdZd!dZ d"dZ!e"d        Z#e$d        Z%y)#r   a  Base class for loaders.

    Loaders handles,

        * Reading celery client/worker configurations.

        * What happens when a task starts?
            See :meth:`on_task_init`.

        * What happens when the worker starts?
            See :meth:`on_worker_init`.

        * What happens when the worker shuts down?
            See :meth:`on_worker_shutdown`.

        * What modules are imported to find tasks?
    Fc                 0    || _         t               | _        y N)appsettask_modules)selfr   kwargss      O/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/loaders/base.py__init__zBaseLoader.__init__;   s    E    c                 t    |r#t        j                  t        j                        S t        j                         S r   )r   nowr   utc)r   r   s     r   r   zBaseLoader.now?   s$    <<--||~r   c                      y)z!Called before a task is executed.N )r   task_idtasks      r   on_task_initzBaseLoader.on_task_initD       r   c                      y)z Called after a task is executed.Nr    r   s    r   on_process_cleanupzBaseLoader.on_process_cleanupG   r$   r   c                      y)z9Called when the worker (:program:`celery worker`) starts.Nr    r&   s    r   on_worker_initzBaseLoader.on_worker_initJ   r$   r   c                      y)z=Called when the worker (:program:`celery worker`) shuts down.Nr    r&   s    r   on_worker_shutdownzBaseLoader.on_worker_shutdownM   r$   r   c                      y)z#Called when a child process starts.Nr    r&   s    r   on_worker_process_initz!BaseLoader.on_worker_process_initP   r$   r   c                 Z    | j                   j                  |       | j                  |      S r   )r   addr   r   modules     r   import_task_modulezBaseLoader.import_task_moduleS   s'    f%##F++r   Nc                 0    t        j                  ||      S N)package)	importlibimport_module)r   r1   r5   s      r   r7   zBaseLoader.import_moduleW   s    &&vw??r   c                 F    t        ||| j                  |      S ||      S r4   )r   r7   )r   r1   impr5   s       r   r   zBaseLoader.import_from_cwdZ   s2    "%+D
 	
36
 	
r   c                     t         j                  j                  | j                        }|D ]  \  }}t	        |t
              s| | j                  D cg c]  }| j                  |       c}S c c}w )N)sender)r   import_modulessendr   
isinstance	Exceptiondefault_modulesr2   )r   	responses_responsems        r   import_default_modulesz!BaseLoader.import_default_modulesa   se    **//txx/@	 %KAx(I. % 594H4HIq''*IIIs   A0c                 l    | j                   s(d| _         | j                          | j                          y y )NT)worker_initializedrE   r)   r&   s    r   init_workerzBaseLoader.init_workerk   s0    &&&*D#'')! 'r   c                 $    | j                          y r   )r+   r&   s    r   shutdown_workerzBaseLoader.shutdown_workerq   s    !r   c                 $    | j                          y r   )r-   r&   s    r   init_worker_processzBaseLoader.init_worker_processt   s    ##%r   c                    t        |t              r	 | j                  || j                        }t        |      | _        | j                  j                  d      | j                  d   | _	        y# t        t
        f$ r |rY y w xY w)Nr9   Foverride_backendsT)
r>   str_smart_importr   ImportErrorAttributeErrorr
   _confgetrO   )r   objsilents      r   config_from_objectzBaseLoader.config_from_objectw   s    c3(($2F2F(G
 #3'
::>>-.:%)ZZ0C%DD"  0  s   A/ /BBc                     || j                   n|}d|v rt        ||      S 	  ||      S # t        $ r t        ||      cY S w xY w)N:rN   )r7   r   rR   )r   pathr9   s      r   rQ   zBaseLoader._smart_import   sT    $'Kd  S$; "$C00	1t9 	1!$C00	1s   + AAc                 Z   	 | j                  |       | j                  |      S # t        $ r}}|j                  d      rGt	        t        t        t
        j                  ||d d             t        j                         d          t        t        j                  |            |d }~ww xY w)Nz.py)r1   suggest   )r1   )
r   r   r   endswithr   CONFIG_WITH_SUFFIXformatsysexc_infoCONFIG_INVALID_NAME)r   nameexcs      r   _import_config_modulez BaseLoader._import_config_module   s    	.T" ''--  	P}}U#[1C1J1J#T#2Y 2K 28 &9:=,,.:KM1888EFCO		Ps   $ 	B*A8B%%B*c                     t        |      S r   )r   r0   s     r   r   zBaseLoader.find_module   s    6""r   celeryz	\((\w+)\)c                    	 |r|ndt         j                  i}rnddddddlmm} xr j                         t        |j                  fi |		fdt        fd|D              S )Nr   )tuplelistdictr   )
NAMESPACESOptionc                 4   | j                  dd      \  }}|j                         j                  dd      }|d   dk(  r	|dd }}n|j                  dd      \  }}|xr |dz   xs d|z   }j                  |      }|rP|j	                         d   }
j                  ||      }|t        |j                               d } |   |      }||fS 	 |j                            |   j                  |      }||fS # t        $ r}t        |d|       d}~ww xY w)	z-Parse single configuration from command-line.=   .rB   r   N z: )
splitlowerreplacematchgroupsrU   lengroup	to_python
ValueError)argkeyvaluensns_keycasttype_rg   ro   	namespaceoverride_typesre_typetypemaps           r   getargz0BaseLoader.cmdline_config_parser.<locals>.getarg   s<    3*JC))+%%c3/C 1v}#SWC ))C+CoR#X+s2F =='Da(&**5%8c$**,/01&u- 5= ;&rxxz237AA%HE 5=  " ;$zC5%9::;s   %C9 9	DDDc              3   .   K   | ]  } |        y wr   r    ).0r   r   s     r   	<genexpr>z3BaseLoader.cmdline_config_parser.<locals>.<genexpr>   s     0CF3K0s   )r   loadscelery.app.defaultsro   rp   rw   rn   r   )
r   argsr   r   extra_typesr   rp   ro   r   r   s
     `` ` @@@r   cmdline_config_parserz BaseLoader.cmdline_config_parser   ss     &1kvtzz6J+9@

 	;3)//"3	v~~55	! 	!> 04000r   c                     	 t         j                  |   }|r| j                  |      }t        |      S y # t        $ r Y y w xY wr   )osenvironrh   r	   KeyError)r   envcustom_configusercfgs       r   read_configurationzBaseLoader.read_configuration   sM    	.JJsOM 44]C$W--   		s   4 	A A c                 d    | j                   j                  d t        |xs d|      D               y )Nc              3   8   K   | ]  }|r|j                     y wr   )__name__)r   mods     r   r   z0BaseLoader.autodiscover_tasks.<locals>.<genexpr>   s!      !M HK LL!Ms   r    )r   updateautodiscover_tasks)r   packagesrelated_names      r   r   zBaseLoader.autodiscover_tasks   s5       !M$6x~27C%E!M 	Mr   c                     t        | j                        t        t        | j                  j                  j
                              z   t        t        | j                  j                  j                              z   S r   )rl   builtin_modulesr   r   confimportsincluder&   s    r   r@   zBaseLoader.default_modules   sW     $&&'*TXX]]22345*TXX]]22345	
r   c                 h    | j                   t        u r| j                         | _         | j                   S )zLoader configuration.)rT   unconfiguredr   r&   s    r   r   zBaseLoader.conf   s*     ::%002DJzzr   )Tr   )NN)F)CELERY_CONFIG_MODULEtasks)&r   
__module____qualname____doc__	frozensetr   
configuredrO   rG   r   rT   r   r   r#   r'   r)   r+   r-   r2   r7   r   rE   rH   rJ   rL   rX   rQ   rh   r   recompiler   r   r   r   r@   propertyr   r    r   r   r   r   !   s    $  kOJE"
0/HL2,@
J""&1	.# 5=&0bjj&>*.-1-1^.M
 
 
  r   r   c                 f    t         ryda 	 | D cg c]  }t        ||       c}da S c c}w # da w xY w)Nr    TF)_RACE_PROTECTIONfind_related_module)r   r   pkgs      r   r   r      s?     !BJK3#C6K  L s   , ', , 0c                    	 t        j                  |       }|s|r|S |  d| }	 t        j                  |      S # t        $ r | j                  d      \  } }}| s Y @w xY w# t        $ r }t	        |dd      }|r
||k(  rY d}~y|d}~ww xY w)zFind module in package.rt   rf   N)r6   r7   ModuleNotFoundError
rpartitiongetattr)r5   r   r1   rB   module_nameeimport_exc_names          r   r   r      s    	((1M IQ|n-K
&&{33  **3/A   !!VT2{o= s,   : A! !AA!	B
*BBB
r   )"r   r6   r   r   rc   r   r   kombu.utilsr   kombu.utils.objectsr   rj   r   celery.exceptionsr   celery.utils.collectionsr	   r
   celery.utils.functionalr   celery.utils.importsr   r   r   r   __all__r   re   ra   objectr   r   r   r   r    r   r   <module>r      st      	 	 
 '  /  % A . Z Z
  
 ) ,   xK K\	!r   