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

  \CS  ã               @   st  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l
Z
d dlmZ d dlZddddd	d
ddddddgZeddƒZde_dd„ Zdd„ Zd*dd	„Zd+dd
„Zed,dd„ƒZd-dd„Zejejjeƒ dd„ ZG dd„ dƒZG d d„ dƒZy.d dlZd d!lmZ d.d"d#„Zejeeƒ W n e k
�r<   Y nX d$d„ Z!d/d%d„Z"d&d„ Z#d'd„ Z$d(d„ Z%d)d„ Z&dS )0é    )Ú
namedtuple)ÚsingledispatchN)Ú
ModuleTypeÚget_importerÚiter_importersÚ
get_loaderÚfind_loaderÚwalk_packagesÚiter_modulesÚget_dataÚImpImporterÚ	ImpLoaderÚ	read_codeÚextend_pathÚ
ModuleInfozmodule_finder name ispkgz.A namedtuple with minimal info about a module.c             C   sL   y
| j }W n4 tk
r>   | j|ƒ}|d kr0d S tjj||ƒS X ||ƒS d S )N)Ú	find_specÚAttributeErrorÚfind_moduleÚ	importlibÚutilÚspec_from_loader)ÚfinderÚnamer   Úloader© r   ú/usr/lib64/python3.6/pkgutil.pyÚ	_get_spec   s    

r   c             C   s6   dd l }| jdƒ}|tjjkr"d S | jdƒ |j| ƒS )Nr   é   é   )ÚmarshalÚreadr   r   ÚMAGIC_NUMBERÚload)Ústreamr   Úmagicr   r   r   r   (   s    

Ú c             #   sÐ   i fdd„‰ x¾t | |ƒD ]°}|V  |jryt|jƒ W nN tk
r\   |d k	rX||jƒ Y q tk
r„   |d k	r~||jƒ n‚ Y qX ttj|j dd ƒpœg } ‡ fdd„| D ƒ} t	| |jd |ƒE d H  qW d S )Nc             S   s   | |krdS d|| < d S )NTr   )ÚpÚmr   r   r   ÚseenR   s    zwalk_packages.<locals>.seenÚ__path__c                s   g | ]}ˆ |ƒs|‘qS r   r   )Ú.0r&   )r(   r   r   ú
<listcomp>i   s    z!walk_packages.<locals>.<listcomp>Ú.)
r
   ÚispkgÚ
__import__r   ÚImportErrorÚ	ExceptionÚgetattrÚsysÚmodulesr	   )ÚpathÚprefixÚonerrorÚinfor   )r(   r   r	   5   s     c             c   sf   | d krt ƒ }n
tt| ƒ}i }xB|D ]:}x4t||ƒD ]&\}}||kr4d||< t|||ƒV  q4W q$W d S )Né   )r   Úmapr   Úiter_importer_modulesr   )r4   r5   Z	importersÚyieldedÚir   r-   r   r   r   r
   n   s    


c             C   s   t | dƒsg S | j|ƒS )Nr
   )Úhasattrr
   )Úimporterr5   r   r   r   r:   …   s    
r:   c             c   s0  | j d kstj j| j ƒ rd S i }dd l}ytj| j ƒ}W n tk
rR   g }Y nX |jƒ  xÎ|D ]Æ}|j|ƒ}|dksb||kr‚qbtj j| j |ƒ}d}| o®tj j|ƒo®d|k�r|}ytj|ƒ}	W n tk
rÜ   g }	Y nX x&|	D ]}|j|ƒ}
|
dkräd}P qäW qb|rbd|krbd||< || |fV  qbW d S )Nr   Ú__init__Fr,   Tr8   )	r4   ÚosÚisdirÚinspectÚlistdirÚOSErrorÚsortÚgetmodulenameÚjoin)r>   r5   r;   rB   Ú	filenamesÚfnÚmodnamer4   r-   ÚdircontentsÚsubnamer   r   r   Ú_iter_file_finder_modules�   s<    





rM   c            
   C   s.   t jƒ � t jdtƒ tjdƒaW d Q R X d S )NÚignoreÚimp)ÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningr   Úimport_modulerO   r   r   r   r   Ú_import_imp¹   s    
