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

  \óY  ã               @   s  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Zd dlZd dl	Z	e	j
ƒ � e	jdeƒ d dlZW dQ R X e jd Ze jd Ze jd Ze jd ZeefZe jZi Zdd„ Zi Zd	d
„ ZG dd„ dƒZG dd„ dƒZdd„ Zedk�ry
eƒ ZW n ek
�r   edƒ Y nX dS )é    NÚignoreÚ
LOAD_CONSTÚIMPORT_NAMEÚ
STORE_NAMEÚSTORE_GLOBALc             C   s   t j| g ƒj|ƒ d S )N)ÚpackagePathMapÚ
setdefaultÚappend)ZpackagenameÚpath© r   ú$/usr/lib64/python3.6/modulefinder.pyÚAddPackagePath    s    r   c             C   s   |t | < d S )N)ÚreplacePackageMap)ZoldnameÚnewnamer   r   r   ÚReplacePackage+   s    r   c               @   s   e Zd Zddd„Zdd„ ZdS )ÚModuleNc             C   s(   || _ || _|| _d | _i | _i | _d S )N)Ú__name__Ú__file__Ú__path__Ú__code__ÚglobalnamesÚstarimports)ÚselfÚnameÚfiler
   r   r   r   Ú__init__1   s    zModule.__init__c             C   sL   d| j f }| jd k	r&|d| jf  }| jd k	r@|d| jf  }|d }|S )Nz	Module(%rz, %rú))r   r   r   )r   Úsr   r   r   Ú__repr__>   s    

zModule.__repr__)NN)r   Ú
__module__Ú__qualname__r   r   r   r   r   r   r   /   s   
r   c               @   sè   e Zd Zddg g fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zd7dd„Z	d9dd„Z
dd„ Zdd„ Zd:dd„Zdd„ Zdd„ Zdd„ Zd d!„ Zd<d"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd=d,d-„Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ ZdS )>ÚModuleFinderNr   c             C   sB   |d krt j}|| _i | _i | _|| _d| _|| _|| _g | _d S )Nr   )	Úsysr
   ÚmodulesÚ
badmodulesÚdebugÚindentÚexcludesÚreplace_pathsÚprocessed_paths)r   r
   r%   r'   r(   r   r   r   r   I   s    zModuleFinder.__init__c             G   s^   || j krZxt| jƒD ]}tddd� qW t|dd� x|D ]}tt|ƒdd� q<W tƒ  d S )Nz   ú )Úend)r%   Úranger&   ÚprintÚrepr)r   ÚlevelÚstrÚargsÚiÚargr   r   r   ÚmsgU   s    

zModuleFinder.msgc             G   s,   |d }|| j kr(| jd | _| j|Ž  d S )Nr   é   )r%   r&   r4   )r   r1   r/   r   r   r   Úmsgin^   s    
zModuleFinder.msginc             G   s,   |d }|| j kr(| jd | _| j|Ž  d S )Nr   r5   )r%   r&   r4   )r   r1   r/   r   r   r   Úmsgoutd   s    
zModuleFinder.msgoutc             C   sB   | j dd|ƒ t|ƒ�"}ddtjf}| jd|||ƒ W d Q R X d S )Né   Ú
run_scriptÚ ÚrÚ__main__)r4   ÚopenÚimpÚ	PY_SOURCEÚload_module)r   ÚpathnameÚfpÚstuffr   r   r   r9   j   s    
zModuleFinder.run_scriptc             C   sT   t jj|ƒ\}}t jj|ƒ\}}t|ƒ�"}|dtjf}| j||||ƒ W d Q R X d S )Nr;   )Úosr
   ÚsplitÚsplitextr=   r>   r?   r@   )r   rA   Údirr   ZextrB   rC   r   r   r   Ú	load_filep   s
    
zModuleFinder.load_filer5   c       	      C   s\   | j dd||||ƒ | j||d�}| j||ƒ\}}| j||ƒ}|sF|S |jrX| j||ƒ d S )Né   Úimport_hook)r/   )r4   Údetermine_parentÚfind_head_packageÚ	load_tailr   Úensure_fromlist)	r   r   ÚcallerÚfromlistr/   ÚparentÚqÚtailÚmr   r   r   rJ   w   s    zModuleFinder.import_hookc             C   s(  | j dd||ƒ | s|dkr.| jddƒ d S |j}|dkrº|jrJ|d8 }|dkrn| j| }| jdd|ƒ |S |jdƒ|k r„tdƒ‚dj|jdƒd | … ƒ}| j| }| jdd|ƒ |S |jrÜ| j| }| jdd|ƒ |S d|k�r|j	dƒ}|d |… }| j| }| jdd|ƒ |S | jddƒ d S )	Né   rK   r   zdetermine_parent -> Noner5   zdetermine_parent ->Ú.zrelative importpath too deep)
r6   r7   r   r   r#   ÚcountÚImportErrorÚjoinrE   Úrfind)r   rO   r/   ZpnamerQ   r2   r   r   r   rK   ‚   s<    





