a
    zeQ                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ dd Zd	d
 Zdd Zdd Zd add Zdd Zd)ddZd a aadd Zdd Zd*ddZdd Zd+dd Zd!d" Zd,d#d$Z d-d%d&Z!G d'd( d(Z"dS ).    N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc                  C   s  t jdkrFdtj v rdS dtj v r.dS dtj v r@dS tjS dt jv rZt jd S t jd	ksntt d
sttjS t  \} }}}}|  	dd} |	dd}|	dd}| d d dkrd| |f S | d d dkr,|d dkrd} dt
|d d |dd  f }ddd}|d|tj  7 }n| d d dkrPddlm} | S | d d  d!krd!} td"tj}||}|r| }n>| d d  d#krdd l}	dd l}
|	|
j | ||\} }}d$| ||f S )%NntZamd64	win-amd64z(arm)	win-arm32z(arm64)z	win-arm64Z_PYTHON_HOST_PLATFORMposixuname/  _-   linuxz%s-%sZsunosr   5Zsolarisz%d.%s      Z32bitZ64bit)il    z.%sZaix)aix_platform   cygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr   replaceintmaxsizeZ_aix_supportr   recompileASCIImatchgroup_osx_supportZdistutils.sysconfigZget_platform_osxZ	sysconfigZget_config_vars)Zosnamehostreleaser   machineZbitnessr   Zrel_remr*   	distutils r0   $/usr/lib/python3.9/distutils/util.pyget_host_platform   sP    


 



r2   c                  C   s8   t jdkr.dddd} | t jdp,t S t S d S )Nr   win32r   r	   )Zx86Zx64ZarmZVSCMD_ARG_TGT_ARCH)r   r   getr    r2   )ZTARGET_TO_PLATr0   r0   r1   get_platformb   s    
r5   c                 C   sz   t jdkr| S | s| S | d dkr.td|  | d dkrFtd|  | d}d|v rd|d qP|snt jS t jj| S )Nr   r   zpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)r   sep
ValueErrorsplitremovecurdirpathjoin)pathnamepathsr0   r0   r1   convert_pathm   s    	

rA   c                 C   s   t jdkr<t j|s$t j| |S t j| |dd  S nNt jdkr|t j|\}}|d dkrn|dd  }t j| |S tdt j d S )Nr
      r   r   \z!nothing known about platform '%s')r   r   r=   isabsr>   
splitdriver   )Znew_rootr?   driver=   r0   r0   r1   change_root   s    

rG   c               	   C   sv   t rd S tjdkrXdtjvrXz$dd l} | t d tjd< W n ttfyV   Y n0 dtjvrnt	 tjd< da d S )Nr
   HOMEr   r   ZPLATrB   )
_environ_checkedr   r   r    pwdgetpwuidgetuidImportErrorKeyErrorr5   )rJ   r0   r0   r1   check_environ   s    	
rO   c              
   C   sX   t   |fdd}ztd|| W S  tyR } ztd| W Y d }~n
d }~0 0 d S )Nc                 S   s,   |  d}||v rt|| S tj| S d S )NrB   )r)   strr   r    )r(   
local_varsZvar_namer0   r0   r1   _subst   s    
zsubst_vars.<locals>._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')rO   r%   subrN   r9   )srQ   rR   varr0   r0   r1   
subst_vars   s    	rV   error: c                 C   s   |t |  S N)rP   )excprefixr0   r0   r1   grok_environment_error   s    r[   c                   C   s(   t dtj at dat dad S )Nz[^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r%   r&   string
whitespace_wordchars_re
_squote_re
_dquote_rer0   r0   r0   r1   _init_regex   s    
ra   c                 C   s  t d u rt  |  } g }d}| rt | |}| }|t| krZ|| d |  q| | tjv r|| d |  | |d  	 } d}n| | dkr| d | | |d d   } |d }n| | dkrt
| |}n*| | dkrt| |}ntd| |  |d u r td| |  | \}}| d | | |d |d   | |d   } | d }|t| kr||  qq|S )	Nr   rC   rB   '"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r   )r^   ra   stripr(   endlenappendr\   r]   lstripr_   r`   RuntimeErrorr9   span)rT   wordsposr.   re   Zbegr0   r0   r1   split_quoted   s>    

