o
     JAf;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
   /usr/lib/python3.10/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OSErrornormcase)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__)m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_itemcaser
   r
   r   _init_pathinfo   s   

r2   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)r2   r   r   r   r   ioTextIOWrapper	open_coder   	enumerate
startswithstripexecrstripr   r-   r   r'   r(   	Exceptionr   formatr   	tracebackformat_exceptionexc_info
splitlines)sitedirnamer*   resetfullnamefnliner   r+   rC   recordr
   r
   r   
addpackage   sZ   


rO   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).0rH   r
   r
   r   
<listcomp>   s    zaddsitedir.<locals>.<listcomp>)r   r2   r   r   r   r'   r(   r   listdirr   sortedrO   )rG   r*   rI   sitedircasenamesrH   r
   r
   r   
addsitedir   s*   
rW   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   rY   rX   r[   rZ   r
   r
   r
   r   check_enableusersite   s   	r^   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 )NPYTHONUSERBASEvxworksc                  W   s   t jt jj|  S r   )r   r   
expanduserr   )argsr
   r
   r   joinuser  s   z_getuserbase.<locals>.joinuserntAPPDATA~PythondarwinLibraryz%d.%d   z.local)r   environgetr   platformrH   
_frameworkversion_info)env_baserc   baser
   r
   r   _getuserbase  s   




rr   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 )Nrd   .r7   z\Pythonz\site-packagesrh   z/lib/python/site-packagesz/lib/pythonr   r8   z/site-packages)r   ro   r   rH   winverreplacerm   rn   )userbaseversion	ver_nodotr
   r
   r   	_get_path   s   

ry   c                   C   s   	 t d u rt a t S r   )	USER_BASErr   r
   r
   r
   r   getuserbase-  s   r{   c                  C   s,   	 t  } td u r| d u rdatS t| atS )NF)r{   	USER_SITEENABLE_USER_SITEry   )rv   r
   r
   r   getusersitepackages:  s   r~   c                 C   s.   	 t d t }trtj|rt||  | S )NzProcessing user site-packages)r   r~   r}   r   r   isdirrW   )r*   	user_siter
   r
   r   addusersitepackagesK  s   
r   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 )Nlib/zpython%d.%drj   zsite-packages)r   PREFIXESr(   r   
platlibdirr'   r   sepr   r   ro   )prefixessitepackagesseenprefixlibdirs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   r   rW   )r*   r   rG   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   r   _sitebuiltinsQuitterbuiltinsr   r   )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   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.txtLICENSElicensez'See https://www.python.org/psf/license/)r   _Printerr   r   r   rm   r   r]   r   r   dirnamer!   extendr   pardircurdirr   )filesdirsherer
   r
   r   setcopyright  s$   


r   c                   C   s   t  t_d S r   )r   _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__r7   libeditzbind ^I rl_completeztab: completerf   z.python_historyc                      s&   z   W d S  ty   Y d S w r   )write_history_filer   r
   historyreadliner
   r   write_history  s
   zCenablerlcompleter.<locals>.register_readline.<locals>.write_history)atexitr   rlcompleterImportErrorgetattrparse_and_bindread_init_filer   get_current_history_lengthr   r   r   ra   read_history_fileregister)r   r   readline_docr   r
   r   r   register_readline  s8   
z,enablerlcompleter.<locals>.register_readline)r   __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 )Nrh   __PYVENV_LAUNCHER__z
pyvenv.cfgc                 S   s   g | ]
}t j|r|qS r
   )r   r   isfile)rQ   conffiler
   r
   r   rR     s    
zvenv.<locals>.<listcomp>r   truezutf-8r4   =zinclude-system-site-packageshomeF)r   rk   r   rm   _base_executable
executabler   splitr   r   _homer   open	partitionr>   lowerr   exec_prefixr   r   insertr}   )r*   envr   exe_dirr0   site_prefixconf_basenamecandidate_confsvirtual_confsystem_siterK   rM   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   rH   rA   r   r   r   
excepthookrE   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   rH   rA   r   r   r   r   rE   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   r}   r^   r   r   r   r   r   r   isolatedr   r   r   )	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
    r8   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   r   )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-siteFrj      
   )r   argvr{   r~   r   r   r}   r   r'   rz   r|   r   pathsepr   textwrapdedent)r   rb   	user_baser   r   r-   bufferr   r
   r
   r   _scriptk  s>   



r   __main__r   )&r   r   r   r   r9   r   r   r   r}   r|   rz   r   r   r&   r,   r2   rO   rW   r^   rr   ry   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   no_siter   r   r
   r
   r
   r   <module>   sN    G	
/ 

$	;46
