
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jmÚ  ã               @   s"  dmZ dnZee  Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdodd„ZeejƒZdjddƒd ZejedƒZdZdZdgZdgZe ZZdpd d!œd"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z d.d/„ Z!dqd0d1„Z"drd2d3„Z#dsd5d6„Z$d7d8„ Z%e&ƒ Z'dtd e'd9œd:d;„Z(G d<d=„ d=ƒZ)G d>d?„ d?ƒZ*G d@dA„ dAe*ƒZ+G dBdC„ dCƒZ,G dDdE„ dEe,e+ƒZ-G dFdG„ dGe,e*ƒZ.g Z/G dHdI„ dIe,e*ƒZ0G dJdK„ dKƒZ1G dLdM„ dMƒZ2G dNdO„ dOƒZ3G dPdQ„ dQƒZ4dudRdS„Z5dTdU„ Z6dVdW„ Z7dXdY„ Z8dZd[d\d]d^d_d`dadbdcdddedfdgdhdidjœZ9dkdl„ Z:d S )vÚwinÚcygwinÚdarwinc                 s<   t jjtƒr0t jjtƒrd‰ nd‰ ‡ fdd„} ndd„ } | S )NÚPYTHONCASEOKs   PYTHONCASEOKc                  s
   ˆ t jkS )N)Ú_osÚenviron© )Úkeyr   ú5/usr/lib64/python3.6/importlib/_bootstrap_external.pyÚ_relax_case%   s    z%_make_relax_case.<locals>._relax_casec               S   s   dS )NFr   r   r   r   r	   r
   )   s    )ÚsysÚplatformÚ
startswithÚ_CASE_INSENSITIVE_PLATFORMSÚ#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r
   r   )r   r	   Ú_make_relax_case   s    r   c             C   s   t | ƒd@ jddƒS )Nl   ÿÿ é   Úlittle)ÚintÚto_bytes)Úxr   r   r	   Ú_w_long/   s    r   c             C   s   t j| dƒS )Nr   )r   Ú
from_bytes)Ú	int_bytesr   r   r	   Ú_r_long4   s    r   c              G   s   t jdd„ | D ƒƒS )Nc             S   s   g | ]}|r|j tƒ‘qS r   )ÚrstripÚpath_separators)Ú.0Úpartr   r   r	   ú
<listcomp>;   s   z_path_join.<locals>.<listcomp>)Úpath_sepÚjoin)Ú
path_partsr   r   r	   Ú
_path_join9   s    
r"   c             C   s`   t tƒdkr$| jtƒ\}}}||fS x2t| ƒD ]&}|tkr.| j|dd�\}}||fS q.W d| fS )Né   )ÚmaxsplitÚ )Úlenr   Ú
rpartitionr   ÚreversedÚrsplit)ÚpathÚfrontÚ_Útailr   r   r   r	   Ú_path_split?   s    r.   c             C   s
   t j| ƒS )N)r   Ústat)r*   r   r   r	   Ú
_path_statK   s    r0   c             C   s0   yt | ƒ}W n tk
r    dS X |jd@ |kS )NFi ð  )r0   ÚOSErrorÚst_mode)r*   ÚmodeÚ	stat_infor   r   r	   Ú_path_is_mode_typeU   s
    r5   c             C   s
   t | dƒS )Ni €  )r5   )r*   r   r   r	   Ú_path_isfile^   s    r6   c             C   s   | st jƒ } t| dƒS )Ni @  )r   Úgetcwdr5   )r*   r   r   r	   Ú_path_isdirc   s    r8   é¶  c             C   s¢   dj | t| ƒƒ}tj|tjtjB tjB |d@ ƒ}y2tj|dƒ�}|j	|ƒ W d Q R X tj
