
    z%i%                        	 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 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 d dlmZ ddlZddlZddlZd Zd ZddZddZ G d d      Z G d dej,                        Z G d de      Zy)   )Loader)module_from_spec)_resolve_name)spec_from_loader)
_find_spec)MAGIC_NUMBER)_RAW_MAGIC_NUMBER)cache_from_source)decode_source)source_from_cache)spec_from_file_location    Nc                 8    	 t        j                  t        |       S N)_impsource_hashr	   )source_bytess    B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/importlib/util.pyr   r      s    H-|<<    c                     	 | j                  d      s| S |st        dt        |        d      d}| D ]  }|dk7  r n|dz  } t        | |d  ||      S )N.zno package specified for z% (required for relative module names)r   r   )
startswithImportErrorreprr   )namepackagelevel	characters       r   resolve_namer      s    <??35d4j\ BA A B 	BE 	
 efw66r   c                     	 | t         j                  vrt        | |      S t         j                  |    }|y 	 |j                  }|t	        |  d      |S # t
        $ r t	        |  d      d w xY w)N.__spec__ is None.__spec__ is not set)sysmodulesr   __spec__
ValueErrorAttributeError)r   pathmodulespecs       r   _find_spec_from_pathr+   '   s     3;;$%%T">	??D | D6):!;<<K  	Fv%9:;E	Fs   A A.c                    	 | j                  d      rt        | |      n| }|t        j                  vr@|j	                  d      d   }|rt        |dg      }	 |j                  }nd }t        ||      S t        j                  |   }|y 	 |j                  }|t        |  d      |S # t        $ r}t        d|d||      |d }~ww xY w# t        $ r t        |  d	      d w xY w)
Nr   r   __path__)fromlistz __path__ attribute not found on z while trying to find )r   r!   r"   )r   r   r#   r$   
rpartition
__import__r-   r'   ModuleNotFoundErrorr   r%   r&   )	r   r   fullnameparent_nameparentparent_pather)   r*   s	            r   	find_specr7   F   s!     /3ooc.B|D'*Hs{{"))#.q1zlCFP$oo K(K00X&>	??D | D6):!;<<K% " P)6{o F,,4<9?GINOPP  	Fv%9:;E	Fs$   B( 
C (	C
1CC
C&c                   0    e Zd Z	 d Zd Zd Zed        Zy)+_incompatible_extension_module_restrictionsc                $    t        |      | _        y r   )booldisable_check)selfr<   s     r   __init__z4_incompatible_extension_module_restrictions.__init__   s    !-0r   c                 N    t        j                  | j                        | _        | S r   )r   '_override_multi_interp_extensions_checkoverrideoldr=   s    r   	__enter__z5_incompatible_extension_module_restrictions.__enter__   s    ??Nr   c                 J    | j                   }| ` t        j                  |       y r   )rB   r   r@   )r=   argsrB   s      r   __exit__z4_incompatible_extension_module_restrictions.__exit__   s    hhH44S9r   c                 "    | j                   rdS dS )Nr   )r<   rC   s    r   rA   z4_incompatible_extension_module_restrictions.override   s    ''r.Q.r   N)__name__
__module____qualname__r>   rD   rG   propertyrA    r   r   r9   r9   w   s*    >1:
 / /r   r9   c                       e Zd Z	 d Zd Zy)_LazyModulec                 \   	 t         j                  | _        | j                  j                  }| j                  j
                  d   }| j                  }i }|j                         D ]2  \  }}||vr|||<   t        ||         t        ||         k7  s.|||<   4 | j                  j                  j                  |        |t        j                  v r7t        |       t        t        j                  |         k7  rt        d|d      | j                  j                  |       t        | |      S )N__dict__zmodule object for z. substituted in sys.modules during a lazy load)types
ModuleType	__class__r%   r   loader_staterR   itemsidloaderexec_moduler#   r$   r&   updategetattr)r=   attroriginal_name
attrs_then	attrs_nowattrs_updatedkeyvalues           r   __getattribute__z_LazyModule.__getattribute__   s   F )) ** ]]//
;
MM	#//+ 	+JC *$%*c"IcN#r*S/'::%*c"	+ 	((. CKK'$x2ckk-899 #5m5F G) ") * *
 	]+tT""r   c                 @    	 | j                  |       t        | |       y r   )rd   delattr)r=   r]   s     r   __delattr__z_LazyModule.__delattr__   s    = 	d#dr   N)rJ   rK   rL   rd   rg   rN   r   r   rP   rP      s    U #Dr   rP   c                   @    e Zd Z	 ed        Zed        Zd Zd Zd Z	y)
LazyLoaderc                 2    t        | d      st        d      y )NrZ   z loader must define exec_module())hasattr	TypeError)rY   s    r   __check_eager_loaderzLazyLoader.__check_eager_loader   s    v}->?? .r   c                 6     	  j                          fdS )Nc                         | i |      S r   rN   )rF   kwargsclsrY   s     r   <lambda>z$LazyLoader.factory.<locals>.<lambda>   s    s64+B6+B'C r   )_LazyLoader__check_eager_loader)rq   rY   s   ``r   factoryzLazyLoader.factory   s    L  (CCr   c                 4    | j                  |       || _        y r   )rs   rY   )r=   rY   s     r   r>   zLazyLoader.__init__   s    !!&)r   c                 8    | j                   j                  |      S r   )rY   create_module)r=   r*   s     r   rw   zLazyLoader.create_module   s    {{((..r   c                     	 | j                   |j                  _         | j                   |_        i }|j                  j	                         |d<   |j
                  |d<   ||j                  _        t        |_        y )NrR   rU   )rY   r%   
__loader__rR   copyrU   rV   rP   )r=   r)   rV   s      r   rZ   zLazyLoader.exec_module   sc    *!% KK
 #)??#7#7#9Z $*$4$4[!'3$&r   N)
rJ   rK   rL   staticmethodrs   classmethodrt   r>   rw   rZ   rN   r   r   ri   ri      s>    U@ @ D D
/'r   ri   r   )_abcr   
_bootstrapr   r   r   r   _bootstrap_externalr   r	   r
   r   r   r   r   r#   rS   r   r   r+   r7   r9   rT   rP   ri   rN   r   r   <module>r      sq    3  ( % ( " - 2 2 . 2 8  
 =
7>*b./ ./b+%"" +\"' "'r   