
    5bh*                        	 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    8/opt/python-3.12.12/usr/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      sz    <??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                  | d      }|j                  }|d   5  t         j                  | d      t        u r#|d   rt         j                  | |      cd d d        S d|d<   t         j                  | d      }|j                  }|d   }|}i }|j                         D ]2  \  }	}
|	|vr|
||	<   t        ||	         t        ||	         k7  s.|
||	<   4 |j                  j                  |        |t        j                  v r7t        |       t        t        j                  |         k7  rt        d|d      |j                  |       t        j                  | _        d d d        t!        | |      S # 1 sw Y   xY w)	Nr%   lock	__class__
is_loadingT__dict__zmodule object for z. substituted in sys.modules during a lazy load)object__getattribute__loader_staterP   r   itemsidloaderexec_moduler#   r$   r&   updatetypes
ModuleTyperS   getattr)r=   attrr%   rX   rU   original_name
attrs_then	attrs_nowattrs_updatedkeyvalues              r   rW   z_LazyModule.__getattribute__   s   F**4<,,&! &&t[9[H
  -!224> "! .2\*!224D !) **5
$	 ""+//"3JC *,-2c*IcN+r*S//BB-2c* #4 ++D1 !CKK/$x2ckk-&@#AA(+=m=N O1 *1 2 2
 .!&!1!1W "Z tT""[ "!s   8E>+A-E>BE>>Fc                 @    	 | j                  |       t        | |       y r   )rW   delattr)r=   ra   s     r   __delattr__z_LazyModule.__delattr__   s    = 	d#dr   N)rJ   rK   rL   rW   rj   rN   r   r   rP   rP      s    U1#f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 )Nr\   z loader must define exec_module())hasattr	TypeError)r[   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clsr[   s     r   <lambda>z$LazyLoader.factory.<locals>.<lambda>   s    s64+B6+B'Cr   )_LazyLoader__check_eager_loader)rt   r[   s   ``r   factoryzLazyLoader.factory   s    L  (CCr   c                 4    | j                  |       || _        y r   )rv   r[   )r=   r[   s     r   r>   zLazyLoader.__init__   s    !!&)r   c                 8    | j                   j                  |      S r   )r[   create_module)r=   r*   s     r   rz   zLazyLoader.create_module   s    {{((..r   c                 *   	 dd l }| j                  |j                  _        | j                  |_        i }|j                  j                         |d<   |j                  |d<   |j                         |d<   d|d<   ||j                  _        t        |_        y )Nr   rU   rS   rR   FrT   )
	threadingr[   r%   
__loader__rU   copyrS   RLockrX   rP   )r=   r)   r|   rX   s       r   r\   zLazyLoader.exec_module   s    * 	!% KK
 #)??#7#7#9Z $*$4$4[!(0V%*\"'3$&r   N)
rJ   rK   rL   staticmethodrv   classmethodrw   r>   rz   r\   rN   r   r   rl   rl      s>    U@ @ D D
/'r   rl   r   )_abcr   
_bootstrapr   r   r   r   _bootstrap_externalr   r	   r
   r   r   r   r   r#   r^   r   r   r+   r7   r9   r_   rP   rl   rN   r   r   <module>r      sq    3  ( % ( " - 2 2 . 2 8  
 =
7>*b./ ./b<%"" <~'' ''r   