|| ƒ W n: tk
rœ   ytj|ƒ W n tk
r”   Y nX ‚ Y nX d S )Nz{}.{}i¶  Úwb)ÚformatÚidr   ÚopenÚO_EXCLÚO_CREATÚO_WRONLYÚ_ioÚFileIOÚwriteÚreplacer1   Úunlink)r*   Údatar3   Úpath_tmpÚfdÚfiler   r   r	   Ú_write_atomicj   s    rJ   i3  é   r   s   
Ú__pycache__zopt-z.pyz.pycN)Úoptimizationc            C   sô   |d k	r4t jdtƒ |d k	r(d}t|ƒ‚|r0dnd}tj| ƒ} t| ƒ\}}|jdƒ\}}}tj	j
}	|	d krrtdƒ‚dj|r~|n|||	gƒ}
|d kr¬tjjdkr¤d}ntjj}t|ƒ}|dkrà|jƒ sÒtdj|ƒƒ‚d	j|
t|ƒ}
t|t|
td  ƒS )
NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner%   r#   Ú.z$sys.implementation.cache_tag is Noneé    z{!r} is not alphanumericz{}.{}{})Ú	_warningsÚwarnÚDeprecationWarningÚ	TypeErrorr   Úfspathr.   r'   r   ÚimplementationÚ	cache_tagÚNotImplementedErrorr    ÚflagsÚoptimizeÚstrÚisalnumÚ
ValueErrorr;   Ú_OPTr"   Ú_PYCACHEÚBYTECODE_SUFFIXES)r*   Údebug_overriderM   ÚmessageÚheadr-   ÚbaseÚsepÚrestÚtagÚalmost_filenamer   r   r	   Úcache_from_source  s0    
rh   c             C   sæ   t jjd krtdƒ‚tj| ƒ} t| ƒ\}}t|ƒ\}}|tkrNtdj	t| ƒƒ‚|j
dƒ}|d
krptdj	|ƒƒ‚nV|dkrÆ|jddƒd }|jtƒs tdj	tƒƒ‚|ttƒd … }|jƒ sÆtdj	|ƒƒ‚|jdƒd	 }t||td	  ƒS )Nz$sys.implementation.cache_tag is Nonez%{} not bottom-level directory in {!r}rN   rK   é   z!expected only 2 or 3 dots in {!r}z9optimization portion of filename does not start with {!r}z4optimization level {!r} is not an alphanumeric valuerO   >   rK   ri   éþÿÿÿ)r   rU   rV   rW   r   rT   r.   r^   r\   r;   Úcountr)   r   r]   r&   r[   Ú	partitionr"   ÚSOURCE_SUFFIXES)r*   rb   Úpycache_filenameÚpycacheÚ	dot_countrM   Ú	opt_levelÚbase_filenamer   r   r	   Úsource_from_cache4  s.    	




rs   c             C   s€   t | ƒdkrd S | jdƒ\}}}| s:|jƒ dd… dkr>| S yt| ƒ}W n$ ttfk
rn   | d d… }Y nX t|ƒr||S | S )	NrO   rN   ri   r#   Úpyéýÿÿÿéÿÿÿÿrv   )r&   r'   Úlowerrs   rW   r\   r6   )Úbytecode_pathre   r,   Ú	extensionÚsource_pathr   r   r	   Ú_get_sourcefileV  s    r{   c             C   sH   | j ttƒƒr.yt| ƒS  tk
r*   Y qDX n| j ttƒƒr@| S d S d S )N)ÚendswithÚtuplerm   rh   rW   r_   )Úfilenamer   r   r	   Ú_get_cachedi  s    r   c             C   s4   yt | ƒj}W n tk
r&   d}Y nX |dO }|S )Ni¶  é€   )r0   r2   r1   )r*   r3   r   r   r	   Ú
_calc_modeu  s    
r�   c                sD   d‡ fdd„	}y
t j}W n tk
r4   dd„ }Y nX ||ˆ ƒ |S )Nc                sB   |d kr| j }n | j |kr0td| j |f |d�‚ˆ | |f|ž|ŽS )Nzloader for %s cannot handle %s)Úname)r‚   ÚImportError)Úselfr‚   ÚargsÚkwargs)Úmethodr   r	   Ú_check_name_wrapper‰  s    
z(_check_name.<locals>._check_name_wrapperc             S   s<   x(dD ] }t ||ƒrt| |t||ƒƒ qW | jj|jƒ d S )NÚ
__module__Ú__name__Ú__qualname__Ú__doc__)r‰   rŠ   r‹   rŒ   )ÚhasattrÚsetattrÚgetattrÚ__dict__Úupdate)ÚnewÚoldrD   r   r   r	   Ú_wrap”  s    

z_check_name.<locals>._wrap)N)Ú
_bootstrapr”   Ú	NameError)r‡   rˆ   r”   r   )r‡   r	   Ú_check_name�  s    

r—   c             C   s<   | j |ƒ\}}|d kr8t|ƒr8d}tj|j|d ƒtƒ |S )Nz,Not importing directory {}: missing __init__rO   )Úfind_loaderr&   rP   rQ   r;   ÚImportWarning)r„   ÚfullnameÚloaderÚportionsÚmsgr   r   r	   Ú_find_module_shim�  s
    
rž   c             C   sˆ  i }|d k	r||d< nd}|d k	r*||d< | d d… }| dd… }| dd… }|t kr|dj||ƒ}tjd|ƒ t|f|Ž‚nVt|ƒdkr¨d	j|ƒ}tjd|ƒ t|ƒ‚n*t|ƒdkrÒd
j|ƒ}tjd|ƒ t|ƒ‚|d k	�r|yt|d ƒ}	W n tk
�r   Y n2X t	|ƒ|	k�r4dj|ƒ}tjd|ƒ t|f|Ž‚y|d d@ }
W n tk
�rZ   Y n"X t	|ƒ|
k�r|tdj|ƒf|Ž‚| dd … S )Nr‚   z
<bytecode>r*   r   é   é   zbad magic number in {!r}: {!r}z{}z+reached EOF while reading timestamp in {!r}z0reached EOF while reading size of source in {!r}Úmtimezbytecode is stale for {!r}Úsizel   ÿÿ )
ÚMAGIC_NUMBERr;   r•   Ú_verbose_messagerƒ   r&   ÚEOFErrorr   ÚKeyErrorr   )rF   Úsource_statsr‚   r*   Úexc_detailsÚmagicÚraw_timestampÚraw_sizera   Úsource_mtimeÚsource_sizer   r   r	   Ú_validate_bytecode_header®  sL    





