
    h                        d Z ddlZddlZddlZddlmZ ddlmZmZ 	 ddl	m
Z
 ddlmZ ej                  j!                  d      ZdZ G d	 d
e      Zd Zd Zed        ZddZddZddZd Zd Zd Zd Zy# e$ r	 ddlm
Z
 Y bw xY w)z;Utilities related to importing modules and symbols by name.    N)contextmanager)import_modulereload)entry_pointssymbol_by_nameMP_MAIN_FILE)
NotAPackagequalnameinstantiater   cwd_in_pathfind_moduleimport_from_cwdreload_from_cwdmodule_filegen_task_namec                       e Zd ZdZy)r
   z8Raised when importing a package, but it's not a package.N)__name__
__module____qualname____doc__     P/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/utils/imports.pyr
   r
      s    Br   r
   c                     t        | d      st        | d      r| j                  } t        | dd      }d|vrdj                  | j                  |f      }|S )zReturn object name.r   	__class__r   N.)hasattrr   getattrjoinr   )objqs     r   r   r       sO    3
#[(Amm^T*A
!|HHcnna()Hr   c                 $     t        |       |i |S )zNInstantiate class by name.

    See Also:
        :func:`symbol_by_name`.
    r   )nameargskwargss      r   r   r   *   s      >$000r   c               #     K   	 t        j                         } | sd y| t        j                  v rd yt        j                  j                  d|        	 |  	 t        j                  j                  |        y# t        $ r d} Y qw xY w# t        $ r Y yw xY w# 	 t        j                  j                  |        w # t        $ r Y w w xY wxY ww)z9Context adding the current working directory to sys.path.Nr   )osgetcwdFileNotFoundErrorsyspathinsertremove
ValueError)cwds    r   r   r   3   s     iik 	3	I$    $ s   CA< >CB B ;C<B
C	B

C	BCBCCB>=C>	C
C	C

CCc           	         |t         }t               5  	  ||       cddd       S # t        $ r d| v r}| j                  d      }t	        |dd       D ][  \  }}dj                  |d|dz          }	  ||      }n# t        $ r Y   w xY w	 |j                   E# t        $ r t        |      w xY w  w xY w# 1 sw Y   yxY w)z3Version of :func:`imp.find_module` supporting dots.Nr      )	r   r   ImportErrorsplit	enumerater    __path__AttributeErrorr
   )moduler,   imppartsipartpackagemparts           r   r   r   I   s    
{	 	v;   	 f}S)(s4GAt!hhuVa!e}5G #G&  
 3) 3)'223  5 #	 sW   B5&A	B20A98B29	B	B2B	B2
BB2B,	,B22B55B>c                 f    |t         }t               5   || |      cddd       S # 1 sw Y   yxY w)zImport module, temporarily including modules in the current directory.

    Modules located in the current directory has
    precedence over modules located in `sys.path`.
    N)r>   )r   r   )r9   r:   r>   s      r   r   r   d   s2     {	 ,67+, , ,s   
'0c                 b    |t         }t               5   ||       cddd       S # 1 sw Y   yxY w)z1Reload module (ensuring that CWD is in sys.path).N)r   r   )r9   reloaders     r   r   r   p   s/    	       s   %.c                 J    | j                   }|j                  d      r|dd S |S )z2Return the correct original file name of a module.z.pycNr2   )__file__endswith)r9   r$   s     r   r   r   x   s'    ??Df-49747r   c                 :   |xs d}	 t         j                  |   }|'|j                  }t        r|j
                  t        k(  rd}|dk(  r)| j                  rdj                  | j                  |g      S dj                  d ||fD              S # t        $ r d}Y ~w xY w)z)Generate task name from name/module pair.__main__Nr   c              3   &   K   | ]	  }|s|  y wNr   ).0ps     r   	<genexpr>z gen_task_name.<locals>.<genexpr>   s     8!aA8s   )r+   modulesKeyErrorr   r	   rD   mainr    )appr$   module_namer9   s       r   r   r   ~   s    +K[)
 oo FOO|;$Kj SXXxx4())888T2888  s   B BBc              #     K   t         j                  dk\  rt        |       }n	 t               j                  | g       }|D ]  }|j                  |j                  f  y # t        $ r t               j                  |       }Y Gw xY ww)N)   
   )group)r+   version_infor   getr8   selectr$   value)	namespace_entry_pointseps      r   load_extension_class_namesr]      s~     
7"$95	C(N..y"=M ggrxx   	C(N11	1BM	Cs'   !B	A  "B	 #BB	BB	c           
   #      K   t        |       D ]  \  }}	 t        |      }||f  y # t        t        f$ r(}t	        j
                  d|  d|d|       Y d }~Md }~ww xY ww)NzCannot load z extension z: )r]   r   r4   SyntaxErrorwarningswarn)rZ   r$   
class_nameclsexcs        r   load_extension_classesre      sv     6yAj	 ,C
 )O B [) 	NMMykZN"SGLN N	Ns*   A#)	A#A AA#A  A#)NNrI   )r   r(   r+   r`   
contextlibr   	importlibr   r   importlib.metadatar   r4   importlib_metadatakombu.utils.importsr   environrW   r	   __all__	Exceptionr
   r   r   r   r   r   r   r   r   r]   re   r   r   r   <module>rn      s    A 	 
  % +0/ / zz~~n-C) C1  *6	, 89,	 m  0/0s   A9 9BB