o
     JAf                     @   s`   	 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 n ty" } z	td| |jf d }~ww tj|rFzt| W n tyE } z	td||jf d }~ww zt |d}W n tyb } z	td||jf d }~ww 	 z||}W n ty } z	td| |jf d }~ww |snz|	| W n ty } z	td||jf d }~ww qdW |r|
  |r|
  d S d S |r|
  |r|
  w w )	Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %sTz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.10/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|r3|}tj|tj| }ntj|}|rN|| |sN|dkrJtd|  |dfS zt| }W n tya   td| w |dkrtj|tj| kr{td|| | ntd|| | |r|dfS |d	krtj|rtj| |szt| | |dfW S  ty   Y nw n|d
krtj|rtj| |st| | |dfS t| | |s|rt| }|rt|||	 ||
 f |rt||||  |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   s^   
	

r8   c                 C   s  	 ddl m}m}m}m}m} dd l}	|dkrtd| | |r"|S || s,t	d|  ||r:t
j||| }n||rFt	d| |f |||sTt	d| |f d}
zt
| | W n( ty } z|j\}}||	jkrsd	}
n	t	d
| ||f W Y d }~nd }~ww |
rt| ||d zt
|  W |S  ty } z |j\}}zt
| W n	 ty   Y nw t	d| || |f d }~ww |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   sp   




r>   c                 C   s>   	 t | d}z|D ]	}||d  q	W |  d S |  w )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
?