r®   c             C   sP   t j| ƒ}t|tƒr8tjd|ƒ |d k	r4tj||ƒ |S tdj	|ƒ||d�‚d S )Nzcode object from {!r}zNon-code object in {!r})r‚   r*   )
ÚmarshalÚloadsÚ
isinstanceÚ
_code_typer•   r¤   Ú_impÚ_fix_co_filenamerƒ   r;   )rF   r‚   rx   rz   Úcoder   r   r	   Ú_compile_bytecodeå  s    


r¶   rO   c             C   s8   t tƒ}|jt|ƒƒ |jt|ƒƒ |jtj| ƒƒ |S )N)Ú	bytearrayr£   Úextendr   r¯   Údumps)rµ   r¡   r­   rF   r   r   r	   Ú_code_to_bytecodeñ  s
    rº   c             C   s>   dd l }tj| ƒj}|j|ƒ}tjd dƒ}|j| j|d ƒƒS )NrO   T)ÚtokenizerA   ÚBytesIOÚreadlineÚdetect_encodingÚIncrementalNewlineDecoderÚdecode)Úsource_bytesr»   Úsource_bytes_readlineÚencodingÚnewline_decoderr   r   r	   Údecode_sourceû  s
    
rÅ   )r›   Úsubmodule_search_locationsc      	      C   s  |d kr<d}t |dƒrFy|j| ƒ}W qF tk
r8   Y qFX n
tj|ƒ}tj| ||d�}d|_|d krœx6tƒ D ](\}}|j	t
|ƒƒrl|| |ƒ}||_P qlW d S |tkrÞt |dƒräy|j| ƒ}W n tk
rÐ   Y qäX |räg |_n||_|jg k�r|�rt|ƒd }|jj|ƒ |S )Nz	<unknown>Úget_filename)ÚoriginTÚ
is_packagerO   )r�   rÇ   rƒ   r   rT   r•   Ú
ModuleSpecÚ_set_fileattrÚ_get_supported_file_loadersr|   r}   r›   Ú	_POPULATErÉ   rÆ   r.   Úappend)	r‚   Úlocationr›   rÆ   ÚspecÚloader_classÚsuffixesrÉ   Údirnamer   r   r	   Úspec_from_file_location  s>    



rÔ   c               @   sL   e Zd ZdZdZdZedd„ ƒZedd„ ƒZedd	d
„ƒZ	eddd„ƒZ
dS )ÚWindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc             C   s2   yt jt j|ƒS  tk
r,   t jt j|ƒS X d S )N)Ú_winregÚOpenKeyÚHKEY_CURRENT_USERr1   ÚHKEY_LOCAL_MACHINE)Úclsr   r   r   r	   Ú_open_registry\  s    z$WindowsRegistryFinder._open_registryc             C   sp   | j r| j}n| j}|j|dtjd d…  d�}y&| j|ƒ�}tj|dƒ}W d Q R X W n t	k
rj   d S X |S )Nz%d.%drK   )rš   Úsys_versionr%   )
ÚDEBUG_BUILDÚREGISTRY_KEY_DEBUGÚREGISTRY_KEYr;   r   Úversion_inforÛ   rÖ   Ú
QueryValuer1   )rÚ   rš   Úregistry_keyr   ÚhkeyÚfilepathr   r   r	   Ú_search_registryc  s    z&WindowsRegistryFinder._search_registryNc             C   sx   | j |ƒ}|d krd S yt|ƒ W n tk
r6   d S X x:tƒ D ]0\}}|jt|ƒƒr@tj||||ƒ|d�}|S q@W d S )N)rÈ   )rå   r0   r1   rÌ   r|   r}   r•   Úspec_from_loader)rÚ   rš   r*   Útargeträ   r›   rÒ   rÐ   r   r   r	   Ú	find_specr  s    
zWindowsRegistryFinder.find_specc             C   s"   | j ||ƒ}|d k	r|jS d S d S )N)rè   r›   )rÚ   rš   r*   rÐ   r   r   r	   Úfind_module‚  s    z!WindowsRegistryFinder.find_module)NN)N)rŠ   r‰   r‹   rß   rÞ   rÝ   ÚclassmethodrÛ   rå   rè   ré   r   r   r   r	   rÕ   P  s   rÕ   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_LoaderBasicsc             C   s@   t | j|ƒƒd }|jddƒd }|jdƒd }|dko>|dkS )Nr#   rN   rO   rK   Ú__init__)r.   rÇ   r)   r'   )r„   rš   r~   Úfilename_baseÚ	tail_namer   r   r	   rÉ   •  s    z_LoaderBasics.is_packagec             C   s   d S )Nr   )r„   rÐ   r   r   r	   Úcreate_module�  s    z_LoaderBasics.create_modulec             C   s8   | j |jƒ}|d kr$tdj|jƒƒ‚tjt||jƒ d S )Nz4cannot load module {!r} when get_code() returns None)Úget_coderŠ   rƒ   r;   r•   Ú_call_with_frames_removedÚexecr�   )r„   Úmodulerµ   r   r   r	   Úexec_module   s
    
