B
    18™\‘T  ã               @   s  d dl Z d dlZd dlZd dlZe je jgadadada	dd„ Z
dd„ Zdd„ Zdd	„ Zd
d„ Zd1dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd2dd„Zd3d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 j j! sþeƒ  d.d/„ Z"e#d0kre"ƒ  dS )4é    Nc              G   sB   t jj| Ž }yt j |¡}W n tk
r0   Y nX |t j |¡fS )N)ÚosÚpathÚjoinÚabspathÚOSErrorZnormcase)ZpathsÚdir© r   úH/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/site.pyÚmakepathZ   s    r
   c              C   s–   xt tj ¡ ƒD ]~} tt| dd ƒdd ƒdkr.qytj | j¡| _W n t	t
tfk
r\   Y nX ytj | j¡| _W q t	t
tfk
rŒ   Y qX qW d S )NÚ
__loader__Ú
__module__)Ú_frozen_importlibÚ_frozen_importlib_external)ÚsetÚsysÚmodulesÚvaluesÚgetattrr   r   r   Ú__file__ÚAttributeErrorr   Ú	TypeErrorÚ
__cached__)Úmr   r   r	   Ú	abs_pathsc   s    r   c              C   sT   g } t ƒ }x6tjD ],}t|ƒ\}}||kr|  |¡ | |¡ qW | tjd d …< |S )N)r   r   r   r
   ÚappendÚadd)ÚLÚknown_pathsr   Údircaser   r   r	   Úremoveduppathss   s    
r   c           	   C   sX   t ƒ } xLtjD ]B}y&tj |¡r6t|ƒ\}}|  |¡ W q tk
rN   wY qX qW | S )N)r   r   r   r   Úexistsr
   r   r   )ÚdÚitemÚ_Zitemcaser   r   r	   Ú_init_pathinfo†   s    r$   c             C   sp  |d krt ƒ }d}nd}tj | |¡}yt|dƒ}W n tk
rH   d S X | xt|ƒD ]ö\}}| d¡rrq^yX| d¡rˆt|ƒ w^| 	¡ }t
| |ƒ\}}	|	|krÈtj |¡rÈtj |¡ | |	¡ W q^ tk
rR   td |d |¡tjd d	d l}
x>|
jt ¡ Ž D ],}x$| ¡ D ]}td
| tjd qW qW tdtjd P Y q^X q^W W d Q R X |rld }|S )NTFÚrú#)zimport zimport	z"Error processing line {:d} of {}:
é   )Úfiler   z  z
Remainder of file ignored)r$   r   r   r   Úopenr   Ú	enumerateÚ
startswithÚexecÚrstripr
   r    r   r   r   Ú	ExceptionÚprintÚformatÚstderrÚ	tracebackZformat_exceptionÚexc_infoÚ
splitlines)ÚsitedirÚnamer   ÚresetÚfullnameÚfÚnÚliner   r   r2   Zrecordr   r   r	   Ú
addpackage“   sD    


r<   c             C   sž   |d krt ƒ }d}nd}t| ƒ\} }||krBtj | ¡ | |¡ yt | ¡}W n tk
rd   d S X dd„ |D ƒ}xt	|ƒD ]}t
| ||ƒ q~W |ršd }|S )NTFc             S   s   g | ]}|  d ¡r|‘qS )z.pth)Úendswith)Ú.0r6   r   r   r	   ú
<listcomp>Í   s    zaddsitedir.<locals>.<listcomp>)r$   r
   r   r   r   r   r   Úlistdirr   Úsortedr<   )r5   r   r7   ZsitedircaseZnamesr6   r   r   r	   Ú
