???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \b                 @   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   sp  t | tstd| f tjj| } g }tjj| s<| dkr@|S tjtjj	| rV|S tjj
| \}}|g}x6|r|rtjj| rtjj
|\}}|jd| qnW x|D ]}tjj||}tjj	|}	tj|	rq|dkrtjd| |s`ytj|| W nV tk
rT }
 z8|
jtjko*tjj|sDtd||
jd f W Y d d }
~
X nX |j| dt|	< qW |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#   */usr/lib64/python3.6/distutils/dir_util.pymkpath   s>    


&
r%   c             C   sV   t  }x(|D ] }|jtjj| tj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   sf  ddl m} | r,tjj|  r,td|  ytj| }	W n> tk
rx }
 z"|rVg }	ntd| |
jf W Y d d }
~
X nX |st	||d g }x|	D ]}tjj
| |}tjj
||}|jdrq|otjj|rtj|}|dkrtjd|| |stj|| |j| qtjj|r>|jt||||||||d	 q||||||||d	 |j| 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   sl   xVt j| D ]H}t jj| |}t jj|rDt jj| rDt|| q|jt j|f qW |j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 jd|  |rd S g }t| | xp|D ]h}y2|d |d  tjj|d }|tkrdt|= W q0 tk
r } zt jd| | W Y d d }~X 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j| \}} | dd t jkr2|| dd   } | S )Nr   r   )r   r   
splitdrivesep)r   Zdriver#   r#   r$   ensure_relative   s    rG   )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   rG   r#   r#   r#   r$   <module>   s   
?
 
D