z_LoaderBasics.exec_modulec             C   s   t j| |ƒS )N)r•   Ú_load_module_shim)r„   rš   r   r   r	   Úload_module¨  s    z_LoaderBasics.load_moduleN)rŠ   r‰   r‹   rÉ   rï   rô   rö   r   r   r   r	   rë   �  s   rë   c               @   sJ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zddœdd„Zdd„ Z	dS )ÚSourceLoaderc             C   s   t ‚d S )N)ÚIOError)r„   r*   r   r   r	   Ú
path_mtime¯  s    zSourceLoader.path_mtimec             C   s   d| j |ƒiS )Nr¡   )rù   )r„   r*   r   r   r	   Ú
path_stats·  s    zSourceLoader.path_statsc             C   s   | j ||ƒS )N)Úset_data)r„   rz   Ú
cache_pathrF   r   r   r	   Ú_cache_bytecodeÄ  s    zSourceLoader._cache_bytecodec             C   s   d S )Nr   )r„   r*   rF   r   r   r	   rû   Î  s    zSourceLoader.set_datac             C   sR   | j |ƒ}y| j|ƒ}W n0 tk
rH } ztd|d�|‚W Y d d }~X nX t|ƒS )Nz'source not available through get_data())r‚   )rÇ   Úget_datar1   rƒ   rÅ   )r„   rš   r*   rÁ   Úexcr   r   r	   Ú
get_sourceÕ  s    
zSourceLoader.get_sourcer#   )Ú	_optimizec            C   s   t jt||dd|d�S )Nrò   T)Údont_inheritrY   )r•   rñ   Úcompile)r„   rF   r*   r  r   r   r	   Úsource_to_codeß  s    zSourceLoader.source_to_codec       
   +   C   s^  | j |ƒ}d }yt|ƒ}W n tk
r2   d }Y n¢X y| j|ƒ}W n tk
rV   Y n~X t|d ƒ}y| j|ƒ}W n tk
r†   Y nNX yt||||d�}W n t	t
fk
r´   Y n X tjd||ƒ t||||d�S | j|ƒ}| j||ƒ}	tjd|ƒ tj �rZ|d k	�rZ|d k	�rZt|	|t|ƒƒ}y| j|||ƒ tjd|ƒ W n tk
�rX   Y nX |	S )Nr¡   )r§   r‚   r*   z{} matches {})r‚   rx   rz   zcode object from {}z
wrote {!r})rÇ   rh   rW   rú   rø   r   rþ   r1   r®   rƒ   r¥   r•   r¤   r¶   r  r   Údont_write_bytecoderº   r&   rý   )
r„   rš   rz   r¬   rx   ÚstrF   Ú
bytes_datarÁ   Úcode_objectr   r   r	   rð   ç  sN    




zSourceLoader.get_codeNrv   )
rŠ   r‰   r‹   rù   rú   rý   rû   r   r  rð   r   r   r   r	   r÷   ­  s   

r÷   c                   sL   e Zd Zdd„ Zdd„ Zdd„ Ze‡ fdd„ƒZed	d
„ ƒZdd„ Z	‡  Z
S )Ú
FileLoaderc             C   s   || _ || _d S )N)r‚   r*   )r„   rš   r*   r   r   r	   rì      s    zFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)Ú	__class__r�   )r„   Úotherr   r   r	   Ú__eq__&  s    zFileLoader.__eq__c             C   s   t | jƒt | jƒA S )N)Úhashr‚   r*   )r„   r   r   r	   Ú__hash__*  s    zFileLoader.__hash__c                s   t t| ƒj|ƒS )N)Úsuperr	  rö   )r„   rš   )r
  r   r	   rö   -  s    
zFileLoader.load_modulec             C   s   | j S )N)r*   )r„   rš   r   r   r	   rÇ   9  s    zFileLoader.get_filenamec          	   C   s    t j|dƒ�
}|jƒ S Q R X d S )NÚr)rA   rB   Úread)r„   r*   rI   r   r   r	   rþ   >  s    zFileLoader.get_data)rŠ   r‰   r‹   rì   r  r  r—   rö   rÇ   rþ   Ú__classcell__r   r   )r
  r	   r	    s   r	  c               @   s*   e Zd Zdd„ Zdd„ Zddœdd„Zd	S )