zModuleFinder.determine_parentc             C   sâ   | j dd||ƒ d|kr@|jdƒ}|d |… }||d d … }n|}d}|r\d|j|f }n|}| j|||ƒ}|rŒ| jdd||fƒ ||fS |rÄ|}d }| j|||ƒ}|rÄ| jdd||fƒ ||fS | jdd|ƒ td	| ƒ‚d S )
NrU   rL   rV   r5   r:   z%s.%szfind_head_package ->z"raise ImportError: No module namedzNo module named )r6   Úfindr   Úimport_moduler7   rX   )r   rQ   r   r2   ÚheadrS   ZqnamerR   r   r   r   rL   ¥   s.    
zModuleFinder.find_head_packagec             C   s¢   | j dd||ƒ |}xz|rŽ|jdƒ}|dk r4t|ƒ}|d |… ||d d …  }}d|j|f }| j|||ƒ}|s| jdd|ƒ td| ƒ‚qW | jdd	|ƒ |S )
NrU   rM   rV   r   r5   z%s.%sz"raise ImportError: No module namedzNo module named zload_tail ->)r6   r[   Úlenr   r\   r7   rX   )r   rR   rS   rT   r2   r]   Zmnamer   r   r   rM   À   s    
 zModuleFinder.load_tailc             C   s„   | j dd|||ƒ xl|D ]d}|dkrF|s|| j|ƒ}|r|| j||dƒ qt||ƒsd|j|f }| j|||ƒ}|std| ƒ‚qW d S )NrU   rN   Ú*r5   z%s.%szNo module named )r4   Úfind_all_submodulesrN   Úhasattrr   r\   rX   )r   rT   rP   Ú	recursiveÚsubÚallÚsubnameZsubmodr   r   r   rN   Ï   s    


zModuleFinder.ensure_fromlistc       
      C   sø   |j s
d S i }g }|tjjd d … 7 }|tjjd d … 7 }|tjjd d … 7 }x |j D ]–}ytj|ƒ}W n$ tk
rŒ   | j	dd|ƒ wVY nX x\|D ]T}d }x6|D ].}t
|ƒ}	||	 d … |kr¢|d |	 … }P q¢W |r”|dkr”|||< q”W qVW |jƒ S )Nr8   zcan't list directoryr   )r   Ú	importlibÚ	machineryÚEXTENSION_SUFFIXESÚSOURCE_SUFFIXESÚBYTECODE_SUFFIXESrD   ÚlistdirÚOSErrorr4   r^   Úkeys)
r   rT   r#   ÚsuffixesrG   Únamesr   ÚmodZsuffÚnr   r   r   r`   Ý   s.    

z ModuleFinder.find_all_submodulesc             C   s  | j dd|||ƒ y| j| }W n tk
r4   Y nX | jdd|ƒ |S || jkrb| jddƒ d S |r€|jd kr€| jddƒ d S y| j||o�|j|ƒ\}}}W n" tk
rÀ   | jddd ƒ d S X z| j||||ƒ}W d |rä|j	ƒ  X |röt
|||ƒ | jdd|ƒ |S )NrI   r\   zimport_module ->zimport_module -> None)r6   r#   ÚKeyErrorr7   r$   r   Úfind_modulerX   r@   ÚcloseÚsetattr)r   ZpartnameÚfqnamerQ   rT   rB   rA   rC   r   r   r   r\   ù   s6    

zModuleFinder.import_modulec             C   s  |\}}}| j dd||od|ƒ |tjkrH| j||ƒ}| jdd|ƒ |S |tjkrht|jƒ d |dƒ}	nj|tjkrÎyt	j
j|jƒ ƒ}
W n: tk
rÀ } z| jddt|ƒ |ƒ ‚ W Y d d }~X nX tj|
ƒ}	nd }	| j|ƒ}||_|	�r
| jrø| j|	ƒ}	|	|_| j|	|ƒ | jdd|ƒ |S )Nr8   r@   rB   zload_module ->Ú
Úexeczraise ImportError: )r6   r>   ZPKG_DIRECTORYÚload_packager7   r?   ÚcompileÚreadZPY_COMPILEDrf   Ú_bootstrap_externalÚ_validate_bytecode_headerrX   r0   ÚmarshalÚloadsÚ
add_moduler   r(   Úreplace_paths_in_coder   Ú	scan_code)r   rv   rB   rA   Ú	file_infoÚsuffixÚmodeÚtyperT   ÚcoZmarshal_dataÚexcr   r   r   r@     s2    





