a
    ze                     @   sV   d dl Z d dlmZ d dlmZ ddddZdd	d
ZdddZdddZdd Z	dS )    N)DistutilsFileError)logZcopyingzhard linkingzsymbolically linking)Nhardsym @  c              
   C   s  d }d }zzt | d}W n6 tyP } ztd| |jf W Y d }~n
d }~0 0 tj|rzt| W n6 ty } ztd||jf W Y d }~n
d }~0 0 zt |d}W n6 ty } ztd||jf W Y d }~n
d }~0 0 z||}W n8 ty0 } ztd| |jf W Y d }~n
d }~0 0 |s<qz|	| W q ty } ztd||jf W Y d }~qd }~0 0 qW |r|
  |r|
  n|r|
  |r|
  0 d S )Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s)openOSErrorr   strerrorospathexistsunlinkreadwriteclose)srcdstZbuffer_sizefsrcfdstebuf r   )/usr/lib/python3.9/distutils/file_util.py_copy_file_contents   sT    	(
r      c                 C   s
  ddl m} ddlm}	m}
m}m} tj	| s<t
d|  tj|rd|}tj|tj| }ntj|}|r|| |s|dkrtd|  |dfS zt| }W n ty   td| Y n0 |dkr
tj|tj| krtd|| | ntd|| | |r|dfS |d	krntj|r@tj| |szt| | |dfW S  tyj   Y n0 n<|d
krtj|rtj| |st| | |dfS t| | |s|rt| }|rt|||	 ||
 f |rt||||  |dfS )Nr   )newer)ST_ATIMEST_MTIMEST_MODES_IMODEz4can't copy '%s': doesn't exist or not a regular filer   z"not copying %s (output up-to-date)z&invalid value '%s' for 'link' argumentz%s %s -> %sr   r   )Zdistutils.dep_utilr   statr   r   r    r!   r   r   isfiler   isdirjoinbasenamedirnamer   debug_copy_actionKeyError
ValueErrorinfor   samefilelinkr
   symlinkr   utimechmod)r   r   Zpreserve_modeZpreserve_timesupdater.   verbosedry_runr   r   r   r    r!   diractionstr   r   r   	copy_fileC   sV    !





r8   c                 C   s  ddl m}m}m}m}m} dd l}	|dkr:td| | |rB|S || sVt	d|  ||rrt
j||| }n||rt	d| |f |||st	d| |f d}
zt
| | W nR ty } z8|j\}}||	jkrd	}
nt	d
| ||f W Y d }~n
d }~0 0 |
rt| ||d zt
|  W nh ty } zN|j\}}zt
| W n tyn   Y n0 t	d| || |f W Y d }~n
d }~0 0 |S )Nr   )r   r#   r$   r&   r'   r   zmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r3   zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathr   r#   r$   r&   r'   errnor   r,   r   r   r   r%   renamer
   argsZEXDEVr8   r   )r   r   r3   r4   r   r#   r$   r&   r'   r9   Zcopy_itr   nummsgr   r   r   	move_file   s`    



r>   c                 C   s>   t | d}z$|D ]}||d  qW |  n
|  0 d S )Nw
)r	   r   r   )filenamecontentsfliner   r   r   
write_file   s
    
rE   )r   )r   r   r   Nr   r   )r   r   )
r   Zdistutils.errorsr   Z	distutilsr   r)   r   r8   r>   rE   r   r   r   r   <module>   s   
3  
d  
?