rU   c               @   s*   e Zd Zd	dd„Zd
dd„Zddd„ZdS )r   Nc             C   s   t jdtƒ tƒ  || _d S )Nz5This emulation is deprecated, use 'importlib' instead)rP   ÚwarnrS   rU   r4   )Úselfr4   r   r   r   r?   Ê   s    zImpImporter.__init__c             C   s~   |j dƒd }||kr$| jd kr$d S | jd kr4d }ntjj| jƒg}ytj||ƒ\}}}W n tk
rn   d S X t||||ƒS )Nr,   r8   éÿÿÿÿ)Úsplitr4   r@   ÚrealpathrO   r   r/   r   )rW   Úfullnamer4   rL   ÚfileÚfilenameÚetcr   r   r   r   Ñ   s    
zImpImporter.find_moduler%   c             c   s0  | j d kstj j| j ƒ rd S i }dd l}ytj| j ƒ}W n tk
rR   g }Y nX |jƒ  xÎ|D ]Æ}|j|ƒ}|dksb||kr‚qbtj j| j |ƒ}d}| o®tj j|ƒo®d|k�r|}ytj|ƒ}	W n tk
rÜ   g }	Y nX x&|	D ]}|j|ƒ}
|
dkräd}P qäW qb|rbd|krbd||< || |fV  qbW d S )Nr   r?   Fr,   Tr8   )	r4   r@   rA   rB   rC   rD   rE   rF   rG   )rW   r5   r;   rB   rH   rI   rJ   r4   r-   rK   rL   r   r   r   r
   à   s<    





zImpImporter.iter_modules)N)N)r%   )Ú__name__Ú
__module__Ú__qualname__r?   r   r
   r   r   r   r   r   ¿   s   

c               @   sj   e Zd Zd ZZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
ddd„Zddd„Zdd„ Zddd„ZdS )r   Nc             C   s.   t jdtƒ tƒ  || _|| _|| _|| _d S )Nz5This emulation is deprecated, use 'importlib' instead)rP   rV   rS   rU   r\   r]   r[   r^   )rW   r[   r\   r]   r^   r   r   r   r?     s    zImpLoader.__init__c             C   s:   | j ƒ  ztj|| j| j| jƒ}W d | jr4| jjƒ  X |S )N)Ú_reopenrO   Úload_moduler\   r]   r^   Úclose)rW   r[   Úmodr   r   r   rc     s    zImpLoader.load_modulec          	   C   s   t |dƒ�
}|jƒ S Q R X d S )NÚrb)Úopenr    )rW   Úpathnamer\   r   r   r   r   "  s    zImpLoader.get_datac             C   sT   | j rP| j jrP| jd }|tjkr2t| jdƒ| _ n|tjtjfkrPt| jdƒ| _ d S )Né   Úrrf   )	r\   Úclosedr^   rO   Ú	PY_SOURCErg   r]   ÚPY_COMPILEDÚC_EXTENSION)rW   Úmod_typer   r   r   rb   &  s    

zImpLoader._reopenc             C   s0   |d kr| j }n|| j kr,td| j |f ƒ‚|S )Nz,Loader for module %s cannot handle module %s)r[   r/   )rW   r[   r   r   r   Ú	_fix_name.  s    
zImpLoader._fix_namec             C   s   | j |ƒ}| jd tjkS )Nri   )rp   r^   rO   ÚPKG_DIRECTORY)rW   r[   r   r   r   Ú
is_package6  s    
zImpLoader.is_packagec          
   C   s”   | j |ƒ}| jd krŽ| jd }|tjkrD| j|ƒ}t|| jdƒ| _nJ|tjkrv| j	ƒ  zt
| jƒ| _W d | jjƒ  X n|tjkrŽ| jƒ jƒ | _| jS )Nri   Úexec)rp   Úcoder^   rO   rl   Ú
get_sourceÚcompiler]   rm   rb   r   r\   rd   rq   Ú_get_delegateÚget_code)rW   r[   ro   Úsourcer   r   r   rx   :  s    






zImpLoader.get_codec          
   C   sº   | j |ƒ}| jd kr´| jd }|tjkrP| jƒ  z| jjƒ | _W d | jjƒ  X nd|tj	krœt
jj| jd d… ƒr´t| jd d… dƒ�}|jƒ | _W d Q R X n|tjkr´| jƒ jƒ | _| jS )Nri   r8   rj   rX   rX   )rp   ry   r^   rO   rl   rb   r\   r    rd   rm   r@   r4   Úexistsr]   rg   rq   rw   ru   )rW   r[   ro   Úfr   r   r   ru   K  s    





zImpLoader.get_sourcec             C   s   t | jƒ}t|dƒ}|jS )Nr?   )r   r]   r   r   )rW   r   Úspecr   r   r   rw   ]  s    

zImpLoader._get_delegatec             C   sH   | j |ƒ}| jd }|tjkr*| jƒ jƒ S |tjtjtjfkrD| j	S d S )Nri   )
rp   r^   rO   rq   rw   Úget_filenamerl   rm   rn   r]   )rW   r[   ro   r   r   r   r}   b  s    


