o
    DXhY                     @   s4  	 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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
   ./opt/python-3.10.19/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   makepatha   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_pathsj   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| |}zt|}W n
 ty%   Y d S w t|ddtj@ s8t|ddtj	@ rAt
d| d S t
d| ztjt|dd	}W n
 ty^   Y d S w | t|D ]z\}}|d
rpqf| dkrwqfz-|drt| W qf| }t| |\}	}
|
|vrtj|	rtj|	 ||
 W qf 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 )NTFst_flagsr   st_file_attributeszSkipping hidden .pth file: zProcessing .pth file: localeencoding# )zimport zimport	z"Error processing line {:d} of {}:
   r   z  z
Remainder of file ignored) r2   r   r   r   lstatr   getattrstat	UF_HIDDENFILE_ATTRIBUTE_HIDDENr   ioTextIOWrapper	open_code	enumerate
startswithstripexecrstripr   r-   r   r'   r(   	Exceptionr   formatr   	tracebackformat_exceptionexc_info
splitlines)sitedirnamer*   resetfullnamestfnliner   r+   rJ   recordr
   r
   r   
addpackage   sn   


rW   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|ds|qS )z.pth.)endswithrD   ).0rO   r
   r
   r   
<listcomp>   s
    
zaddsitedir.<locals>.<listcomp>)r   r2   r   r   r   r'   r(   r   listdirr   sortedrW   )rN   r*   rP   sitedircasenamesrO   r
   r
   r   
addsitedir   s*   
r`   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   rb   ra   rd   rc   r
   r
   r
   r   check_enableusersite   s   	rg   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   platformrO   
_frameworkversion_info)env_baserl   baser
   r
   r   _getuserbase  s   




r{   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 )Nrm   rX   r9   z\Pythonz\site-packagesrq   z/lib/python/site-packagesz/lib/pythonr   r:   z/site-packages)r   rx   r   rO   winverreplacerv   rw   )userbaseversion	ver_nodotr
   r
   r   	_get_path*  s   

r   c                   C   s   	 t d u rt a t S r   )	USER_BASEr{   r
   r
   r
   r   getuserbase7  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_SITEr   )r~   r
   r
   r   getusersitepackagesD  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   isdirr`   )r*   	user_siter
   r
   r   addusersitepackagesU  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.%drs   zsite-packages)r   PREFIXESr(   r   
platlibdirr'   r   sepr   r   rx   )prefixessitepackagesseenprefixlibdirslibdirr   r
   r
   r   getsitepackagesd  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   r`   )r*   r   rN   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   rv   r   rf   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__r9   libeditzbind ^I rl_completeztab: completero   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ImportErrorr<   parse_and_bindread_init_filer   get_current_history_lengthr   r   r   rj   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 )Nrq   __PYVENV_LAUNCHER__z
pyvenv.cfgc                 S   s   g | ]
}t j|r|qS r
   )r   r   isfile)rZ   conffiler
   r
   r   r[     s    
zvenv.<locals>.<listcomp>r   truezutf-8r6   =zinclude-system-site-packageshomeF)r   rt   r   rv   _base_executable
executabler   splitr   r   _homer   open	partitionrE   lowerr   exec_prefixr   r   insertr   )r*   envr   exe_dirr0   site_prefixconf_basenamecandidate_confsvirtual_confsystem_siterS   rU   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   rO   rH   r   r   r   
excepthookrL   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   rO   rH   r   r   r   r   rL   r   r   r   r   )r   r   r   r
   r
   r   execusercustomize?  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   rg   r   r   r   r   r   r   isolatedr   r   r   )	orig_pathr*   r
   r
   r   mainS  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
    r:   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-siteFrs      
   )r   argvr   r   r   r   r   r   r'   r   r   r   pathsepr   textwrapdedent)r   rk   	user_baser   r   r-   bufferr   r
   r
   r   _scriptu  s>   



r   __main__r   )'r   r   r   r   r@   r=   r   r   r   r   r   r   r   r   r&   r,   r2   rW   r`   rg   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   no_siter   r   r
   r
   r
   r   <module>   sP    G	
7 

$	;46
