o
    DXîhb  ã                   @   sr   	 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   st  	 t | tƒstd| f ƒ‚tj | ¡} g }tj | ¡s| dkr!|S t tj 	| ¡¡r,|S tj 
| ¡\}}|g}|rY|rYtj |¡sYtj 
|¡\}}| d|¡ |rY|rYtj |¡rA|D ]\}tj ||¡}tj 	|¡}	t |	¡rpq[|dkrzt d|¡ |s³zt ||¡ W n) ty­ }
 z|
jtjkr˜tj |¡s£td||
jd f ƒ‚W Y d }
~
nd }
~
ww | |¡ dt|	< q[|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ÚerrnoÚEEXISTr   ÚargsÚappend)ÚnameÚmodeÚverboseÚdry_runZcreated_dirsÚheadÚtailZtailsÚdZabs_headÚexc© r$   ú</opt/python-3.10.19/usr/lib/python3.10/distutils/dir_util.pyÚmkpath   sL   
ÿþ
ÿÿ€ÿ

r&   c              	   C   sP   	 t ƒ }|D ]}| tj | tj |¡¡¡ qt|ƒD ]
}t||||d qd S )N©r   r   )ÚsetÚaddr   r   r   ÚdirnameÚsortedr&   )Úbase_dirÚfilesr   r   r   Zneed_dirÚfileÚdirr$   r$   r%   Úcreate_treeP   s   
ÿr0   c                 C   s\  	 ddl m} |stj | ¡std|  ƒ‚zt | ¡}	W n  ty< }
 z|r)g }	n	td| |
jf ƒ‚W Y d }
~
nd }
~
ww |sEt	||d g }|	D ]b}tj 
| |¡}tj 
||¡}| d¡r_qI|r…tj |¡r…t |¡}|dkrwt d||¡ |st ||¡ | |¡ qItj |¡r›| t||||||||d	¡ qI||||||||d	 | |¡ qI|S )
Nr   )Ú	copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)r   z.nfsr   zlinking %s -> %sr'   )Zdistutils.file_utilr1   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   r1   ÚnamesÚeZoutputsÚnZsrc_nameZdst_nameZ	link_destr$   r$   r%   r9   c   sZ   ÿÿþ€þ

þÿþr9   c                 C   sh   	 t  | ¡D ]#}t j | |¡}t j |¡r!t j |¡s!t||ƒ q| t j|f¡ q| t j	| f¡ d S )N)
r   r2   r   r   r   r5   Ú_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| |ƒ |D ]4}z|d |d ƒ tj |d ¡}|tv r2t|= W q tyL } zt  d| |¡ W Y d }~qd }~ww 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   rC   Úcmdr   r#   r$   r$   r%   Úremove_tree²   s&   
€€ÿùrG   c                 C   s8   	 t j | ¡\}} | dd… t jkr|| dd …  } | S )Nr   r   )r   r   Ú
splitdriveÚsep)r   Údriver$   r$   r%   Úensure_relativeÊ   s
   rK   )r   r   r   )r   r   r   r   r   r   )r   r   )r   r   Zdistutils.errorsr   r   Z	distutilsr   r   r&   r0   r9   r@   rG   rK   r$   r$   r$   r%   Ú<module>   s    

?
ÿE

