???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................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 xt | |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 pg }  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rqbtj j| j |}d}| otj j|od|kr|}ytj|}	W n tk
r   g }	Y nX x&|	D ]}|j|}
|
dkrd}P qW 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rqbtj j| j |}d}| otj j|od|kr|}ytj|}	W n tk
r   g }	Y nX x&|	D ]}|j|}
|
dkrd}P qW 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rt
jj| jd d rt| 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rd||d < ||d  dfV  t|dkrq0|j|d }|dkrq0|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	sqpt
|}|d k	rg }	t|dr|j|}
|
d k	r|
jpg }	nt|dr|j|\}}	x|	D ]}|| kr| j| qW 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

^