B
    0*™\4  ã               @   sl   d dl Z d dlZd dlmZmZ d dlmZ i addd„Zddd	„Z	dd
d„Z
dd„ Zddd„Zdd„ ZdS )é    N)ÚDistutilsFileErrorÚDistutilsInternalError)Úlogéÿ  é   c             C   sn  t | tƒstd| f ƒ‚tj | ¡} g }tj | ¡s<| dkr@|S t tj 	| ¡¡rV|S tj 
| ¡\}}|g}x4|r |r tj |¡s tj 
|¡\}}| d|¡ qnW xÆ|D ]¾}tj ||¡}tj 	|¡}	t |	¡rÒq¨|dkræt d|¡ |s^yt ||¡ W nV tk
rR }
 z6|
jtjkr,tj |¡sBtd||
jd f ƒ‚W d d }
~
X Y nX | |¡ dt|	< q¨W |S )Nz(mkpath: 'name' must be a string (got %r)Ú r   r   zcreating %szcould not create '%s': %séÿÿÿÿ)Ú
isinstanceÚstrr   ÚosÚpathÚnormpathÚisdirÚ_path_createdÚgetÚabspathÚsplitÚinsertÚjoinr   ÚinfoÚmkdirÚOSErrorÚerrnoZEEXISTr   ÚargsÚappend)ÚnameÚmodeÚverboseÚdry_runZcreated_dirsÚheadÚtailZtailsÚdZabs_headÚexc© r#   ú=C:\ALexclude\prg\programme\Python37\Lib\distutils\dir_util.pyÚmkpath   s>    


&
r%   c          	   C   sV   t ƒ }x(|D ] }| tj | tj |¡¡¡ qW x t|ƒD ]}t||||d q:W d S )N)r   r   )ÚsetÚaddr   r   r   ÚdirnameÚsortedr%   )Zbase_dirÚfilesr   r   r   Zneed_dirÚfileÚdirr#   r#   r$   Úcreate_treeP   s
    
 r-   c             C   sd  ddl m} |s(tj | ¡s(td|  ƒ‚yt | ¡}	W n> tk
rt }
 z |rRg }	ntd| |
jf ƒ‚W d d }
~
X Y nX |s†t	||d g }xÔ|	D ]Ì}tj 
| |¡}tj 
||¡}| d¡r¼q|rtj |¡rt |¡}|dkrðt d||¡ |st ||¡ | |¡ qtj |¡r<| t||||||||d	¡ q||||||||d	 | |¡ qW |S )
Nr   )Ú	copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)r   z.nfsr   zlinking %s -> %s)r   r   )Zdistutils.file_utilr.   r   r   r   r   Úlistdirr   Ústrerrorr%   r   Ú
startswithÚislinkÚreadlinkr   r   Úsymlinkr   ÚextendÚ	copy_tree)ÚsrcÚdstZpreserve_modeZpreserve_timesZpreserve_symlinksÚupdater   r   r.   ÚnamesÚeZoutputsÚnZsrc_nameZdst_nameZ	link_destr#   r#   r$   r6   c   sH    
"


r6   c             C   sj   xTt  | ¡D ]F}t j | |¡}t j |¡rBt j |¡sBt||ƒ q| t j|f¡ qW | t j	| f¡ d S )N)
r   r/   r   r   r   r2   Ú_build_cmdtupler   ÚremoveÚrmdir)r   Ú	cmdtuplesÚfZreal_fr#   r#   r$   r=   ¨   s    r=   c             C   s    |dkrt  d| ¡ |rd S g }t| |ƒ xp|D ]h}y2|d |d ƒ tj |d ¡}|tkrdt|= W q0 tk
r– } zt  d| |¡ W d d }~X Y q0X q0W d S )Nr   z'removing '%s' (and everything under it)r   zerror removing %s: %s)	r   r   r=   r   r   r   r   r   Úwarn)Z	directoryr   r   r@   Úcmdr   r"   r#   r#   r$   Úremove_tree²   s    


rD   c             C   s6   t j | ¡\}} | dd… t jkr2|| dd …  } | S )Nr   r   )r   r   Ú
splitdriveÚsep)r   Údriver#   r#   r$   Úensure_relativeÊ   s    rH   )r   r   r   )r   r   r   )r   r   r   r   r   r   )r   r   )r   r   Zdistutils.errorsr   r   Z	distutilsr   r   r%   r-   r6   r=   rD   rH   r#   r#   r#   r$   Ú<module>   s   
?
 
D