ÚSourceFileLoaderc             C   s   t |ƒ}|j|jdœS )N)r¡   r¢   )r0   Úst_mtimeÚst_size)r„   r*   r  r   r   r	   rú   H  s    zSourceFileLoader.path_statsc             C   s   t |ƒ}| j|||d�S )N)Ú_mode)r�   rû   )r„   rz   rx   rF   r3   r   r   r	   rý   M  s    z SourceFileLoader._cache_bytecodei¶  )r  c      	      C   sú   t |ƒ\}}g }x(|r8t|ƒ r8t |ƒ\}}|j|ƒ qW xlt|ƒD ]`}t||ƒ}ytj|ƒ W qD tk
rv   wDY qD tk
r¢ } zt	j
d||ƒ d S d }~X qDX qDW yt|||ƒ t	j
d|ƒ W n0 tk
rô } zt	j
d||ƒ W Y d d }~X nX d S )Nzcould not create {!r}: {!r}zcreated {!r})r.   r8   rÎ   r(   r"   r   ÚmkdirÚFileExistsErrorr1   r•   r¤   rJ   )	r„   r*   rF   r  Úparentr~   r!   r   rÿ   r   r   r	   rû   R  s*    
zSourceFileLoader.set_dataN)rŠ   r‰   r‹   rú   rý   rû   r   r   r   r	   r  D  s   r  c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚSourcelessFileLoaderc             C   s0   | j |ƒ}| j|ƒ}t|||d�}t|||d�S )N)r‚   r*   )r‚   rx   )rÇ   rþ   r®   r¶   )r„   rš   r*   rF   r  r   r   r	   rð   u  s    

zSourcelessFileLoader.get_codec             C   s   d S )Nr   )r„   rš   r   r   r	   r   {  s    zSourcelessFileLoader.get_sourceN)rŠ   r‰   r‹   rð   r   r   r   r   r	   r  q  s   r  c               @   sX   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
edd„ ƒZdS )ÚExtensionFileLoaderc             C   s   || _ || _d S )N)r‚   r*   )r„   r‚   r*   r   r   r	   rì   Œ  s    zExtensionFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)r
  r�   )r„   r  r   r   r	   r  �  s    zExtensionFileLoader.__eq__c             C   s   t | jƒt | jƒA S )N)r  r‚   r*   )r„   r   r   r	   r  ”  s    zExtensionFileLoader.__hash__c             C   s$   t jtj|ƒ}t jd|j| jƒ |S )Nz&extension module {!r} loaded from {!r})r•   rñ   r³   Úcreate_dynamicr¤   r‚   r*   )r„   rÐ   ró   r   r   r	   rï   —  s
    
z!ExtensionFileLoader.create_modulec             C   s$   t jtj|ƒ t jd| j| jƒ d S )Nz(extension module {!r} executed from {!r})r•   rñ   r³   Úexec_dynamicr¤   r‚   r*   )r„   ró   r   r   r	   rô   Ÿ  s    zExtensionFileLoader.exec_modulec                s$   t | jƒd ‰ t‡ fdd„tD ƒƒS )Nr#   c             3   s   | ]}ˆ d | kV  qdS )rì   Nr   )r   Úsuffix)Ú	file_namer   r	   ú	<genexpr>¨  s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)r.   r*   ÚanyÚEXTENSION_SUFFIXES)r„   rš   r   )r  r	   rÉ   ¥  s    zExtensionFileLoader.is_packagec             C   s   d S )Nr   )r„   rš   r   r   r	   rð   «  s    zExtensionFileLoader.get_codec             C   s   d S )Nr   )r„   rš   r   r   r	   r   ¯  s    zExtensionFileLoader.get_sourcec             C   s   | j S )N)r*   )r„   rš   r   r   r	   rÇ   ³  s    z ExtensionFileLoader.get_filenameN)rŠ   r‰   r‹   rì   r  r  rï   rô   rÉ   rð   r   r—   rÇ   r   r   r   r	   r  „  s   r  c               @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú_NamespacePathc             C   s$   || _ || _t| jƒ ƒ| _|| _d S )N)Ú_nameÚ_pathr}   Ú_get_parent_pathÚ_last_parent_pathÚ_path_finder)r„   r‚   r*   Úpath_finderr   r   r	   rì   À  s    z_NamespacePath.__init__c             C   s&   | j jdƒ\}}}|dkrdS |dfS )NrN   r%   r   r*   Ú__path__)r   r*   )r$  r'   )r„   r  ÚdotÚmer   r   r	   Ú_find_parent_path_namesÆ  s    z&_NamespacePath._find_parent_path_namesc             C   s   | j ƒ \}}ttj| |ƒS )N)r-  r�   r   Úmodules)r„   Úparent_module_nameÚpath_attr_namer   r   r	   r&  Ð  s    z_NamespacePath._get_parent_pathc             C   sP   t | jƒ ƒ}|| jkrJ| j| j|ƒ}|d k	rD|jd krD|jrD|j| _|| _| jS )N)r}   r&  r'  r(  r$  r›   rÆ   r%  )r„   Úparent_pathrÐ   r   r   r	   Ú_recalculateÔ  s    
z_NamespacePath._recalculatec             C   s   t | jƒ ƒS )N)Úiterr2  )r„   r   r   r	   Ú__iter__á  s    z_NamespacePath.__iter__c             C   s   || j |< d S )N)r%  )r„   Úindexr*   r   r   r	   Ú__setitem__ä  s    z_NamespacePath.__setitem__c             C   s   t | jƒ ƒS )N)r&   r2  )r„   r   r   r	   Ú__len__ç  s    z_NamespacePath.__len__c             C   s   dj | jƒS )Nz_NamespacePath({!r}))r;   r%  )r„   r   r   r	   Ú__repr__ê  s    z_NamespacePath.__repr__c             C   s   || j ƒ kS )N)r2  )r„   Úitemr   r   r	   Ú__contains__í  s    z_NamespacePath.__contains__c             C   s   | j j|ƒ d S )N)r%  rÎ   )r„   r9  r   r   r	   rÎ   ð  s    z_NamespacePath.appendN)rŠ   r‰   r‹   rì   r-  r&  r2  r4  r6  r7  r8  r:  rÎ   r   r   r   r	   r#  ¹  s   
r#  c               @   sP   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ ZdS )Ú_NamespaceLoaderc             C   s   t |||ƒ| _d S )N)r#  r%  )r„   r‚   r*   r)  r   r   r	   rì   ö  s    z_NamespaceLoader.__init__c             C   s   dj |jƒS )Nz<module {!r} (namespace)>)r;   rŠ   )rÚ   ró   r   r   r	   Úmodule_reprù  s    z_NamespaceLoader.module_reprc             C   s   dS )NTr   )r„   rš   r   r   r	   rÉ     s    z_NamespaceLoader.is_packagec             C   s   dS )Nr%   r   )r„   rš   r   r   r	   r     s    z_NamespaceLoader.get_sourcec             C   s   t ddddd�S )Nr%   z<string>rò   T)r  )r  )r„   rš   r   r   r	   rð     s    z_NamespaceLoader.get_codec             C   s   d S )Nr   )r„   rÐ   r   r   r	   rï     s    z_NamespaceLoader.create_modulec             C   s   d S )Nr   )r„   ró   r   r   r	   rô     s    z_NamespaceLoader.exec_modulec             C   s   t jd| jƒ t j| |ƒS )Nz&namespace module loaded with path {!r})r•   r¤   r%  rõ   )r„   rš   r   r   r	   rö     s    z_NamespaceLoader.load_moduleN)rŠ   r‰   r‹   rì   rê   r<  rÉ   r   rð   rï   rô   rö   r   r   r   r	   r;  õ  s   	r;  c               @   sf   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd
d„ƒZeddd„ƒZ	eddd„ƒZ
d	S )Ú
PathFinderc             C   s*   x$t jjƒ D ]}t|dƒr|jƒ  qW d S )NÚinvalidate_caches)r   Úpath_importer_cacheÚvaluesr�   r>  )rÚ   Úfinderr   r   r	   r>  #  s    
zPathFinder.invalidate_cachesc             C   sV   t jd k	rt j rtjdtƒ x2t jD ]$}y||ƒS  tk
rH   w&Y q&X q&W d S d S )Nzsys.path_hooks is empty)r   Ú
path_hooksrP   rQ   r™   rƒ   )rÚ   r*   Úhookr   r   r	   Ú_path_hooks+  s    zPathFinder._path_hooksc             C   sf   |dkr*yt jƒ }W n tk
r(   d S X ytj| }W n( tk
r`   | j|ƒ}|tj|< Y nX |S )Nr%   )r   r7   ÚFileNotFoundErrorr   r?  r¦   rD  )rÚ   r*   rA  r   r   r	   Ú_path_importer_cache8  s    
zPathFinder._path_importer_cachec             C   sR   t |dƒr|j|ƒ\}}n|j|ƒ}g }|d k	r<tj||ƒS tj|d ƒ}||_|S )Nr˜   )r�   r˜   ré   r•   ræ   rÊ   rÆ   )rÚ   rš   rA  r›   rœ   rÐ   r   r   r	   Ú_legacy_get_specN  s    