zModuleFinder.load_modulec             C   s<   || j kri | j |< |r*d| j | |j< nd| j | d< d S )Nr5   ú-)r$   r   )r   r   rO   r   r   r   Ú_add_badmodule4  s
    

zModuleFinder._add_badmodulec             C   s  || j kr| j||ƒ d S y| j|||d� W n@ tk
rn } z$| jddt|ƒƒ | j||ƒ W Y d d }~X n”X |�rxŠ|D ]‚}|| j kr˜| j||ƒ q|y| j|||g|d� W q| tk
rü } z0| jddt|ƒƒ |d | }| j||ƒ W Y d d }~X q|X q|W d S )N)r/   r8   zImportError:rV   )r$   rŠ   rJ   rX   r4   r0   )r   r   rO   rP   r/   r4   rc   Úfullnamer   r   r   Ú_safe_import_hook<  s&    


zModuleFinder._safe_import_hookc             c   sø   |j }|j}|j}dd„ tj|ƒD ƒ}xÌt|ƒD ]À\}\}}|tkrVd|| ffV  q0|tkr0|dkr0||d  d ||d  d   ko�tkn  r0|||d  d  }	|||d  d  }
|	dkrÚd|
|| ffV  q0d|	|
|| ffV  q0q0W d S )	Nc             S   s"   g | ]\}}}|t kr||f‘qS r   )ÚEXTENDED_ARG)Ú.0Ú_Úopr3   r   r   r   ú
<listcomp>X  s    z-ModuleFinder.scan_opcodes.<locals>.<listcomp>Ústorer8   r5   r   Úabsolute_importÚrelative_import)	Úco_codeÚco_namesÚ	co_constsÚdisZ_unpack_opargsÚ	enumerateÚ	STORE_OPSr   r   )r   r‡   Úcodero   ÚconstsZopargsr2   r�   Zopargr/   rP   r   r   r   Úscan_opcodesS  s     0zModuleFinder.scan_opcodesc             C   s–  |j }| j}�xT||ƒD �]F\}}|dkr<|\}d|j|< q|dk�r|\}}d}	|d k	rtd|krfd}	dd„ |D ƒ}| j|||dd� |	�r`d }
|jr¬| jj|jd	 | ƒ}
|
d krÀ| jj|ƒ}
|
d k	rú|jj|
jƒ |j	j|
j	ƒ |
j
d krød|j	|< n
d|j	|< q|d
k�rX|\}}}|�r4| j||||d� n"| j||d�}| j|jd |dd� qt|ƒ‚qW x,|jD ]"}t|t|ƒƒ�rl| j||ƒ �qlW d S )Nr’   r5   r“   r   r_   c             S   s   g | ]}|d kr|‘qS )r_   r   )rŽ   Úfr   r   r   r‘   u  s    z*ModuleFinder.scan_code.<locals>.<listcomp>)r/   rV   r”   )r•   r�   r   rŒ   r   r#   Úgetr   Úupdater   r   rK   ÚRuntimeErrorr—   Ú
isinstancer†   r‚   )r   r‡   rT   r›   ÚscannerZwhatr1   r   rP   Z	have_starZmmr/   rQ   Úcr   r   r   r‚   h  sH    



zModuleFinder.scan_codec             C   s˜   | j dd||ƒ tj|ƒ}|r"|}| j|ƒ}||_|g|_|jtj|g ƒ |_| jd|jƒ\}}}z"| j||||ƒ | j	dd|ƒ |S |r’|j
ƒ  X d S )Nr8   ry   r   zload_package ->)r6   r   rŸ   r€   r   r   r   rs   r@   r7   rt   )r   rv   rA   r   rT   rB   ZbufrC   r   r   r   ry   ™  s    

zModuleFinder.load_packagec             C   s*   || j kr| j | S t|ƒ | j |< }|S )N)r#   r   )r   rv   rT   r   r   r   r€   ®  s    

zModuleFinder.add_modulec             C   sr   |d k	r|j d | }n|}|| jkr<| jdd|ƒ t|ƒ‚|d krf|tjkr`d d ddtjffS | j}tj	||ƒS )NrV   rI   zfind_module -> Excludedr:   )
r   r'   r7   rX   r"   Úbuiltin_module_namesr>   Z	C_BUILTINr
   rs   )r   r   r
   rQ   r‹   r   r   r   rs   ´  s    

