
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a7,  ã                   @   s(  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mZ ddlZddlZddlZddlZddlZdd„ Zdd„ Zd#dd„Zd$dd„Zedd„ ƒZdd„ Zdd„ Zdd„ ZG dd „ d ejƒZG d!d"„ d"ejƒZ dS )%é   )Úabc)Ú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é    )ÚcontextmanagerNc                 C   s   t  t| ¡S ©N)Ú_impÚsource_hashr   )Úsource_bytes© r   ú3/opt/alt/python38/lib64/python3.8/importlib/util.pyr      s    r   c                 C   s\   |   d¡s| S |s&tdt| ƒ› d�ƒ‚d}| D ]}|dkr> qH|d7 }q.t| |d … ||ƒS )NÚ.zno package specified for z% (required for relative module names)r   r   )Ú
startswithÚ
ValueErrorÚreprr   )ÚnameÚpackageÚlevelÚ	characterr   r   r   Úresolve_name   s    

r   c                 C   sx   | t jkrt| |ƒS t j|  }|d kr*d S z
|j}W n$ tk
rX   td | ¡ƒd ‚Y nX |d krptd | ¡ƒ‚|S d S )Nú{}.__spec__ is not setú{}.__spec__ is None)ÚsysÚmodulesr   Ú__spec__ÚAttributeErrorr   Úformat)r   ÚpathÚmoduleÚspecr   r   r   Ú_find_spec_from_path*   s    



r(   c           	   
   C   sþ   |   d¡rt| |ƒn| }|tjkrš| d¡d }|rŒt|dgd�}z
|j}W q� tk
rˆ } ztd|›d|›�|d�|‚W 5 d }~X Y q�X nd }t	||ƒS tj| }|d kr°d S z
|j
}W n$ tk
rÞ   td | ¡ƒd ‚Y nX |d krötd	 | ¡ƒ‚|S d S )
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   r   ÚfullnameÚparent_nameÚparentÚparent_pathÚer&   r'   r   r   r   Ú	find_specI   s4    

þþ


r3   c                 c   sŽ   | t jk}t j | ¡}|s6tt ƒ| ƒ}d|_|t j| < zJz
|V  W n: tk
r|   |sxzt j| = W n tk
rv   Y nX Y nX W 5 d|_X d S )NTF)r    r!   ÚgetÚtypeÚ__initializing__Ú	ExceptionÚKeyError)r   Ú	is_reloadr&   r   r   r   Ú_module_to_loadv   s    


r:   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc                     sR   t jdtdd� ˆ | |Ž}t|dd ƒd krN|j|_t|dƒsN|j d¡d |_|S )Nú7The import system now takes care of this automatically.é   ©Ú
stacklevelÚ__package__r)   r   r   )ÚwarningsÚwarnÚDeprecationWarningÚgetattrÚ__name__r?   Úhasattrr+   )ÚargsÚkwargsr&   ©Úfxnr   r   Úset_package_wrapper–   s     ÿ

z(set_package.<locals>.set_package_wrapper©Ú	functoolsÚwraps)rI   rJ   r   rH   r   Úset_package�   s    	rN   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc                    s:   t jdtdd� ˆ | f|ž|Ž}t|dd ƒd kr6| |_|S )Nr;   r<   r=   Ú
__loader__)r@   rA   rB   rC   rO   )ÚselfrF   rG   r&   rH   r   r   Úset_loader_wrapper©   s     ÿz&set_loader.<locals>.set_loader_wrapperrK   )rI   rQ   r   rH   r   Ú
set_loader£   s    rR   c                    s*   t jdtdd� t ˆ ¡‡ fdd„ƒ}|S )Nr;   r<   r=   c              
      s|   t |ƒ�j}| |_z|  |¡}W n ttfk
r6   Y nX |rD||_n| d¡d |_ˆ | |f|ž|ŽW  5 Q R £ S Q R X d S )Nr   r   )r:   rO   Ú
is_packageÚImportErrorr#   r?   r+   )rP   r.   rF   rG   r&   rS   rH   r   r   Úmodule_for_loader_wrapperÈ   s    
z4module_for_loader.<locals>.module_for_loader_wrapper)r@   rA   rB   rL   rM   )rI   rU   r   rH   r   Úmodule_for_loader´   s     ÿrV   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_LazyModulec           	      C   sÊ   t j| _| jj}| jjd }| jjd }| j}i }| ¡ D ]:\}}||krT|||< q:t|| ƒt|| ƒkr:|||< q:| jj	 
| ¡ |tjkr´t| ƒttj| ƒkr´td|›d�ƒ‚| j |¡ t| |ƒS )NÚ__dict__Ú	__class__zmodule object for z. substituted in sys.modules during a lazy load)ÚtypesÚ
ModuleTyperY   r"   r   Úloader_staterX   ÚitemsÚidÚloaderÚexec_moduler    r!   r   ÚupdaterC   )	rP   ÚattrÚoriginal_nameÚ
attrs_thenÚoriginal_typeÚ	attrs_nowÚattrs_updatedÚkeyÚvaluer   r   r   Ú__getattribute__ß   s"    


z_LazyModule.__getattribute__c                 C   s   |   |¡ t| |ƒ d S r   )rj   Údelattr)rP   rb   r   r   r   Ú__delattr__  s    
z_LazyModule.__delattr__N)rD   Ú
__module__Ú__qualname__rj   rl   r   r   r   r   rW   Û   s   #rW   c                   @   s<   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Z	dS )Ú
LazyLoaderc                 C   s   t | dƒstdƒ‚d S )Nr`   z loader must define exec_module())rE   Ú	TypeError)r_   r   r   r   Ú__check_eager_loader  s    
zLazyLoader.__check_eager_loaderc                    s   ˆ   ˆ¡ ‡ ‡fdd„S )Nc                     s   ˆ ˆ| |ŽƒS r   r   )rF   rG   ©Úclsr_   r   r   Ú<lambda>  ó    z$LazyLoader.factory.<locals>.<lambda>)Ú_LazyLoader__check_eager_loaderrr   r   rr   r   Úfactory  s    
zLazyLoader.factoryc                 C   s   |   |¡ || _d S r   )rv   r_   )rP   r_   r   r   r   Ú__init__  s    
zLazyLoader.__init__c                 C   s   | j  |¡S r   )r_   Úcreate_module)rP   r'   r   r   r   ry     s    zLazyLoader.create_modulec                 C   s@   | j |j_ | j |_i }|j ¡ |d< |j|d< ||j_t|_d S )NrX   rY   )r_   r"   rO   rX   ÚcopyrY   r\   rW   )rP   r&   r\   r   r   r   r`      s    

zLazyLoader.exec_moduleN)
rD   rm   rn   Ústaticmethodrv   Úclassmethodrw   rx   ry   r`   r   r   r   r   ro   
  s   

ro   )N)N)!Ú r   Ú
_bootstrapr   r   r   r   Ú_bootstrap_externalr   r   r	   r
   r   r   Ú
contextlibr   r   rL   r    rZ   r@   r   r   r(   r3   r:   rN   rR   rV   r[   rW   ÚLoaderro   r   r   r   r   Ú<module>   s6   

-
'/