zPathFinder._legacy_get_specNc       	      C   sª   g }x |D ]‚}t |ttfƒsq
| j|ƒ}|d k	r
t|dƒrH|j||ƒ}n| j||ƒ}|d kr^q
|jd k	rl|S |j}|d kr‚t	dƒ‚|j
|ƒ q
W tj|d ƒ}||_|S d S )Nrè   zspec missing loader)r±   rZ   ÚbytesrF  r�   rè   rG  r›   rÆ   rƒ   r¸   r•   rÊ   )	rÚ   rš   r*   rç   Únamespace_pathÚentryrA  rÐ   rœ   r   r   r	   Ú	_get_spec]  s(    



zPathFinder._get_specc             C   sd   |d krt j}| j|||ƒ}|d kr(d S |jd kr\|j}|rVd|_t||| jƒ|_|S d S n|S d S )NÚ	namespace)r   r*   rK  r›   rÆ   rÈ   r#  )rÚ   rš   r*   rç   rÐ   rI  r   r   r	   rè   }  s    
zPathFinder.find_specc             C   s   | j ||ƒ}|d krd S |jS )N)rè   r›   )rÚ   rš   r*   rÐ   r   r   r	   ré   •  s    zPathFinder.find_module)N)NN)N)rŠ   r‰   r‹   rê   r>  rD  rF  rG  rK  rè   ré   r   r   r   r	   r=    s   r=  c               @   sV   e Zd Zdd„ Zdd„ ZeZdd„ Zdd„ Zdd
d„Z	dd„ Z
edd„ ƒZdd„ Zd	S )Ú
FileFinderc                sX   g }x(|D ] \‰ }|j ‡ fdd„|D ƒƒ q
W || _|p:d| _d| _tƒ | _tƒ | _d S )Nc             3   s   | ]}|ˆ fV  qd S )Nr   )r   r  )r›   r   r	   r   ²  s    z&FileFinder.__init__.<locals>.<genexpr>rN   r#   rv   )r¸   Ú_loadersr*   Ú_path_mtimeÚsetÚ_path_cacheÚ_relaxed_path_cache)r„   r*   Úloader_detailsÚloadersrÒ   r   )r›   r	   rì   ¬  s    
zFileFinder.__init__c             C   s
   d| _ d S )Nr#   rv   )rO  )r„   r   r   r	   r>  º  s    zFileFinder.invalidate_cachesc             C   s*   | j |ƒ}|d krd g fS |j|jp&g fS )N)rè   r›   rÆ   )r„   rš   rÐ   r   r   r	   r˜   À  s    