zModuleFinder.find_modulec             C   s"  t ƒ  t dd ƒ t dd ƒ t| jjƒ ƒ}xJ|D ]B}| j| }|jrTt ddd� nt ddd� t d	| |jppd
ƒ q2W | jƒ \}}|rÊt ƒ  t dƒ x2|D ]*}t| j| jƒ ƒ}t d|ddj|ƒƒ qœW |�rt ƒ  t ddd� t dƒ x2|D ]*}t| j| jƒ ƒ}t d|ddj|ƒƒ qðW d S )Nz
  %-25s %sÚNameÚFileú----ÚPr*   )r+   rT   z%-25sr:   zMissing modules:ú?zimported fromz, z7Submodules that appear to be missing, but could also bez#global names in the parent package:)r¦   r§   )r¨   r¨   )	r-   Úsortedr#   rm   r   r   Úany_missing_mayber$   rY   )r   rm   ÚkeyrT   ÚmissingÚmayber   Zmodsr   r   r   ÚreportÅ  s0    



zModuleFinder.reportc             C   s   | j ƒ \}}|| S )N)r¬   )r   r®   r¯   r   r   r   Úany_missingç  s    zModuleFinder.any_missingc             C   sØ   g }g }x¶| j D ]¬}|| jkr q|jdƒ}|dk r>|j|ƒ q||d d … }|d |… }| jj|ƒ}|d k	r²|| j | krˆ|j|ƒ q¼||jkr”q¼|jr¦|j|ƒ q¼|j|ƒ q|j|ƒ qW |jƒ  |jƒ  ||fS )NrV   r   r5   )	r$   r'   rZ   r	   r#   rŸ   r   r   Úsort)r   r®   r¯   r   r2   re   ZpkgnameZpkgr   r   r   r¬   ï  s0    	



zModuleFinder.any_missing_maybec             C   s  t jj|jƒ }}x2| jD ](\}}|j|ƒr||t|ƒd …  }P qW | jr’|| jkr’||krt| j	dd||f ƒ n| j	dd|f ƒ | jj
|ƒ t|jƒ}x8tt|ƒƒD ](}t|| t|ƒƒrª| j|| ƒ||< qªW tj|j|j|j|j|j|jt|ƒ|j|j||j|j|j|j|j ƒS )Nr8   zco_filename %r changed to %rz co_filename %r remains unchanged)!rD   r
   ÚnormpathÚco_filenamer(   Ú
startswithr^   r%   r)   r7   r	   Úlistr—   r,   r¢   r†   r�   ÚtypesÚCodeTypeÚco_argcountÚco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsr•   Útupler–   Úco_varnamesÚco_nameÚco_firstlinenoÚ	co_lnotabÚco_freevarsÚco_cellvars)r   r‡   Znew_filenameZoriginal_filenamerž   r;   rœ   r2   r   r   r   r�     s,    



z"ModuleFinder.replace_paths_in_codeéÿÿÿÿ)NNrÅ   rÅ   )rÅ   )r   rÅ   )rÅ   )N)r   r   r    r   r4   r6   r7   r9   rH   rJ   rK   rL   rM   rN   r`   r\   r@   rŠ   rŒ   r�   r‚   ry   r€   rs   r°   r±   r¬   r�   r   r   r   r   r!   G   s2   	

#

1
".r!   c              C   sÂ  dd l } y| j tjdd … dƒ\}}W n* | jk
rP } zt|ƒ d S d }~X nX d}d}g }g }xb|D ]Z\}}	|dkr€|d }|dkrŒd}|dkr¤||	jtjƒ }|dkr°d}|dkrh|j|	ƒ qhW |sÐd	}
n|d }
tj	d d … }tj	j
|
ƒ|d< || }|dk�r.td
ƒ x|D ]}tdt|ƒƒ �qW t|||ƒ}xp|dd … D ]`}|dk�r^d}�qH|�rœ|dd … dk�r�|j|d d… d dgƒ n
|j|ƒ n
|j|ƒ �qHW |j|
ƒ |jƒ  |S )Nr   r5   zdmp:qx:z-dz-mz-pz-qz-xzhello.pyzpath:z   r8   z.*r_   éþÿÿÿrÆ   )Úgetoptr"   ÚargvÚerrorr-   rE   rD   Úpathsepr	   r
   Údirnamer.   r!   rJ   rH   r9   r°   )rÇ   Zoptsr1   r4   r%   ZdomodsZaddpathZexcludeÚoÚaZscriptr
   ÚitemÚmfr3   r   r   r   Útest:  sX    



rÐ   r<   z
[interrupted]) r˜   Zimportlib._bootstrap_externalrf   Úimportlib.machineryr~   rD   r"   r·   ZstructÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningr>   Zopmapr   r   r   r   rš   r�   r   r   r   r   r   r!   rÐ   r   rÏ   ÚKeyboardInterruptr-   r   r   r   r   Ú<module>   s@   




   v;