addsitedir½   s$    
rB   c               C   s`   t jjrdS ttdƒr4ttdƒr4t ¡ t ¡ kr4d S ttdƒr\ttdƒr\t ¡ t ¡ kr\d S dS )NFÚgetuidÚgeteuidÚgetgidÚgetegidT)	r   ÚflagsÚno_user_siteÚhasattrr   rD   rC   rF   rE   r   r   r   r	   Úcheck_enableusersiteÕ   s    
rJ   c              C   sz   t j dd ¡} | r| S dd„ }t jdkrBt j d¡p6d}||dƒS tjdkrptjrp|dd	tjd
tjd d…  ƒS |ddƒS )NZPYTHONUSERBASEc              W   s   t j t jj| Ž ¡S )N)r   r   Ú
expanduserr   )Úargsr   r   r	   Újoinuserú   s    z_getuserbase.<locals>.joinuserÚntZAPPDATAú~ZPythonÚdarwinZLibraryz%d.%dé   z.local)r   ÚenvironÚgetr6   r   ÚplatformÚ
_frameworkÚversion_info)Zenv_baserM   Úbaser   r   r	   Ú_getuserbaseõ   s    


rX   c             C   sd   t j}tjdkr,| › d|d › |d › dS t jdkrFt jrF| › dS | › d|d › d	|d › d
S )NrN   z\Pythonr   r'   z\site-packagesrP   z/lib/python/site-packagesz/lib/pythonÚ.z/site-packages)r   rV   r   r6   rT   rU   )ÚuserbaseÚversionr   r   r	   Ú	_get_path	  s    

r\   c               C   s   t d krtƒ a t S )N)Ú	USER_BASErX   r   r   r   r	   Úgetuserbase  s    r^   c              C   s   t ƒ } td krt| ƒatS )N)r^   Ú	USER_SITEr\   )rZ   r   r   r	   Úgetusersitepackages"  s    r`   c             C   s$   t ƒ }tr tj |¡r t|| ƒ | S )N)r`   ÚENABLE_USER_SITEr   r   ÚisdirrB   )r   Ú	user_siter   r   r	   Úaddusersitepackages0  s    
rd   c             C   s’   g }t ƒ }| d krt} xv| D ]n}|r||kr.q| |¡ tjdkrj| tj |ddtj	d d…  d¡¡ q| |¡ | tj |dd¡¡ qW |S )Nú/Zlibzpython%d.%drQ   zsite-packages)
r   ÚPREFIXESr   r   Úsepr   r   r   r   rV   )ÚprefixesZsitepackagesZseenÚprefixr   r   r	   Úgetsitepackages>  s    




rj   c             C   s,   x&t |ƒD ]}tj |¡r
t|| ƒ q
W | S )N)rj   r   r   rb   rB   )r   rh   r5   r   r   r	   ÚaddsitepackagesY  s    rk   c              C   s4   t jdkrd} nd} t d| ¡t_t d| ¡t_d S )Nú\zCtrl-Z plus ReturnzCtrl-D (i.e. EOF)ÚquitÚexit)r   rg   Ú_sitebuiltinsZQuitterÚbuiltinsrm   rn   )Zeofr   r   r	   Úsetquita  s
    
rq   c              C   s¤   t  dtj¡t_tjd d… dkr2t  dd¡t_nt  dd¡t_g g  } }ttdƒrŽtj	 
tj¡}|  dd	g¡ | tj	 |tj¡|tjg¡ t  d
d| |¡t_d S )NÚ	copyrighté   ZjavaÚcreditsz?Jython is maintained by the Jython developers (www.jython.org).zž    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
    for supporting Python development.  See www.python.org for more information.r   zLICENSE.txtZLICENSEÚlicensez'See https://www.python.org/psf/license/)ro   Z_Printerr   rr   rp   rT   rt   rI   r   r   Údirnamer   Úextendr   ZpardirZcurdirru   )ZfilesZdirsZherer   r   r	   Úsetcopyrightq  s     


rx   c               C   s   t  ¡ t_d S )N)ro   Z_Helperrp   Úhelpr   r   r   r	   Ú	sethelper‰  s    rz   c              C   s   dd„ } | t _d S )Nc                 sè   dd l } ydd l‰dd l}W n tk
r0   d S X tˆddƒ}|d k	rZd|krZˆ d¡ n
ˆ d¡ yˆ ¡  W n tk
r„   Y nX ˆ ¡ dkrät	j
 t	j
 d¡d¡‰ yˆ ˆ ¡ W n tk
rÊ   Y nX ‡ ‡fd	d
„}|  |¡ d S )Nr   Ú__doc__Ú Zlibeditzbind ^I rl_completeztab: completerO   z.python_historyc            	      s,   yˆ  ˆ ¡ W n ttfk
r&   Y nX d S )N)Zwrite_history_fileÚFileNotFoundErrorÚPermissionErrorr   )ÚhistoryÚreadliner   r	   Úwrite_history»  s    zCenablerlcompleter.<locals>.register_readline.<locals>.write_history)Úatexitr€   ÚrlcompleterÚImportErrorr   Zparse_and_bindZread_init_filer   Zget_current_history_lengthr   r   r   rK   Zread_history_fileÚregister)r‚   rƒ   Zreadline_docr   r   )r   r€   r	   Úregister_readline•  s.    
z,enablerlcompleter.<locals>.register_readline)r   Z__interactivehook__)r†   r   r   r	   ÚenablerlcompleterŒ  s    	0r‡   c          	   C   s„  t j}tjdkr*d|kr*t jd  }t_n<tjdkr`d|kr`tj}dd l}| d¡t_t jd= ntj}t j 	t j 
|¡¡\}}t j |¡}d t_d}dd„ t j ||¡t j ||¡fD ƒ}|r€|d }	d}
t|	d	d
b}xZ|D ]R}d|krà| d¡\}}}| ¡  ¡ }| ¡ }|dkr$| ¡ }
qà|dkrà|t_qàW W d Q R X | t_t_t| tjgƒ |
dkrtt dtj¡ ntjgada| S )NrP   Z__PYVENV_LAUNCHER__Zwin32r   z
pyvenv.cfgc             S   s   g | ]}t j |¡r|‘qS r   )r   r   Zisfile)r>   Zconffiler   r   r	   r?   Û  s    zvenv.<locals>.<listcomp>Ztruezutf-8)Úencodingú=zinclude-system-site-packagesZhomeF)r   rR   r   rT   Z_base_executableÚ
executableÚ_winapiZGetModuleFileNamer   Úsplitr   rv   Z_homer   r)   Ú	partitionÚstripÚlowerri   Úexec_prefixrk   rf   Úinsertra   )r   ZenvrŠ   r‹   Zexe_dirr#   Zsite_prefixZconf_basenameZcandidate_confsZvirtual_confZsystem_siter9   r;   ÚkeyÚvaluer   r   r	   ÚvenvÇ  sH    




r”   c           
   C   sš   yBydd l } W n0 tk
r> } z|jdkr,n‚ W d d }~X Y nX W nR tk
r” } z4tjjrltjt ¡ Ž  ntj	 
d|jj|f ¡ W d d }~X Y nX d S )Nr   Úsitecustomizez@Error in sitecustomize; set PYTHONVERBOSE for traceback:
%s: %s
)r•   r„   r6   r.   r   rG   ÚverboseÚ
excepthookr3   r1   ÚwriteÚ	__class__Ú__name__)r•   ÚexcÚerrr   r   r	   Úexecsitecustomize  s    
r   c           
   C   sš   yBydd l } W n0 tk
r> } z|jdkr,n‚ W d d }~X Y nX W nR tk
r” } z4tjjrltjt ¡ Ž  ntj	 
d|jj|f ¡ W d d }~X Y nX d S )Nr   Úusercustomizez@Error in usercustomize; set PYTHONVERBOSE for traceback:
%s: %s
)rž   r„   r6   r.   r   rG   r–   r—   r3   r1   r˜   r™   rš   )rž   r›   rœ   r   r   r	   Úexecusercustomize  s    
rŸ   c              C   s~   t jd d … } tƒ }| t jkr$tƒ  t|ƒ}td kr:tƒ at|ƒ}t|ƒ}t	ƒ  t
ƒ  tƒ  t jjsjtƒ  tƒ  trztƒ  d S )N)r   r   r   r   r”   ra   rJ   rd   rk   rq   rx   rz   rG   Úisolatedr‡   r   rŸ   )Z	orig_pathr   r   r   r	   Úmain*  s"    
r¡   c              C   s`  d} t jdd … }|s¦tƒ }tƒ }tdƒ xt jD ]}td|f ƒ q2W tdƒ td|tj |¡rfdndf ƒ td	|tj |¡r†dndf ƒ td
t ƒ t  	d¡ g }d|kr¼| 
t¡ d|krÎ| 
t¡ |r,ttj |¡ƒ trôt  	d¡ n6tdkr
t  	d¡ n td kr t  	d¡ n
t  	d¡ n0dd l}t| | t jd tjf ¡ƒ t  	d¡ d S )Na²      %s [--user-base] [--user-site]

    Without arguments print some useful information
    With arguments print the value of USER_BASE and/or USER_SITE separated
    by '%s'.

    Exit codes with --user-base or --user-site:
      0 - user site directory is enabled
      1 - user site directory is disabled by user
      2 - uses site directory is disabled by super user
          or for security reasons
     >2 - unknown error
    r'   zsys.path = [z    %r,ú]zUSER_BASE: %r (%s)r    zdoesn't existzUSER_SITE: %r (%s)zENABLE_USER_SITE: %rr   z--user-basez--user-siteFrQ   é   é
   )r   Úargvr^   r`   r/   r   r   rb   ra   rn   r   r]   r_   Zpathsepr   ÚtextwrapZdedent)ry   rL   Z	user_baserc   r   Úbufferr¦   r   r   r	   Ú_scriptL  s@    




r¨   Ú__main__)N)N)N)$r   r   rp   ro   ri   r   rf   ra   r_   r]   r
   r   r   r$   r<   rB   rJ   rX   r\   r^   r`   rd   rj   rk   rq   rx   rz   r‡   r”   r   rŸ   r¡   rG   Úno_siter¨   rš   r   r   r   r	   Ú<module>H   sD   	*
 

;;
3
