B YI~db�@slddlZddlZddlmZmZddlmZiaddd�Zddd �Z dd d �Z d d �Z ddd�Z dd�Z dS)�N)�DistutilsFileError�DistutilsInternalError)�log���c Csnt|t�std|f��tj�|�}g}tj�|�s<|dkr@|St�tj� |��rV|Stj� |�\}}|g}x4|r�|r�tj�|�s�tj� |�\}}|� d|�qnWx�|D]�}tj� ||�}tj� |�} t�| �r�q�|dkr�t �d|�|�s^yt�||�WnVtk �rR} z6| jtjk�r,tj�|��sBtd|| jdf��Wdd} ~ XYnX|�|�dt| <q�W|S)Nz(mkpath: 'name' must be a string (got %r)�rrz creating %szcould not create '%s': %s�����)� isinstance�strr�os�path�normpath�isdir� _path_created�get�abspath�split�insert�joinr�info�mkdir�OSError�errnoZEEXISTr�args�append) �name�mode�verbose�dry_runZ created_dirs�head�tailZtails�dZabs_head�exc�r#�7/opt/alt/python37/lib64/python3.7/distutils/dir_util.py�mkpaths>       &  r%c CsVt�}x(|D] }|�tj�|tj�|���q Wx t|�D]}t||||d�q:WdS)N)rr)�set�addr r r�dirname�sortedr%)Zbase_dir�filesrrrZneed_dir�file�dirr#r#r$� create_treePs   r-c Csdddlm}|s(tj�|�s(td|��yt�|�} Wn>tk rt} z |rRg} ntd|| jf��Wdd} ~ XYnX|s�t ||d�g} x�| D]�} tj� || �} tj� || �}| � d�r�q�|�rtj� | ��rt� | �}|dkr�t�d||�|�st�||�| �|�q�tj�| ��r<| �t| |||||||d ��q�|| ||||||d �| �|�q�W| S) Nr)� copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rr�listdirr�strerrorr%r� startswith�islink�readlinkrr�symlinkr�extend� copy_tree)�src�dstZ preserve_modeZpreserve_timesZpreserve_symlinks�updaterrr.�names�eZoutputs�nZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCsjxTt�|�D]F}tj�||�}tj�|�rBtj�|�sBt||�q |�tj|f�q W|�tj |f�dS)N) r r/r rrr2�_build_cmdtupler�remove�rmdir)r � cmdtuples�fZreal_fr#r#r$r=�s  r=c Cs�|dkrt�d|�|rdSg}t||�xp|D]h}y2|d|d�tj�|d�}|tkrdt|=Wq0tk r�}zt�d||�Wdd}~XYq0Xq0WdS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr=r r rrr�warn)Z directoryrrr@�cmdrr"r#r#r$� remove_tree�s    rDcCs6tj�|�\}}|dd�tjkr2||dd�}|S)Nrr)r r � splitdrive�sep)r Zdriver#r#r$�ensure_relative�srG)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$�s  ?  D