o
     JAf(R                     @   s  	 d dl Z 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r$d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 r.t jd S t jd	ks8tt d
s;tjS t  \} }}}}|  	dd} |	dd}|	dd}| d d dkrfd| |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 }nL| d d dkrd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.10/distutils/util.pyget_host_platform   sV   


 


r2   c                  C   s4   t jdkrdddd} | t jdpt S t S )Nr   win32r   r	   )Zx86Zx64ZarmZVSCMD_ARG_TGT_ARCH)r   r   getr    r2   )ZTARGET_TO_PLATr0   r0   r1   get_platformc   s   
r5   c                 C   s   	 t jdkr| S | s| S | d dkrtd|  | d dkr$td|  | d}d|v r6|d d|v s-|s;t 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_pathn   s    


rA   c                 C   s   	 t jdkrt j|st j| |S t j| |dd  S t jdkr>t j|\}}|d dkr7|dd  }t j| |S tdt j )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   sx   	 t rd S tjdkr-dtjvr-zdd l} | t d tjd< W n ttfy,   Y nw dtjvr8t	 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   sJ   	 t   |fdd}ztd|| W S  ty$ } ztd| d }~ww )Nc                 S   s(   |  d}||v rt|| S tj| 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r.|| d |  	 |S | | tjv rI|| d |  | |d  	 } d}ni| | dkrb| d | | |d d   } |d }nP| | dkrot
| |}n| | dkr|t| |}ntd| |  |d u rtd| |  | \}}| d | | |d |d   | |d   } | d }|t| kr||  	 |S | s|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   sF   
,
$rm   c                 C   sV   	 |d u rd| j |f }|dd  dkr|dd d }t| |s)| |  d S d S )Nz%s%rz,)r   ))__name__r   info)funcargsmsgverbosedry_runr0   r0   r1   execute!  s   
rw   c                 C   s0   	 |   } | dv rdS | dv rdS td| f )N)yZyesttrueZon1rB   )nnofZfalseZoff0r   zinvalid truth value %r)r   r9   )valr0   r0   r1   	strtobool4  s   r   rB   c              	   C   sh  	 dd l }tjrtd|d u rd}|szddlm}	 |	d\}
}W n ty8   ddlm} d |d}
}Y nw t	d| |s|
d urLt
|
d}nt|d}|& |d	 |d
tt| d  |d|||||f  W d    n1 s|w   Y  tj}tjg}||  |d| d || t||d tt
j|fd| |d d S ddlm} | D ]x}|dd  dkrq|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!"|}|r1|st#||r*t	d|| |s)|||| qt$d|| qd 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)
z	-Wignore:z:DeprecationWarning)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reprr/   Z_DEPRECATION_MESSAGE
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scriptrt   cmdr&   fileoptcfiledfileZ
cfile_baser0   r0   r1   byte_compileD  s   



r   c                 C   s   	 |  d}d}||S )N
z	
        )r:   r>   )headerlinesr8   r0   r0   r1   rfc822_escape  s   

r   c                 C   sX   	 | sd S ddl m}m} G dd d|}|d u r|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                 _      t j|g|R   d S rX   )r   error)selfrt   rs   kwr0   r0   r1   	log_error     z4run_2to3.<locals>.DistutilsRefactoringTool.log_errorc                 W   r   rX   )r   rq   r   rt   rs   r0   r0   r1   log_message  r   z6run_2to3.<locals>.DistutilsRefactoringTool.log_messagec                 W   r   rX   )r   r   r   r0   r0   r1   	log_debug  r   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|
 w |	j
|	jd d < |rN| D ]}| }|sHq?|	| q?g }|	jD ]&}tj||}|tj| |tj| ||dd}|d ry|| qSt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>  s    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   s6   


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   1  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   r/   Zdistutils.errorsr   Zdistutils.dep_utilr   Zdistutils.spawnr   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>   sJ    P

=
 


!