zFileFinder.find_loaderc             C   s   |||ƒ}t ||||d�S )N)r›   rÆ   )rÔ   )r„   rÑ   rš   r*   Úsmslrç   r›   r   r   r	   rK  Ì  s    
zFileFinder._get_specNc             C   sb  d}|j dƒd }yt| jp"tjƒ ƒj}W n tk
rB   d	}Y nX || jkr\| jƒ  || _t	ƒ rr| j
}|jƒ }n
| j}|}||krÚt| j|ƒ}xH| jD ]6\}	}
d|	 }t||ƒ}t|ƒr˜| j|
|||g|ƒS q˜W t|ƒ}xX| jD ]N\}	}
t| j||	 ƒ}tjd|dd� ||	 |krât|ƒrâ| j|
||d |ƒS qâW |�r^tjd|ƒ tj|d ƒ}|g|_|S d S )
NFrN   rK   r#   rì   z	trying {})Ú	verbosityzpossible namespace for {}rv   )r'   r0   r*   r   r7   r  r1   rO  Ú_fill_cacher
   rR  rw   rQ  r"   rN  r6   rK  r8   r•   r¤   rÊ   rÆ   )r„   rš   rç   Úis_namespaceÚtail_moduler¡   ÚcacheÚcache_moduleÚ	base_pathr  rÑ   Úinit_filenameÚ	full_pathrÐ   r   r   r	   rè   Ñ  sF    