zImpLoader.get_filename)N)N)N)r_   r`   ra   rt   ry   r?   rc   r   rb   rp   rr   rx   ru   rw   r}   r   r   r   r   r   	  s   	

)Úzipimporterc       	      c   sð   t tj| j ƒ}| j}t|ƒ}i }dd l}xÀ|D ]¸}|j|ƒs@q0||d … jt	j
ƒ}t|ƒdkr˜|d jdƒr˜|d |kr˜d||d < ||d  dfV  t|ƒdkr¦q0|j|d ƒ}|dkr¾q0|r0d|kr0||kr0d||< || dfV  q0W d S )	Nr   ri   r8   z__init__.pyTr?   r,   F)ÚsortedÚ	zipimportÚ_zip_directory_cacheÚarchiver5   ÚlenrB   Ú
startswithrY   r@   ÚseprF   )	r>   r5   ZdirlistÚ_prefixZplenr;   rB   rI   rJ   r   r   r   Úiter_zipimport_modulesp  s*    

r‡   c             C   sn   yt j|  }W nZ tk
rh   xDt jD ]6}y|| ƒ}t jj| |ƒ P W q& tk
rZ   Y q&X q&W d }Y nX |S )N)r2   Úpath_importer_cacheÚKeyErrorÚ
path_hooksÚ
setdefaultr/   )Z	path_itemr>   Ú	path_hookr   r   r   r   ’  s    	

c             c   s„   | j dƒrdj| ƒ}t|ƒ‚d| krV| jdƒd }tj|ƒ}t|dd ƒ}|d krhd S ntjE d H  tj	}x|D ]}t
|ƒV  qnW d S )Nr,   z'Relative module name {!r} not supportedr   r)   )r„   Úformatr/   Ú
rpartitionr   rT   r1   r2   Ú	meta_pathr4   r   )r[   ÚmsgZpkg_nameZpkgr4   Úitemr   r   r   r   ª  s    



c             C   sn   | t jkr t j|  } | d kr d S t| tƒrb| }t|dd ƒ}|d k	rF|S t|dd ƒd krZd S |j}n| }t|ƒS )NÚ
__loader__Ú__spec__)r2   r3   Ú
isinstancer   r1   r_   r   )Zmodule_or_nameÚmoduler   r[   r   r   r   r   Ç  s    


c             C   s†   | j dƒrdj| ƒ}t|ƒ‚ytjj| ƒ}W nF ttttfk
rr } z"d}t|j| t	|ƒ|ƒƒ|‚W Y d d }~X nX |d k	r‚|j
S d S )Nr,   z'Relative module name {!r} not supportedz,Error while finding loader for {!r} ({}: {}))r„   r�   r/   r   r   r   r   Ú	TypeErrorÚ
ValueErrorÚtyper   )r[   r�   r|   Zexr   r   r   r   ß  s    

*c             C   sª  t | tƒs| S |d }| d d … } |jdƒ\}}}|rbytj| j}W qh ttfk
r^   | S X ntj}�x:|D �]0}t |t	ƒs‚qpt
|ƒ}|d k	rög }	t|dƒr¾|j|ƒ}
|
d k	rÖ|
jpºg }	nt|dƒrÖ|j|ƒ\}}	x|	D ]}|| krÜ| j|ƒ qÜW tjj||ƒ}tjj|ƒrpyt|ƒ}W n8 tk
�rT } ztjjd||f ƒ W Y d d }~X qpX |�B x:|D ]2}|jdƒ}| �sb|jdƒ�rˆ�qb| j|ƒ �qbW W d Q R X qpW | S )Nz.pkgr,   r   r   zCan't open %s: %s
Ú
ú#)r”   ÚlistrŽ   r2   r3   r)   r‰   r   r4   Ústrr   r=   r   Úsubmodule_search_locationsr   Úappendr@   rG   Úisfilerg   rD   ÚstderrÚwriteÚrstripr„   )r4   r   Z	sname_pkgZparent_packageÚ_Z
final_nameZsearch_pathÚdirr   Úportionsr|   ZportionZpkgfiler{   r�   Úliner   r   r   r   ô  sP    !







c             C   sœ   t jj| ƒ}|d krd S |j}|d ks2t|dƒ r6d S tjj| ƒpLt jj	|ƒ}|d ksbt|dƒ rfd S |j
dƒ}|jdtjj|jƒƒ tjj|Ž }|j|ƒS )Nr   Ú__file__ú/r   )r   r   r   r   r=   r2   r3   ÚgetÚ
_bootstrapÚ_loadrY   Úinsertr@   r4   Údirnamer§   rG   r   )ÚpackageZresourcer|   r   re   ÚpartsZresource_namer   r   r   r   R  s    
)Nr%   N)Nr%   )r%   )r%   )r%   )r%   )'Úcollectionsr   Ú	functoolsr   Zsimplegenericr   Úimportlib.utilÚimportlib.machineryr@   Zos.pathr2   Útypesr   rP   Ú__all__r   Ú__doc__r   r   r	   r
   r:   rM   ÚregisterÚ	machineryÚ
FileFinderrU   r   r   r€   r~   r‡   r/   r   r   r   r   r   r   r   r   r   r   Ú<module>   sP   

9

(Jc

^