
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \ƒ*  ã               @   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ZddlZddlZddl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)Úcache_from_source)Údecode_source)Úsource_from_cache)Úspec_from_file_locationé    )ÚcontextmanagerNc             C   s^   | j dƒs| S |s&tdt| ƒ› d�ƒ‚d}x| D ]}|dkr>P |d7 }q0W t| |d … ||ƒS )NÚ.zno package specified for z% (required for relative module names)r   r   )Ú
startswithÚ
ValueErrorÚreprr   )ÚnameÚpackageÚlevelÚ	character© r   ú&/usr/lib64/python3.6/importlib/util.pyÚresolve_name   s    

r   c             C   sx   | t jkrt| |ƒS t j|  }|d kr*d S y
|j}W n$ tk
rX   tdj| ƒƒd ‚Y nX |d krptdj| ƒƒ‚|S d S )Nz{}.__spec__ is not setz{}.__spec__ is None)ÚsysÚmodulesr   Ú__spec__ÚAttributeErrorr   Úformat)r   ÚpathÚmoduleÚspecr   r   r   Ú_find_spec_from_path#   s    



r!   c             C   s¾   | j dƒrt| |ƒn| }|tjkrZ|jdƒd }|rNt|dgd�}t||jƒS t|d ƒS n`tj| }|d krpd S y
|j}W n$ t	k
rž   t
dj| ƒƒd ‚Y nX |d kr¶t
dj| ƒƒ‚|S d S )Nr   r   Ú__path__)Úfromlistz{}.__spec__ is not setz{}.__spec__ is None)r   r   r   r   Ú
rpartitionÚ
__import__r   r"   r   r   r   r   )r   r   ÚfullnameÚparent_nameÚparentr   r    r   r   r   Ú	find_specB   s"    


r)   c             c   sŽ   | t jk}t jj| ƒ}|s6tt ƒ| ƒ}d|_|t j| < zJy
|V  W n: tk
r|   |sxyt j| = W n tk
rv   Y nX Y nX W d d|_X d S )NTF)r   r   ÚgetÚtypeÚ__initializing__Ú	ExceptionÚKeyError)r   Ú	is_reloadr   r   r   r   Ú_module_to_loadj   s    


r0   c                s   t jˆ ƒ‡ fdd„ƒ}|S )Nc                 sR   t jdtdd� ˆ | |Ž}t|dd ƒd krN|j|_t|dƒsN|jjdƒd |_|S )Nz7The import system now takes care of this automatically.é   )Ú
stacklevelÚ__package__r"   r   r   )ÚwarningsÚwarnÚDeprecationWarningÚgetattrÚ__name__r3   Úhasattrr$   )ÚargsÚkwargsr   )Úfxnr   r   Úset_package_wrapperŠ   s    


z(set_package.<locals>.set_package_wrapper)Ú	functoolsÚwraps)r<   r=   r   )r<   r   Úset_package„   s    
r@   c                s   t jˆ ƒ‡ fdd„ƒ}|S )Nc                s:   t jdtdd� ˆ | f|ž|Ž}t|dd ƒd kr6| |_|S )Nz7The import system now takes care of this automatically.r1   )r2   Ú
__loader__)r4   r5   r6   r7   rA   )Úselfr:   r;   r   )r<   r   r   Úset_loader_wrapper�   s    
z&set_loader.<locals>.set_loader_wrapper)r>   r?   )r<   rC   r   )r<   r   Ú
set_loader—   s    rD   c                s*   t jdtdd� tjˆ ƒ‡ fdd„ƒ}|S )Nz7The import system now takes care of this automatically.r1   )r2   c                sp   t |ƒ�^}| |_y| j|ƒ}W n ttfk
r6   Y nX |rD||_n|jdƒd |_ˆ | |f|ž|ŽS Q R X d S )Nr   r   )r0   rA   Ú
is_packageÚImportErrorr   r3   r$   )rB   r&   r:   r;   r   rE   )r<   r   r   Úmodule_for_loader_wrapper¼   s    
z4module_for_loader.<locals>.module_for_loader_wrapper)r4   r5   r6   r>   r?   )r<   rG   r   )r<   r   Úmodule_for_loader¨   s    
rH   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 }xF|jƒ D ]:\}}||krV|||< q<t|| ƒt|| ƒkr<|||< q<W | jj	j
| ƒ |tjkr¸t| ƒttj| ƒkr¸td|›d�ƒ‚| jj|ƒ t| |ƒS )NÚ__dict__Ú	__class__zmodule object for z. substituted in sys.modules during a lazy load)ÚtypesÚ
ModuleTyperK   r   r   Úloader_staterJ   ÚitemsÚidÚloaderÚexec_moduler   r   r   Úupdater7   )	rB   ÚattrÚoriginal_nameÚ
attrs_thenÚoriginal_typeÚ	attrs_nowÚattrs_updatedÚkeyÚvaluer   r   r   Ú__getattribute__Ó   s"    

z_LazyModule.__getattribute__c             C   s   | j |ƒ t| |ƒ d S )N)r\   Údelattr)rB   rT   r   r   r   Ú__delattr__ö   s    
z_LazyModule.__delattr__N)r8   Ú
__module__Ú__qualname__r\   r^   r   r   r   r   rI   Ï   s   #rI   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 )NrR   z loader must define exec_module())r9   Ú	TypeError)rQ   r   r   r   Ú__check_eager_loader  s    
zLazyLoader.__check_eager_loaderc                s   ˆ j ˆƒ ‡ ‡fdd„S )Nc                 s   ˆ ˆ| |ŽƒS )Nr   )r:   r;   )ÚclsrQ   r   r   Ú<lambda>  s    z$LazyLoader.factory.<locals>.<lambda>)Ú_LazyLoader__check_eager_loader)rd   rQ   r   )rd   rQ   r   Úfactory  s    
zLazyLoader.factoryc             C   s   | j |ƒ || _d S )N)rf   rQ   )rB   rQ   r   r   r   Ú__init__  s    
zLazyLoader.__init__c             C   s   | j j|ƒS )N)rQ   Úcreate_module)rB   r    r   r   r   ri     s    zLazyLoader.create_modulec             C   s@   | j |j_ | j |_i }|jjƒ |d< |j|d< ||j_t|_d S )NrJ   rK   )rQ   r   rA   rJ   ÚcopyrK   rN   rI   )rB   r   rN   r   r   r   rR     s    

zLazyLoader.exec_moduleN)
r8   r_   r`   Ústaticmethodrf   Úclassmethodrg   rh   ri   rR   r   r   r   r   ra   þ   s
   ra   )N)N)Ú r   Ú
_bootstrapr   r   r   r   Ú_bootstrap_externalr   r   r	   r
   r   Ú
contextlibr   r>   r   rL   r4   r   r!   r)   r0   r@   rD   rH   rM   rI   ÚLoaderra   r   r   r   r   Ú<module>   s.   

('/