o
    >c;X                     @   s,  	 d dl Z 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dd Zd3ddZdd Zdd Zdd Zdd Zdd Zdd Zd3d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#se!  d0d1 Z$e%d2kre$  dS dS )4    Nc                 C   s   t jjrt| t jd d S d S )Nfile)sysflagsverboseprintstderr)message r
   X/Volumes/Data/workspace/med-macos-weekly/build/ExtProjs/pyncpp/python/source/Lib/site.py_trace[   s   r   c                  G   s@   t jj|  }zt j|}W n	 ty   Y nw |t j|fS N)ospathjoinabspathOSErrorZnormcase)Zpathsdirr
   r
   r   makepath`   s   r   c                  C   s   	 t tj D ]W} d }z| jj}W n ty,   z| jjj}W n	 ty)   Y nw Y nw |dvr2qz
t	j
| j| _W n tttfyH   Y nw z
t	j
| j| _W q tttfy_   Y qw d S )N>   _frozen_importlib_external_frozen_importlib)setr   modulesvalues
__loader__
__module__AttributeError__spec__loaderr   r   r   __file__r   	TypeError
__cached__)mZloader_moduler
   r
   r   	abs_pathsi   s4   r#   c                  C   sR   	 g } t  }tjD ]}t|\}}||vr| | || q	| tjd d < |S r   )r   r   r   r   appendadd)Lknown_pathsr   dircaser
   r
   r   removeduppaths   s   


r)   c               	   C   sP   	 t  } tjD ]}ztj|rt|\}}| | W q ty%   Y qw | S r   )r   r   r   r   existsr   r%   r    )ditem_Zitemcaser
   r
   r   _init_pathinfo   s   

r.   c                 C   s  	 |d u rt  }d}nd}tj| |}td| ztjt|dd}W n
 ty1   Y d S w | t	|D ]z\}}|
drCq9| dkrJq9z-|
drVt| W q9| }t| |\}}	|	|vrvtj|rvtj| ||	 W q9 ty   td	|d
 |tjd dd l}
|
jt  D ]}| D ]}td| tjd qqtdtjd Y  nw W d    n1 sw   Y  |rd }|S )NTFzProcessing .pth file: localeencoding# )zimport zimport	z"Error processing line {:d} of {}:
   r   r   z  z
Remainder of file ignored)r.   r   r   r   r   ioTextIOWrapper	open_coder   	enumerate
startswithstripexecrstripr   r*   r   r$   r%   	Exceptionr   formatr   	tracebackZformat_exceptionexc_info
splitlines)sitedirnamer'   resetfullnamefnliner   r(   r?   recordr
   r
   r   
addpackage   sZ   


rJ   c                 C   s   	 t d|  |d u rt }d}nd}t| \} }||vr)tj|  || zt| }W n
 t	y:   Y d S w dd |D }t
|D ]}t| || qF|rSd }|S )NzAdding directory: TFc                 S   s   g | ]	}| d r|qS )z.pth)endswith).0rC   r
   r
   r   
<listcomp>   s    zaddsitedir.<locals>.<listcomp>)r   r.   r   r   r   r$   r%   r   listdirr   sortedrJ   )rB   r'   rD   ZsitedircasenamesrC   r
   r
   r   
addsitedir   s*   
rQ   c                   C   sb   	 t jjrdS ttdrttdrt t krd S ttdr/ttdr/t t kr/d S dS )NFgetuidgeteuidgetgidgetegidT)	r   r   no_user_sitehasattrr   rS   rR   rU   rT   r
   r
   r
   r   check_enableusersite   s   	rX   c                  C   s   t jdd } | r| S tjdkrd S dd }t jdkr(t jdp"d}||dS tjd	kr?tjr?|dd
tjdtjd d  S |ddS )NZPYTHONUSERBASEZvxworksc                  W   s   t jt jj|  S r   )r   r   
expanduserr   )argsr
   r
   r   joinuser  s   z_getuserbase.<locals>.joinuserntZAPPDATA~ZPythondarwinZLibraryz%d.%d   z.local)r   environgetr   platformrC   
_frameworkversion_info)Zenv_baser[   baser
   r
   r   _getuserbase  s   




rf   c                 C   sf   t j}tjdkrt jdd}|  d| dS t jdkr$t jr$|  dS |  d|d	  d|d
  dS )Nr\   .r3   z\Pythonz\site-packagesr^   z/lib/python/site-packagesz/lib/pythonr   r4   z/site-packages)r   rd   r   rC   Zwinverreplacerb   rc   )userbaseversionZ	ver_nodotr
   r
   r   	_get_path   s   

rk   c                   C   s   	 t d u rt a t S r   )	USER_BASErf   r
   r
   r
   r   getuserbase-  s   rm   c                  C   s,   	 t  } td u r| d u rdatS t| atS )NF)rm   	USER_SITEENABLE_USER_SITErk   )ri   r
   r
   r   getusersitepackages:  s   rp   c                 C   s.   	 t d t }trtj|rt||  | S )NzProcessing user site-packages)r   rp   ro   r   r   isdirrQ   )r'   	user_siter
   r
   r   addusersitepackagesK  s   
rs   c              
   C   s   	 g }t  }| d u rt} | D ]S}|r||v rq|| tjg}tjdkr*|d tjdkrJ|D ]}tj	||dtj
d d  d}|| q1q|| |D ]}tj	||d}|| qQq|S )NZlib/zpython%d.%dr_   zsite-packages)r   PREFIXESr%   r   
platlibdirr$   r   sepr   r   rd   )prefixesZsitepackagesseenprefixZlibdirsZlibdirr   r
   r
   r   getsitepackagesZ  s4   





r{   c                 C   s2   	 t d t|D ]}tj|rt||  q	| S )NzProcessing global site-packages)r   r{   r   r   rq   rQ   )r'   rx   rB   r
   r
   r   addsitepackages~  s   
r|   c                  C   s6   	 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   rw   _sitebuiltinsZQuitterbuiltinsr~   r   )Zeofr
   r
   r   setquit  s   
r   c                  C   s   	 t dtjt_tjd d dkrt ddt_nt ddt_g g } }ttdrHt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/)r   Z_Printerr   r   r   rb   r   rW   r   r   dirnamer   extendr   ZpardirZcurdirr   )filesZdirsZherer
   r
   r   setcopyright  s$   


r   c                   C   s   t  t_d S r   )r   Z_Helperr   helpr
   r
   r
   r   	sethelper  s   r   c                  C   s   	 dd } | t _d S )Nc                     s   dd l } z
dd ldd l}W n
 ty   Y d S w tdd}|d ur-d|v r-d nd z  W n	 tyA   Y nw  dkrrt	j
t	j
dd z  W n	 tyc   Y nw  fd	d
}| | d S d S )Nr   __doc__r3   Zlibeditzbind ^I rl_completeztab: completer]   z.python_historyc                      s&   z   W d S  ty   Y d S w r   )Zwrite_history_filer   r
   Zhistoryreadliner
   r   write_history  s
   zCenablerlcompleter.<locals>.register_readline.<locals>.write_history)atexitr   rlcompleterImportErrorgetattrZparse_and_bindZread_init_filer   Zget_current_history_lengthr   r   r   rY   Zread_history_fileregister)r   r   Zreadline_docr   r
   r   r   register_readline  s8   
z,enablerlcompleter.<locals>.register_readline)r   Z__interactivehook__)r   r
   r
   r   enablerlcompleter  s   
0r   c                 C   sZ  t j}tjdkrd|v rt jd  }t_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	3}
|
D ](}d
|v r{|d
\}}}|  }| }|dkrt| }	qS|dkr{|t_
qSW d    n1 sw   Y  | t_t_t| tjg |	dkrtdtj | S tjgada| S )Nr^   Z__PYVENV_LAUNCHER__z
pyvenv.cfgc                 S   s   g | ]
}t j|r|qS r
   )r   r   Zisfile)rL   Zconffiler
   r
   r   rM     s    
zvenv.<locals>.<listcomp>r   Ztruezutf-8r0   =zinclude-system-site-packagesZhomeF)r   r`   r   rb   _base_executable
executabler   splitr   r   Z_homer   open	partitionr:   lowerrz   exec_prefixr|   ru   insertro   )r'   Zenvr   Zexe_dirr-   Zsite_prefixZconf_basenameZcandidate_confsZvirtual_confZsystem_siterF   rH   keyvaluer
   r
   r   venv  sJ   
