
    ;eb                     h    	 d dl Z d dlZd dlmZmZ d dlmZ i addZddZ		 	 ddZ
d	 Zdd
Zd ZdS )    N)DistutilsFileErrorDistutilsInternalError)log     c           	         	 t          | t                    st          d| d          t          j                            |           } g }t          j                            |           s| dk    r|S t                              t          j        	                    |                     r|S t          j        
                    |           \  }}|g}|r||rzt          j                            |          s[t          j        
                    |          \  }}|                    d|           |r!|rt          j                            |          [|D ]}t          j                            ||          }t          j        	                    |          }	t                              |	          r]|dk    rt          j        d|           |s	 t          j        ||           nk# t           $ r^}
|
j        t"          j        k    rt          j                            |          s t'          d|d|
j        d	                   Y d }
~
nd }
~
ww xY w|                    |           dt          |	<   |S )
Nz%mkpath: 'name' must be a string (got ) r   r   zcreating %szcould not create '': )
isinstancestrr   ospathnormpathisdir_path_createdgetabspathsplitinsertjoinr   infomkdirOSErrorerrnoEEXISTr   argsappend)namemodeverbosedry_runcreated_dirsheadtailtailsdabs_headexcs              )/usr/lib/python3.11/distutils/dir_util.pymkpathr,      sv    dC   D$$<@DDBD D 	D 7D!!DL	w}}T dbjj..// 7==&&LT4FE
 4 d 3 3 w}}T**tQ  4 d 3 3   $ $w||D!$$7??4((X&& 	a<<H]D))) 	&Nt$$$$ N N N	U\11bgmmD6I6I1,,9=sx||LN N N 21111N %%%"#hs   G!!
I	+AII	c           	         	 t                      }|D ]R}|                    t          j                            | t          j                            |                               St          |          D ]}t          ||||           d S )Nr"   r#   )setaddr   r   r   dirnamesortedr,   )base_dirfilesr!   r"   r#   need_dirfiledirs           r+   create_treer8   P   s     uuH D DRW\\(BGOOD,A,ABBCCCC h < <sD'7;;;;;< <    c                    	 ddl m} |s1t          j                            |           st          d| z            	 t          j        |           }	n6# t          $ r)}
|rg }	nt          d| d|
j                  Y d }
~
nd }
~
ww xY w|st          ||           g }|	D ]I}t          j        
                    | |          }t          j        
                    ||          }|                    d          rY|r|t          j                            |          r]t          j        |          }|dk    rt          j        d	||           |st          j        ||           |                    |           t          j                            |          r,|                    t'          ||||||||
                     " ||||||||
           |                    |           K|S )Nr   )	copy_filez&cannot copy tree '%s': not a directoryzerror listing files in 'r   )r"   z.nfsr   zlinking %s -> %sr.   )distutils.file_utilr;   r   r   r   r   listdirr   strerrorr,   r   
startswithislinkreadlinkr   r   symlinkr   extend	copy_tree)srcdstpreserve_modepreserve_timespreserve_symlinksupdater"   r#   r;   nameseoutputsnsrc_namedst_name	link_dests                   r+   rD   rD   c   sW   & .----- >27==-- > 6<> > 	>I
3 I I I 	IEE$$7:ssAJJGI I I EEEEI  %sG$$$$G % %7<<Q''7<<Q''<< 	 	%!9!9 	%H--I!||+XyAAA 0
9h///NN8$$$$W]]8$$ 		%NN(Hm(*;V")7< < <= = = =
 Ih-$fg%' ' ' ' NN8$$$$Ns   A 
BA??Bc                    	 t          j        |           D ]}t           j                            | |          }t           j                            |          r0t           j                            |          st          ||           q|                    t           j        |f           |                    t           j	        | f           d S )N)
r   r=   r   r   r   r@   _build_cmdtupler   removermdir)r   	cmdtuplesfreal_fs       r+   rS   rS      s    #Z 2 2d1%%7==   	2)?)? 	2FI....bi01111bh%&&&&&r9   c                 j   	 |dk    rt          j        d|            |rd S g }t          | |           |D ]}}	  |d         |d                    t          j                            |d                   }|t          v rt          |= Q# t          $ r }t          j        d| |           Y d }~vd }~ww xY wd S )Nr   z'removing '%s' (and everything under it)r   zerror removing %s: %s)	r   r   rS   r   r   r   r   r   warn)	directoryr"   r#   rV   cmdr   r*   s          r+   remove_treer]      s     !||:IFFF IIy))) > >	>CF3q6NNNgooc!f--G-''!'* 	> 	> 	>H,i========	>> >s   AB
B0B++B0c                     	 t           j                            |           \  }} | dd         t           j        k    r|| dd          z   } | S )Nr   r   )r   r   
splitdrivesep)r   drives     r+   ensure_relativerb      sN     '$$T**KE4AaCyBFtABBxKr9   )r   r   r   )r   r   r   r   r   r   )r   r   )r   r   distutils.errorsr   r   	distutilsr   r   r,   r8   rD   rS   r]   rb    r9   r+   <module>rf      s   G 
			  G G G G G G G G       
= = = =~< < < <& 9:@AC C C CJ' ' '> > > >0    r9   