???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d7,                     @   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   &/usr/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 }|rt|dgd}z
|j}W q tk
r } ztd|d||d|W 5 d }~X Y qX nd }t	||S tj| }|d krd S z
|j
}W n$ tk
r   td| d Y nX |d krt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 )N7The 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rt| ttj| krt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   

-
'/