r   c               
   C      	 z$zdd l } W W d S  ty% } z|jdkrn W Y d }~W d S d }~ww  tyW } z&tjjr9tjt   ntj	
d|jj|f  W Y d }~d S W Y d }~d S d }~ww )Nr   sitecustomizez@Error in sitecustomize; set PYTHONVERBOSE for traceback:
%s: %s
)r   r   rC   r=   r   r   r   
excepthookr@   r   write	__class____name__)r   excerrr
   r
   r   execsitecustomize!  ,   

r   c               
   C   r   )Nr   usercustomizez@Error in usercustomize; set PYTHONVERBOSE for traceback:
%s: %s
)r   r   rC   r=   r   r   r   r   r@   r   r   r   r   )r   r   r   r
   r
   r   execusercustomize5  r   r   c                  C   s   	 t jd d  } t }| t jkrt  t|}td u rt at|}t|}t	  t
  t  t jjs6t  t  tr@t  d S d S r   )r   r   r)   r#   r   ro   rX   rs   r|   r   r   r   r   isolatedr   r   r   )Z	orig_pathr'   r
   r
   r   mainI  s&   

r   c                  C   s\  d} t jdd  }|sPt }t }td t jD ]	}td|f  qtd dd }td|d	|| d
 td|d	|| d
 tdt t d g }d|v r[|t	 d|v rd|t
 |rttj| trwt d d S tdu rt d d S td u rt d d S t d d S d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 - user site directory is disabled by super user
          or for security reasons
     >2 - unknown error
    r4   zsys.path = [z    %r,]c                 S   s   | d urt j| rdS dS )Nr*   zdoesn't exist)r   r   rq   )r   r
   r
   r   r*     s   z_script.<locals>.existszUSER_BASE: z ()zUSER_SITE: zENABLE_USER_SITE: r   z--user-basez--user-siteFr_      
   )r   argvrm   rp   r   r   ro   r   r$   rl   rn   r   Zpathsepr   textwrapZdedent)r   rZ   Z	user_baserr   r   r*   bufferr   r
   r
   r   _scriptk  s>   



r   __main__r   )&r   r   r   r   r5   rz   r   ru   ro   rn   rl   r   r   r#   r)   r.   rJ   rQ   rX   rf   rk   rm   rp   rs   r{   r|   r   r   r   r   r   r   r   r   r   no_siter   r   r
   r
   r
   r   <module>   sN    G	
/ 

$	;46