zFileFinder.find_specc       	      C   sÂ   | j }ytj|ptjƒ ƒ}W n tttfk
r:   g }Y nX tjj	dƒsTt
|ƒ| _nNt
ƒ }x@|D ]8}|jdƒ\}}}|rŠdj||jƒ ƒ}n|}|j|ƒ q`W || _tjj	tƒr¾dd„ |D ƒ| _d S )Nr   rN   z{}.{}c             S   s   h | ]}|j ƒ ’qS r   )rw   )r   Úfnr   r   r	   ú	<setcomp>  s    z)FileFinder._fill_cache.<locals>.<setcomp>)r*   r   Úlistdirr7   rE  ÚPermissionErrorÚNotADirectoryErrorr   r   r   rP  rQ  rl   r;   rw   Úaddr   rR  )	r„   r*   ÚcontentsÚlower_suffix_contentsr9  r‚   r+  r  Únew_namer   r   r	   rW    s"    

zFileFinder._fill_cachec                s   ‡ ‡fdd„}|S )Nc                s"   t | ƒstd| d�‚ˆ | fˆžŽ S )Nzonly directories are supported)r*   )r8   rƒ   )r*   )rÚ   rS  r   r	   Úpath_hook_for_FileFinder*  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )rÚ   rS  rh  r   )rÚ   rS  r	   Ú	path_hook   s    
zFileFinder.path_hookc             C   s   dj | jƒS )NzFileFinder({!r}))r;   r*   )r„   r   r   r	   r8  2  s    zFileFinder.__repr__)N)rŠ   r‰   r‹   rì   r>  rž   ré   r˜   rK  rè   rW  rê   ri  r8  r   r   r   r	   rM  £  s   	
0rM  c             C   s’   | j dƒ}| j dƒ}|sB|r$|j}n||kr8t||ƒ}n
t||ƒ}|sTt|||d�}y$|| d< || d< || d< || d< W n tk
rŒ   Y nX d S )NÚ
__loader__Ú__spec__)r›   Ú__file__Ú
__cached__)Úgetr›   r  r  rÔ   Ú	Exception)Únsr‚   ÚpathnameÚ	cpathnamer›   rÐ   r   r   r	   Ú_fix_up_module8  s"    


rs  c              C   s*   t ttjƒ ƒf} ttf}ttf}| ||gS )N)r  Ú_alternative_architecturesr³   Úextension_suffixesr  rm   r  r_   )Ú
extensionsÚsourceÚbytecoder   r   r	   rÌ   O  s    rÌ   c             C   sª  | a t jat jatjt }x8dD ]0}|tjkr:t j|ƒ}n
tj| }t|||ƒ q W ddgfdddgff}x`|D ]P\}}|d	 }|tjkr˜tj| }P qpyt j|ƒ}P W qp tk
r¾   wpY qpX qpW td
ƒ‚t|d|ƒ t|d|ƒ t|ddj|ƒƒ yt jdƒ}	W n tk
�r   d }	Y nX t|d|	ƒ t jdƒ}
t|d|
ƒ |dk�rbt jdƒ}t|d|ƒ t|dt	ƒ ƒ t
jttjƒ ƒƒ |dk�r¦tjdƒ dt
k�r¦dt_d S )NrA   rP   Úbuiltinsr¯   Úposixú/Úntú\rO   zimportlib requires posix or ntr   r   r   r%   Ú_threadÚ_weakrefÚwinregrÖ   r
   z.pywz_d.pydT)rA   rP   ry  r¯   )r•   r   r³   r.  rŠ   Ú_builtin_from_namerŽ   rƒ   r    r   r"  r¸   rt  ru  rm   rÎ   rÕ   rÝ   )Ú_bootstrap_moduleÚself_moduleÚbuiltin_nameÚbuiltin_moduleÚ
os_detailsÚ
builtin_osr   r   Ú	os_moduleÚthread_moduleÚweakref_moduleÚwinreg_moduler   r   r	   Ú_setupZ  sP    













rŒ  c             C   s2   t | ƒ tƒ }tjjtj|Ž gƒ tjjt	ƒ d S )N)
rŒ  rÌ   r   rB  r¸   rM  ri  Ú	meta_pathrÎ   r=  )r‚  Úsupported_loadersr   r   r	   Ú_installž  s    r�  z-arm-linux-gnueabihf.z-armeb-linux-gnueabihf.z-mips64-linux-gnuabi64.z-mips64el-linux-gnuabi64.z-powerpc-linux-gnu.z-powerpc-linux-gnuspe.z-powerpc64-linux-gnu.z-powerpc64le-linux-gnu.z-arm-linux-gnueabi.z-armeb-linux-gnueabi.z-mips64-linux-gnu.z-mips64el-linux-gnu.z-ppc-linux-gnu.z-ppc-linux-gnuspe.z-ppc64-linux-gnu.z-ppc64le-linux-gnu.)z-arm-linux-gnueabi.z-armeb-linux-gnueabi.z-mips64-linux-gnu.z-mips64el-linux-gnu.z-ppc-linux-gnu.z-ppc-linux-gnuspe.z-ppc64-linux-gnu.z-ppc64le-linux-gnu.z-arm-linux-gnueabihf.z-armeb-linux-gnueabihf.z-mips64-linux-gnuabi64.z-mips64el-linux-gnuabi64.z-powerpc-linux-gnu.z-powerpc-linux-gnuspe.z-powerpc64-linux-gnu.z-powerpc64le-linux-gnu.c             C   sF   x@| D ]8}x2t jƒ D ]&\}}||kr| j|j||ƒƒ | S qW qW | S )N)Ú	_ARCH_MAPÚitemsrÎ   rD   )rÒ   r  ÚoriginalÚalternativer   r   r	   rt  »  s    
rt  )r   )r   r   )r9   )N)NNN)NNN)rO   rO   )N)N);r   Ú%_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r   r   r"   r.   r0   r5   r6   r8   rJ   ÚtypeÚ__code__r²   r   r£   r   r   Ú_RAW_MAGIC_NUMBERr^   r]   rm   r_   ÚDEBUG_BYTECODE_SUFFIXESÚOPTIMIZED_BYTECODE_SUFFIXESrh   rs   r{   r   r�   r—   rž   r®   r¶   rº   rÅ   ÚobjectrÍ   rÔ   rÕ   rë   r÷   r	  r  r  r"  r  r#  r;  r=  rM  rs  rÌ   rŒ  r�  r�  rt  r   r   r   r	   Ú<module>   sŒ   
	

{-"
7


C@n)-5<*  
D	