B
    0*\Q                 @   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 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 krdS tjS dt jkr6t jd S t jdksJtt dsPt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r(d| ||f S | d d dkrfd} tdtj}||}|r| }n>| d d dkrdd l}dd l}	||	j | ||\} }}d | ||f S )!NntZamd64z	win-amd64Z_PYTHON_HOST_PLATFORMposixuname/  _-   Zlinuxz%s-%sZsunosr   5Zsolarisz%d.%s      Z32bitZ64bit)il    z.%sZaixz%s-%s.%s   cygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr	   replaceintmaxsizerecompileASCIImatchgroup_osx_supportZdistutils.sysconfigZget_platform_osxZ	sysconfigZget_config_vars)
ZosnameZhostreleaser   machineZbitnessZrel_remr&   	distutils r+   9C:\ALexclude\prg\programme\Python37\Lib\distutils\util.pyget_platform   sD    


 


r-   c             C   s~   t jdkr| S | s| S | d dkr.td|  | d dkrFtd|  | d}xd|krf|d qRW |srt 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pathsr+   r+   r,   convert_path`   s    	


r9   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   r5   isabsr6   
splitdriver   )Znew_rootr7   driver5   r+   r+   r,   change_root|   s    

r?   c           	   C   sx   t rd S tjdkrZdtjkrZy$dd l} | t d tjd< W n ttfk
rX   Y nX dtjkrpt	 tjd< da d S )Nr   HOMEr   r   ZPLATr:   )
_environ_checkedr   r   r   pwdZgetpwuidgetuidImportErrorKeyErrorr-   )rB   r+   r+   r,   check_environ   s    	
rF   c          
   C   sT   t   |fdd}ytd|| S  tk
rN } ztd| W d d }~X Y nX d S )Nc             S   s,   |  d}||krt|| S tj| S d S )Nr:   )r%   strr   r   )r$   
local_varsZvar_namer+   r+   r,   _subst   s    
zsubst_vars.<locals>._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')rF   r!   subrE   r1   )srH   rI   varr+   r+   r,   
subst_vars   s    	rM   error: c             C   s   |t |  S )N)rG   )excprefixr+   r+   r,   grok_environment_error   s    rQ   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_rer+   r+   r+   r,   _init_regex   s    
rW   c             C   s  t d krt  |  } g }d}x`| rt | |}| }|t| kr\|| d |  P | | tjkr|| d |  | |d  	 } d}n| | dkr| d | | |d d   } |d }n| | dkrt
| |}n*| | dkrt| |}ntd| |  |d kr"td| |  | \}}| d | | |d |d   | |d   } | d }|t| kr"||  P q"W |S )	Nr   r;   r:   '"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r   )rT   rW   stripr$   endlenappendrR   rS   lstriprU   rV   RuntimeErrorr1   span)rK   Zwordsposr)   r[   Zbegr+   r+   r,   split_quoted   s@     


,
rb   c             C   sP   |d k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_runr+   r+   r,   execute  s    	
rl   c             C   s2   |   } | dkrdS | dkr dS td| f d S )N)yZyesttrueZon1r:   )nnofZfalseZoff0r   zinvalid truth value %r)r   r1   )valr+   r+   r,   	strtobool&  s    rv   r:   c             C   sR  dd l }tjrtd|d kr*do(|dk}|s8yddlm}	 |	d\}
}W n. tk
rz   ddlm} d |d }
}Y nX t	d| |s|
d k	rt
|
d}n
t|d}|d	 |d
tt| d  |d|||||f  |  tjg}||  || t||d tt
j|fd| |d nddlm} x| D ]}|dd  dkrfqL|dkr|dkr~dn|}tjj||d}ntj|}|}|r|d t| |krtd||f |t|d  }|rt
j ||}t
j !|}|rL|st"||r:t	d|| |sH|||| nt#d|| qLW d S )Nr   zbyte-compiling is disabled.F)mkstempz.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)
)rk   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   Ztempfilerw   rD   rx   r   rf   r   fdopenopenwriter6   mapreprclose
executableextendZ"_optim_args_from_interpreter_flagsr]   r   rl   r3   
py_compiler"   	importlibutilcache_from_sourcer\   r1   r5   basenamer   debug)Zpy_filesoptimizeforcerP   Zbase_dirrj   rk   Zdirectr|   rw   Z	script_fdZscript_namerx   Zscriptcmdr"   fileoptcfiledfileZ
cfile_baser+   r+   r,   byte_compile6  sl    $


r   c             C   s   |  d}d}||S )N
z	
        )r2   r6   )headerlinesr0   r+   r+   r,   rfc822_escape  s    
r   c             C   sV   | sd S ddl m}m} G dd d|}|d k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|f|  d S )N)r   error)selfri   rh   kwr+   r+   r,   	log_error  s    z4run_2to3.<locals>.DistutilsRefactoringTool.log_errorc             W   s   t j|f|  d S )N)r   rf   )r   ri   rh   r+   r+   r,   log_message  s    z6run_2to3.<locals>.DistutilsRefactoringTool.log_messagec             W   s   t j|f|  d S )N)r   r   )r   ri   rh   r+   r+   r,   	log_debug  s    z4run_2to3.<locals>.DistutilsRefactoringTool.log_debugN)re   
__module____qualname__r   r   r   r+   r+   r+   r,   DistutilsRefactoringTool  s   r   zlib2to3.fixes)optionsT)r   )Zlib2to3.refactorr   r   Zrefactor)filesfixer_namesr   explicitr   r   r   rr+   r+   r,   run_2to3  s    
r   c          	   C   s  ddl m} ddlm} ddlm} | }	t }
t|  z|		  W d t|
 X |	j
|	jd d < |rx(| D ]}| }|sqt|	| qtW g }xV|	jD ]L}tj||}|tj| |tj| ||dd}|d r|| qW tdd |D |||d	 |S )
Nr   )mkpath)	copy_file)FileListr:   )updatec             S   s   g | ]}|  d r|qS )z.py)r   endswith).0fnr+   r+   r,   
<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   
splitlinesrZ   Zprocess_template_liner5   r6   dirnamer]   r   )srcdesttemplater   r   r   r   r   r   Zfilelistr4   lineZcopiedfilenameZoutnameresr+   r+   r,   copydir_run_2to3  s4    
  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 )N)r   r   r   r   )r   r   r+   r+   r,   r   "  s    zMixin2to3.run_2to3)re   r   r   r   r   r   r   r+   r+   r+   r,   r     s   r   )rN   )Nr   r   )r   r   NNr:   r   N)NNN)NNNN)"r   r!   importlib.utilr   rR   r   Zdistutils.errorsr   Zdistutils.dep_utilr   Zdistutils.spawnr   r*   r   r   r-   r9   r?   rA   rF   rM   rQ   rT   rU   rV   rW   rb   rl   rv   r   r   r   r   r   r+   r+   r+   r,   <module>   s>   N
=
   
 

 
 