,
rm   c                 C   sP   |d u r6d| j |f }|dd  dkr6|dd d }t| |sL| |  d S )Nz%s%rz,)r   ))__name__r   info)funcargsmsgverbosedry_runr0   r0   r1   execute   s    	
rw   c                 C   s2   |   } | dv rdS | dv r dS td| f d S )N)yZyesttrueZon1rB   )nnofZfalseZoff0r   zinvalid truth value %r)r   r9   )valr0   r0   r1   	strtobool3  s    r   rB   c              	   C   sj  dd l }tjrtd|d u r*do(|dk}|sVzddlm}	 |	d\}
}W n, tyx   ddlm} d |d }
}Y n0 t	d| |s|
d urt
|
d}n
t|d}|L |d	 |d
tt| d  |d|||||f  W d    n1 s0    Y  tjg}||  || t||d tt
j|fd| |d nddlm} | D ]}|dd  dkrqf|dkr|dkrdn|}tjj||d}ntj|}|}|r|d t| |krtd||f |t|d  }|rt
j||}t
j |}|rf|s2t!||rTt	d|| |sb|||| nt"d|| qfd S )Nr   zbyte-compiling is disabled.F)mkstemp.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile
files = [
z,
z]
z
byte_compile(files, optimize=%r, force=%r,
             prefix=%r, base_dir=%r,
             verbose=%r, dry_run=0,
             direct=1)
)rv   zremoving %s)r&   r   )optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)#
subprocessr   dont_write_bytecoder   tempfiler   rM   r   r   rq   r   fdopenopenwriter>   maprepr
executableextend"_optim_args_from_interpreter_flagsrg   r   rw   r;   
py_compiler&   	importlibutilcache_from_sourcerf   r9   r=   basenamer   debug)Zpy_filesoptimizeforcerZ   base_dirru   rv   Zdirectr   r   Z	script_fdZscript_namer   Zscriptcmdr&   fileoptcfiledfileZ
cfile_baser0   r0   r1   byte_compileC  st    $

&


r   c                 C   s   |  d}d}||S )N
z	
        )r:   r>   )headerlinesr8   r0   r0   r1   rfc822_escape  s    
r   c                 C   sV   | sd S ddl m}m} G dd d|}|d u r8|d}|||d}|j| dd d S )	Nr   )RefactoringToolget_fixers_from_packagec                   @   s$   e Zd Zdd Zdd Zdd ZdS )z*run_2to3.<locals>.DistutilsRefactoringToolc                 _   s   t j|g|R   d S rX   )r   error)selfrt   rs   kwr0   r0   r1   	log_error  s    z4run_2to3.<locals>.DistutilsRefactoringTool.log_errorc                 W   s   t j|g|R   d S rX   )r   rq   r   rt   rs   r0   r0   r1   log_message  s    z6run_2to3.<locals>.DistutilsRefactoringTool.log_messagec                 W   s   t j|g|R   d S rX   )r   r   r   r0   r0   r1   	log_debug  s    z4run_2to3.<locals>.DistutilsRefactoringTool.log_debugN)rp   
__module____qualname__r   r   r   r0   r0   r0   r1   DistutilsRefactoringTool  s   r   zlib2to3.fixes)optionsT)r   )Zlib2to3.refactorr   r   Zrefactor)filesfixer_namesr   explicitr   r   r   rr0   r0   r1   run_2to3  s    
r   c              	   C   s  ddl m} ddlm} ddlm} | }	t }
t|  z|		  W t|
 nt|
 0 |	j
|	jd d < |r| D ]}| }|sq||	| q|g }|	jD ]L}tj||}|tj| |tj| ||dd}|d r|| qtdd |D |||d	 |S )
Nr   )mkpath)	copy_file)FileListrB   )updatec                 S   s   g | ]}|  d r|qS )r   )r   endswith).0fnr0   r0   r1   
<listcomp>      z$copydir_run_2to3.<locals>.<listcomp>)r   r   r   )Zdistutils.dir_utilr   Zdistutils.file_utilr   Zdistutils.filelistr   r   getcwdchdirfindallZallfilesr   
splitlinesrd   Zprocess_template_liner=   r>   dirnamerg   r   )srcdesttemplater   r   r   r   r   r   Zfilelistr<   lineZcopiedfilenameZoutnameresr0   r0   r1   copydir_run_2to3  s2    


r   c                   @   s    e Zd ZdZdZdZdd ZdS )	Mixin2to3Nc                 C   s   t || j| j| jS rX   )r   r   r   r   )r   r   r0   r0   r1   r   .  s    zMixin2to3.run_2to3)rp   r   r   r   r   r   r   r0   r0   r0   r1   r     s   r   )rW   )Nr   r   )r   r   NNrB   r   N)NNN)NNNN)#r   r%   importlib.utilr   r\   r   Zdistutils.errorsr   Zdistutils.dep_utilr   Zdistutils.spawnr   r/   r   r   r2   r5   rA   rG   rI   rO   rV   r[   r^   r_   r`   ra   rm   rw   r   r   r   r   r   r   r0   r0   r0   r1   <module>   sD   P
=
    
 

  
!