
    =Og                        	 d dl Z d dlZd dlZd dlZd dlZd dlZ	 d dlZ[dZn# e$ r dZY nw xY w	 d dl	Z	[	dZ
n# e$ r dZ
Y nw xY w	 d dlZ[dZn# e$ r dZY nw xY we j        dk    ZdxZZe j        dk    rd dlZnerd dlZerdndZ ee d          oej                            d	          aeo eed
          ZdZg dZ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z!d Z"d Z#efdZ$dtdZ%d Z&d  Z'd! Z(dd"d#Z)dd"d$Z* ee d%          rdd"d&Z+nd' Z+dd"d(Z,dd"d)Z-dd"d*Z.d+ Z/	 dud,Z0dde.ddfd-Z1 ee j2        d.          rd/ Z3d0 Z4nd1 Z3d2 Z4d3 Z5d4 Z6e j7        e j        e j8        e j9        he j:        k    oe j;        e j<        v oe j        e j=        v Z>dvdd5d6Z?e>e?_@        d7 ZAe.fd8ZBd9 ZCd: ZDd; ZEd< ZF	 	 dwd>ZG	 	 dxd?ZHd@eGdAgdBdfiZIereGdCgdDdfeIdE<   eHg dFdfeIdG<   e
r
eGdHgdIdfeIdJ<   er
eGdKgdLdfeIdM<   dN ZJdydPZKdQ ZL	 	 dzdRZMdS ZNdT ZO	 	 dydUZPdV ZQdW ZRdX ZSddYdZZTd[geTg dBfd\geSg dFfd]ZUerd^d_geTg dDfeUdE<   e
rd`dageTg dIfeUdJ<   erdbdcgeTg dLfeUdM<   dd ZVd{ddYdeZW ee df          rNeX                    dg            ejY        dhdi          ZZdjeZj[        _\        dkeZj]        _\        dleZj^        _\        dm Z_n+er)eX                    dg            ejY        dhdi          ZZdn Z_d{doZ`d|dqZadr Zbe jc        e jd        z  dfdsZedS )}    NTFntposixi   i   sendfilelinux
_fcopyfilez%.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC)copyfileobjcopyfilecopymodecopystatcopycopy2copytreemovermtreeErrorSpecialFileError	ExecErrormake_archiveget_archive_formatsregister_archive_formatunregister_archive_formatget_unpack_formatsregister_unpack_formatunregister_unpack_formatunpack_archiveignore_patternschownwhichget_terminal_sizeSameFileErrorc                       e Zd ZdS )r   N__name__
__module____qualname__     /usr/lib64/python3.11/shutil.pyr   r   =   s        Dr'   r   c                       e Zd ZdS )r    Nr"   r&   r'   r(   r    r    @   s        ??r'   r    c                       e Zd ZdS )r   Nr"   r&   r'   r(   r   r   C   s        ; ;r'   r   c                       e Zd ZdS )r   Nr"   r&   r'   r(   r   r   G   s        55r'   r   c                       e Zd ZdS )	ReadErrorNr"   r&   r'   r(   r-   r-   J   s        //r'   r-   c                       e Zd ZdS )RegistryErrorNr"   r&   r'   r(   r/   r/   M   s        & &r'   r/   c                       e Zd ZdS )_GiveupOnFastCopyNr"   r&   r'   r(   r1   r1   Q   s         r'   r1   c                    	 	 |                                  }|                                 }n!# t          $ r}t          |          d }~ww xY w	 t          j        |||           d S # t
          $ rN}| j        |_        |j        |_        |j	        t          j
        t          j        hv rt          |          |d d }~ww xY wN)fileno	Exceptionr1   r   r   OSErrornamefilename	filename2errnoEINVALENOTSUP)fsrcfdstflagsinfdoutfderrs         r(   _fastcopy_fcopyfilerC   V   s    %{{}} % % %$$$% ue,,,,,      y	9u}555#C(((4 s-   (, 
A
AA
A& &
B>0A	B99B>c                    	 	 |                                  }|                                 }n!# t          $ r}t          |          d }~ww xY w	 t          t	          j        |          j        d          }n# t          $ r d}Y nw xY wt          j	        dk     rt          |d          }d}	 	 t	          j        ||||          }|dk    rd S ||z  }n# t          $ r}| j        |_        |j        |_        |j        t          j        k    rdat          |          |j        t          j        k    r|d |dk    r3t	          j        |dt          j                  dk    rt          |          |d }~ww xY w)Ni   i   l        i   @r   TF)r4   r5   r1   maxosfstatst_sizer6   sysmaxsizeminr   r7   r8   r9   r:   ENOTSOCK_USE_CP_SENDFILEENOSPClseekSEEK_CUR)r=   r>   r@   rA   rB   	blocksizeoffsetsents           r(   _fastcopy_sendfilerT   j   s   %{{}} % % %$$$%.88		   			 {W	7++	F	;udFI>>D, qyydNFF/  	 	 	9CL ICMyEN** $) ',,,yEL((t# {{rxq"+>>!CC',,,I'	s?   (, 
A
AA
'A6 6BB,C 
E1BE,,E1c                 B   	 | j         }|j        }t          t          |                    5 }	  ||          }|snJ||k     r8|d |         5 }|                    |           d d d            n# 1 swxY w Y   n ||           X	 d d d            d S # 1 swxY w Y   d S r3   )readintowrite
memoryview	bytearray)r=   r>   lengthfsrc_readinto
fdst_writemvnsmvs           r(   _copyfileobj_readintor`      s?   
 MMJ	If%%	&	& 	"	b!!A VV $sJJsOOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
2	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5    BA."B.A2	2B5A2	6BBBc                 j    	 |st           }| j        }|j        }	  ||          }|sd S  ||           r3   )COPY_BUFSIZEreadrW   )r=   r>   rZ   	fsrc_readr\   bufs         r(   r   r      sS    G 	IJi 	E
3	r'   c                    t          | t          j                  rpt          t          j        d          rV	 t          j                            |                                 t          j        |                    S # t          $ r Y dS w xY wt          t          j        d          r2	 t          j                            | |          S # t          $ r Y dS w xY wt          j        	                    t          j        
                    |                     t          j        	                    t          j        
                    |                    k    S )NsamestatFsamefile)
isinstancerF   DirEntryhasattrpathrg   statr6   rh   normcaseabspathsrcdsts     r(   	_samefilers      s   #r{## (D(D 	7##CHHJJ=== 	 	 	55	 rw
## 	7##C--- 	 	 	55	 GRW__S1122GRW__S11223 4s$   AA: :
BB&C 
CCc                     t          | t          j                  r|                                 nt          j        |           S r3   )ri   rF   rj   rm   fns    r(   _statrw      s-    "2r{33D277999Dr'   c                     t          | t          j                  r|                                 nt          j                            |           S r3   )ri   rF   rj   
is_symlinkrl   islinkru   s    r(   _islinkr{      s3    (R[99Q2==???rw~~b?Q?QQr'   follow_symlinksc          
      F   	 t          j        d| |           t          | |          r#t          d                    | |                    d}t          | |g          D ]\  }}	 t          |          }t          j        |j	                  r5t          |t          j                  r|j        n|}t          d|z            t          r|dk    r|j        }x# t"          $ r Y w xY w|s8t%          |           r)t          j        t          j        |           |           nt+          | d          5 }	 t+          |d          5 }t,          rF	 t/          ||t0          j                   |cd d d            cd d d            S # t4          $ r Y nw xY wt6          r;	 t9          ||           |cd d d            cd d d            S # t4          $ r Y nOw xY wt          rD|dk    r>t;          ||t=          |t>                               |cd d d            cd d d            S tA          ||           d d d            n# 1 swxY w Y   nE# tB          $ r8}	t          j        "                    |          stG          d|           |	 d }	~	ww xY wd d d            n# 1 swxY w Y   |S )Nzshutil.copyfilez{!r} and {!r} are the same filer   z`%s` is a named piperbwbzDirectory does not exist: )$rI   auditrs   r    format	enumeraterw   rm   S_ISFIFOst_moderi   rF   rj   rl   r   _WINDOWSrH   r6   r{   symlinkreadlinkopen_HAS_FCOPYFILErC   r   _COPYFILE_DATAr1   rM   rT   r`   rK   rb   r   IsADirectoryErrorexistsFileNotFoundError)
rq   rr   r}   	file_sizeirv   str=   r>   es
             r(   r	   r	      s    Ic***c P=DDS#NNOOOIC:&& ' '2	'rB }RZ(( D *2r{ ; ;CRWW&'='BCCC 'AFFJ	  	 	 	D	  !ws|| !

2;s##S))))#t__ 	#t__ ,% #!/dE<PQQQ#&, , , , , , ,	 	 	 	 	 	 	 	  1 ! ! ! D! * 
#!.tT:::#&, , , , , , ,	 	 	 	 	 	 	 	  1 ! ! ! D! " #i!mm-dD#i:V:VWWW"', , , , , , ,	 	 	 	 	 	 	 	.  d++++, , , , , , , , , , , , , , ,0 %   w~~c** +,N,N,NOOUVV	5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@ Js   $C
C#"C#0J2IH9F 'I 
F
H9F
H9G)I
GH9G5H9IH9-I9H=	=I H=	IJ
J3JJJJJc                h   	 t          j        d| |           |st          |           rxt          j                            |          rYt          j        dk    rt          j        t          j        }}nt          t          d          rt          j        t          j
        }}ned S t          j        dk    r@t          j                            |          r!t          j                            |d          }t          t          j        }} ||           } ||t          j        |j                             d S )Nzshutil.copymoder   lchmodTstrict)rI   r   r{   rF   rl   rz   r7   lstatchmodrk   r   realpathrw   rm   S_IMODEr   )rq   rr   r}   	stat_func
chmod_funcr   s         r(   r
   r
   "  s     Ic*** 
0ws|| 
0s0C0C 
07d??$&HbhzIIR"" 	$&HbizIIF7d??rw~~c22?'""3t"44C %rx:		3BJsDL,,-----r'   	listxattrc                   	 	 t          j        | |          }nC# t          $ r6}|j        t          j        t          j        t          j        fvr Y d }~d S d }~ww xY w|D ]}	 t          j        | ||          }t          j        ||||           3# t          $ r@}|j        t          j	        t          j        t          j        t          j        fvr Y d }~xd }~ww xY wd S Nr|   )
rF   r   r6   r:   r<   ENODATAr;   getxattrsetxattrEPERM)rq   rr   r}   namesr   r7   values          r(   
_copyxattrr   <  s   		LoFFFEE 	 	 	wu}emU\JJJFFFFF	  	 	DCOOOCuoNNNNN   75;u}#(<#1 1 11 1 1 1 1		 	s,    
A+AA"/B
C6CCc                      d S r3   r&   argskwargss     r(   r   r   T      r'   c                  
 	 t          j        d| |           d d dd
|p.t          |           ot          j                            |           }|r
fd}n
fd}t          | t          j                  r|                     |          }n  |d          | |          }t          j	        |j
                  }  |d          ||j        |j        f|           t          | ||            |d	          }t          j        d
k    rF|rAt          j                            |          r!t          j                            |d          }nd }	  ||||           n# t           $ r Y nw xY wt#          |d          rr	   |d          ||j        |           d S # t&          $ rF}dD ]7}	t#          t(          |	          r |j        t+          t(          |	          k    r n8 Y d }~d S d }~ww xY wd S )Nzshutil.copystat)nsr}   c                     d S r3   r&   )r   r}   r   s      r(   _nopzcopystat.<locals>._nope  r   r'   c                 0    t          t          |           S r3   )getattrrF   )r7   r   s    r(   lookupzcopystat.<locals>.lookupl  s    2tT***r'   c                 T    t          t          |           }|t          j        v r|S S r3   )r   rF   supports_follow_symlinks)r7   rv   r   s     r(   r   zcopystat.<locals>.lookupq  s,    T4((BR000	Kr'   r|   rm   utimer   r   Tr   c                  "    t          j        |   d S r3   )rF   r   r   s     r(   _chmodzcopystat.<locals>._chmod  s    $r'   st_flagschflags)
EOPNOTSUPPr<   )rI   r   r{   rF   rl   rz   ri   rj   rm   r   r   st_atime_nsst_mtime_nsr   r7   r   NotImplementedErrorrk   r   r6   r:   r   )rq   rr   r}   followr   r   moder   whyrB   r   s             @r(   r   r   W  s   
 Ic***T      JWS\\%IbgnnS6I6I JF 	+ 	+ 	+ 	+ 	+ 	+
	 	 	 	 	 #r{## 9XXfX--VVF^^C888<
##DFF7OOCR^R^<        sC0000VG__F	w$ 	 w~~c"" 9g&&s4&88     sD&11111    	 r: 	FF9c2;GGGGGG 	 	 	.  5#&& 39s8K8K+K+KE EEEEE	 s*   E$ $
E10E1F# #
G3-;G..G3c                   	 t           j                            |          r=t           j                            |t           j                            |                     }t          | ||           t          | ||           |S r   )rF   rl   isdirjoinbasenamer	   r
   rq   rr   r}   s      r(   r   r     ss    
 
w}}S 7gll3 0 0 5 566S#7777S#7777Jr'   c                   	 t           j                            |          r=t           j                            |t           j                            |                     }t          | ||           t          | ||           |S r   )rF   rl   r   r   r   r	   r   r   s      r(   r   r     ss    	 
w}}S 7gll3 0 0 5 566S#7777S#7777Jr'   c                       	  fd}|S )Nc                     g }D ]*}|                     t          j        ||                     +t          |          S r3   )extendfnmatchfilterset)rl   r   ignored_namespatternpatternss       r(   _ignore_patternsz)ignore_patterns.<locals>._ignore_patterns  sJ     	A 	AG  w!?!?@@@@=!!!r'   r&   )r   r   s   ` r(   r   r     s)    &" " " " "
 r'   c           
         |) |t          j        |          d | D                       }nd}t          j        ||           g }	|t          u p|t          u }
| D ]}|j        |v rt           j                            ||j                  }t           j                            ||j                  }|
r|n|}	 |                                }|r=t           j        dk    r-|	                    d          }|j
        t          j        k    rd}|rt          j        |          }|r)t          j        ||           t          |||            nt           j                            |          s|r|                                rt#          |||||||           nC |||           n6|                                rt#          |||||||           n |||           # t$          $ r+}|	                    |j        d                    Y d }~d }~wt*          $ r0}|	                    ||t/          |          f           Y d }~d }~ww xY w	 t          ||           nM# t*          $ r@}t1          |dd           %|	                    ||t/          |          f           Y d }~nd }~ww xY w|	rt%          |	          |S )	Nc                     g | ]	}|j         
S r&   r7   ).0xs     r(   
<listcomp>z_copytree.<locals>.<listcomp>  s    /H/H/H1/H/H/Hr'   r&   )exist_okr   Fr|   r   winerror)rF   fspathmakedirsr   r   r7   rl   r   ry   rm   st_reparse_tagIO_REPARSE_TAG_MOUNT_POINTr   r   r   r   is_dirr   r   r   r   r6   appendstrr   )entriesrq   rr   symlinksignorecopy_functionignore_dangling_symlinksdirs_exist_okr   errorsuse_srcentrysrcentrysrcnamedstnamesrcobjry   r   linktorB   r   s                       r(   	_copytreer     s9   ry~~/H/H/H/H/HIIKm,,,,F E)B]d-BL ,8 ,8=M))',,sHM22',,sHM22)6w&	8!,,..J 'bgoo !e<<'4+JJJ!&J /W-- 7 Jvw///VW(lKKKKK 7>>&11 !6N ! (( 7 (F!.0H!.0 0 0 0 &fg6666"" /(FM1=B B B B fg...  	' 	' 	'MM#(1+&&&&&&&& 	8 	8 	8MM7GSXX677777777	80c 0 0 03
D))1MM3SXX.///0  FmmJsD   8B5G/A-G
I( HI%III   
J**6J%%J*c           
          	 t          j        d| |           t          j        |           5 }t	          |          }d d d            n# 1 swxY w Y   t          || ||||||          S )Nzshutil.copytree)r   rq   rr   r   r   r   r   r   )rI   r   rF   scandirlistr   )	rq   rr   r   r   r   r   r   itrr   s	            r(   r   r     s    %L Ic***	C Cs))              W#3"-.F#02 2 2 2s   AAAst_file_attributesc                     	 |                      d          }t          j        |j                  o)|j        t           j        z  o|j        t           j        k     S # t          $ r Y dS w xY wNFr|   )rm   S_ISDIRr   r   FILE_ATTRIBUTE_REPARSE_POINTr   r   r6   )entryr   s     r(   _rmtree_isdirr   F  s    	E22BL,, K&)JJ J&$*II2K L  	 	 	55	s   AA 
A)(A)c                     	 t          j        |           }t          j        |j                  p(|j        t          j        z  o|j        t          j        k    S # t          $ r Y dS w xY w)NF)
rF   r   rm   S_ISLNKr   r   r   r   r   r6   )rl   r   s     r(   _rmtree_islinkr   O  su    	$BL,, K&)JJ J&$*IIL  	 	 	55	s   AA 
A&%A&c                 R    	 |                      d          S # t          $ r Y dS w xY wr   )r   r6   )r   s    r(   r   r   X  s=    	<<<666 	 	 	55	s    
&&c                 @    t           j                            |           S r3   )rF   rl   rz   )rl   s    r(   r   r   ^  s    w~~d###r'   c                 F   	 t          j        |           5 }t          |          }d d d            n# 1 swxY w Y   n:# t          $ r-  |t           j        | t	          j                               g }Y nw xY w|D ]}|j        }t          |          rs	 |                                rt          d          n=# t          $ r0  |t           j        j	        |t	          j                               Y vw xY wt          ||           	 t          j        |           # t          $ r+  |t           j        |t	          j                               Y w xY w	 t          j        |            d S # t          $ r,  |t           j        | t	          j                               Y d S w xY w)N%Cannot call rmtree on a symbolic link)rF   r   r   r6   rI   exc_inforl   r   ry   rz   _rmtree_unsafeunlinkrmdir)rl   onerror
scandir_itr   r   fullnames         r(   r  r  b  s   Z 	':&&G	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'   
D#,..111  = =: 	=##%% K ""IJJJ	K
    #,..AAA 8W----=	(#### = = =	8S\^^<<<<<=0
 0 0 0$//////0s]   > 2> 6> 6> 4A54A5#B777C10C1D2EEE* *2F F c           
         	 t          j        |           5 }t          |          }d d d            n# 1 swxY w Y   nG# t          $ r:}||_         |t           j        |t          j                               Y d }~d S d }~ww xY w|D ]e}t           j                            ||j	                  }	 |
                    d          }|ri	 |                    d          }	t          j        |	j                  }nK# t          $ r+  |t           j        |t          j                               Y w xY wn# t          $ r d}Y nw xY w|rP	 t          j        |j	        t           j        t           j        z  |           }
d}	 t           j                            |	t          j        |
                    rt)          |
||           	 t          j        |
           n:# t          $ r- d} |t           j        |t          j                               Y nw xY wd}	 t          j        |j	        |            n# t          $ r+  |t           j        |t          j                               Y nQw xY w	 t          d          # t          $ r0  |t           j        j        |t          j                               Y nw xY w|sP	 t          j        |
           G# t          $ r,  |t           j        |t          j                               Y |w xY w# |sN	 t          j        |
           w # t          $ r+  |t           j        |t          j                               Y w w xY ww xY w# t          $ r,  |t           j        |t          j                               Y w xY w	 t          j        |j	        |            .# t          $ r,  |t           j        |t          j                               Y cw xY wd S )NFr|   dir_fdTr   )rF   r   r   r6   r8   rI   r   rl   r   r7   r   rm   r   r   r   r   O_RDONLY
O_NONBLOCKrg   rG   _rmtree_safe_fdcloser  rz   r  )topfdrl   r  r  r   rB   r   r  r   orig_stdirfddirfd_closeds               r(   r  r    s   Z 	'*:&&G	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'   
D#,..111  6= 6=7<<ej11	\\%\88F  #jjj??G!\'/::FF   GBHh???H	  	 	 	FFF	  (	="H
BK"-,GPUVVV$Hw''%AA N'xAAAHHUOOOO& H H H+/L#GBHhGGGGGH (,HHUZ>>>>>& H H H#GBHhGGGGGHN #* +1 #2 #2 2& N N N#GBGNHclnnMMMMMN ( HHHUOOOO& H H H#GBHhGGGGGHH< HHHUOOOO& H H H#GBHhGGGGGHH7  ; ; ;3<>>:::::;B=	%*U33333 = = =	8S\^^<<<<<=k6= 6=s  > 2> 6> 6> 
B/A==B0D2	/C992D.-D.2E E5M>AL	GL	4HL	HL	H0/L	02I%"L	$I%%L	)I887J2/L	1J22L	8K2LL	ML"!M"2M	MM	M2NNN552O+*O+r  c          	         	 t          j        d| |           |rd }n|d }t          rt          | t                    rt          j        |           } 	 t          j        | |          }n9# t          $ r,  |t
          j        | t          j	                               Y d S w xY w	 t          j
        | t
          j        t
          j        z  |          }d}n9# t          $ r,  |t
          j
        | t          j	                               Y d S w xY w	 t
          j                            |t          j        |                    rt!          || |           	 t          j        |           n:# t$          $ r- d} |t
          j        | t          j	                               Y nw xY wd}	 t          j        | |           n# t$          $ r+  |t
          j        | t          j	                               Y nQw xY w	 t%          d          # t$          $ r0  |t
          j        j        | t          j	                               Y nw xY w|sP	 t          j        |           d S # t$          $ r,  |t
          j        | t          j	                               Y d S w xY wd S # |sN	 t          j        |           w # t$          $ r+  |t
          j        | t          j	                               Y w w xY ww xY w|t+          d          	 t-          |           rt%          d          n># t$          $ r1  |t
          j        j        | t          j	                               Y d S w xY wt/          | |          S )	Nzshutil.rmtreec                      d S r3   r&   r   s    r(   r  zrmtree.<locals>.onerror  s    Dr'   c                        r3   r&   r  s    r(   r  zrmtree.<locals>.onerror  s    r'   r  FTr   z#dir_fd unavailable on this platform)rI   r   _use_fd_functionsri   bytesrF   fsdecoder   r5   r   r   r
  r  rl   rg   rG   r  r  r6   r  rz   r   r   r  )rl   ignore_errorsr  r	  r  fd	fd_closeds          r(   r   r     s    IotV,,, 	 	 	 			 	 	 6-dE"" 	%;t$$D	htF333GG 	 	 	GBHdCLNN333FF		r{R]:6JJJBII 	 	 	GBGT3<>>222FF		<w"66 BD'222<HRLLLL < < < $IGBHdCLNN;;;;;< !	<HT&11111 < < <GBHdCLNN;;;;;<B!"IJJJ B B BGBGND#,..AAAAAB  <<HRLLLLL < < <GBHdCLNN;;;;;;<< <9 <<HRLLLL < < <GBHdCLNN;;;;;<< %&KLLL	d## GEFFFG  	 	 	GBGND#,..999FF	 dG,,,s   A, ,2B"!B"&0C 2DDAJ E* )J *4F!J  F!!J 'F> =J >2G30J 2G33J 7H 7I =J ?I  J I 2JJK)J0/K)02K%"K)$K%%K)>L 7MMc                     	 t          j        |           } t           j        j        t           j        j        pdz   }t           j                            |                     |                    S N )rF   r   rl   sepaltsepr   rstrip)rl   r  s     r(   	_basenamer"    sO     9T??D
'+-2
.C7DKK,,---r'   c                    	 t          j        d| |           |}t          j                            |          rt          | |          r6t          j                            |           st          j        | |           d S t          j                            |t          |                     }t          j        
                    |          rt          d|z            	 t          j        | |           n^# t          $ rP t          j                            |           r>t          j        |           }t          j        ||           t          j        |            nt          j                            |           rt!          | |          rt          d| d|d          t#          |           sCt          j        | t          j                  s:t          j        |           r&t           j        dk    rt-          d| d| d          t/          | ||d	
           t1          |            n  || |           t          j        |            Y nw xY w|S )Nzshutil.movez$Destination path '%s' already existszCannot move a directory 'z' into itself 'z'.darwinz%Cannot move the non-empty directory 'z ': Lacking write permission to 'T)r   r   )rI   r   rF   rl   r   rs   rz   renamer   r"  r   r   r6   r   r   r  
_destinsrc_is_immutableaccessW_OKlistdirplatformPermissionErrorr   r   )rq   rr   r   real_dstr   s        r(   r   r   +  sJ   2 ImS#&&&H	w}}S KS# 	rw~~c':': 	 Ic3F 7<<Ys^^447>>(## 	K>IJJJ
	#x       7>># 	[%%FJvx(((IcNNNNW]]3 	#s## 3e(+SSS2 3 3 3c"" 4Ic273348:
34LH44%o),ccc'3 4 4 4 S(-"$ $ $ $3KKKKM#x(((IcNNN)* Os   C5 5EIIc                    t           j                            |           } t           j                            |          }|                     t           j        j                  s| t           j        j        z  } |                    t           j        j                  s|t           j        j        z  }|                    |           S r3   )rF   rl   ro   endswithr  
startswithrp   s     r(   r&  r&  m  s    
'//#

C
'//#

C<<$$ rw{<<$$ rw{>>#r'   c                     t          |           }t          j        t          j        g}t	          |d          o|j        |v S )Nr   )rw   rm   UF_IMMUTABLESF_IMMUTABLErk   r   )rq   r   immutable_statess      r(   r'  r'  v  s;    	sB)4+<=2z""Fr{6F'FFr'   c                     	 | d S 	 ddl m} n# t          $ r Y d S w xY w	  ||           }n# t          $ r d }Y nw xY w||d         S d S )Nr   )getgrnam   )grpr6  ImportErrorKeyError)r7   r6  results      r(   _get_gidr<  {      ,|t          tt$   ay4    
, ;;c                     	 | d S 	 ddl m} n# t          $ r Y d S w xY w	  ||           }n# t          $ r d }Y nw xY w||d         S d S )Nr   )getpwnamr7  )pwdr@  r9  r:  )r7   r@  r;  s      r(   _get_uidrB    r=  r>  gzipc	                    	 |d}	nRt           r	|dk    rd}	nBt          r	|dk    rd}	n2t          r	|dk    rd}	n"t          d                    |                    dd l}
|rd	|	z   nd}| d
z   |z   }t          j                            |          }|rMt          j        	                    |          s.||
                    d|           |st          j        |           ||
                    d           t                    t                    fd}|s|
                    |d|	z            }|}| t          j                            ||          }	 |                    |||           |                                 n# |                                 w xY w|t          j                            |          }|S )Nr  rC  gzbzip2bz2xzzCbad value for 'compress', or compression format not supported : {0}r   ..tarcreating %szCreating tar archivec                 H    | _         | _        | _        | _        | S r3   )gidgnameuiduname)tarinforM  groupownerrO  s    r(   _set_uid_gidz#_make_tarball.<locals>._set_uid_gid  s.    ?GK!GM?GK!GMr'   zw|%sr   )_ZLIB_SUPPORTED_BZ2_SUPPORTED_LZMA_SUPPORTED
ValueErrorr   tarfilerF   rl   dirnamer   infor   rB  r<  r   r   addr  ro   )	base_namebase_dircompressverbosedry_runrS  rR  loggerroot_dirtar_compressionrZ  compress_extarchive_namearchive_dirrT  tararcnamerM  rO  s        ``          @@r(   _make_tarballrk    s    	 =X//	 =H//	 =X-- ++16(+;+;= = 	= NNN,4<3(("Lv%4L'//,//K %27>>+66 %KK{333 	%K$$$ *+++
5//C
5//C         ll</)ABBw||Hh77H	GGHglG;;;IIKKKKCIIKKKKw|44s   F
 
F c                 :   	 dd l }| dz   }	t          j                            |           }
|
rMt          j                            |
          s.||                    d|
           |st          j        |
           ||                    d|	|           |se|                    |	d|j                  5 }t          j        	                    |          }| t          j        
                    ||          }t          j        	                    |          }|t          j        k    r.|                    ||           ||                    d|           t          j        |          D ]{\  }}}|}| t          j                            ||          }t          j        	                    |          }t          |          D ]p}t          j        
                    ||          }t          j        
                    ||          }|                    ||           ||                    d|           q|D ]}t          j        
                    ||          }t          j        	                    |          }t          j                            |          rNt          j        
                    ||          }|                    ||           ||                    d|           }	 d d d            n# 1 swxY w Y   |t          j                            |	          }	|	S )Nr   .ziprK  z#creating '%s' and adding '%s' to itw)compressionzadding '%s')zipfilerF   rl   r[  r   r\  r   ZipFileZIP_DEFLATEDnormpathr   curdirrW   walkrelpathsortedisfilero   )r^  r_  ra  rb  rc  rS  rR  rd  rp  zip_filenamerh  zfrj  dirpathdirnames	filenames
arcdirpathr7   rl   s                      r(   _make_zipfiler    s%   
 NNNv%L'//),,K %27>>+66 %KK{333 	%K$$$9 (	, 	, 	,  =__\3)0)=  ? ? 	=BDg&&x00G#7<<(;;w''11H")##7+++%KKx888020A0A = =,9$
'!#X!F!FJW--j99
"8,, 9 9D7<<66D gll:t<<GHHT7+++)M4888% = =D7<<66D7++D11Dw~~d++ ="$',,z4"@"@w///!-"KKt<<<==	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=< w|44s   2H0K//K36K3ri  )r`  Nzuncompressed tar file)r`  rC  zgzip'ed tar-filegztarzZIP filezip)r`  rF  zbzip2'ed tar-filebztar)r`  rH  zxz'ed tar-filexztarc                  v    	 d t                                           D             } |                                  | S )Nc                 (    g | ]\  }}||d          fS )r7  r&   )r   r7   registrys      r(   r   z'get_archive_formats.<locals>.<listcomp>:  s1     ) ) )~tXhqk" ) ) )r'   )_ARCHIVE_FORMATSitemssortformatss    r(   r   r   5  sC    ) )%%'') ) )GLLNNNNr'   r  c                 J   	 |g }t          |          st          d|z            t          |t          t          f          st          d          |D ]@}t          |t          t          f          rt          |          dk    rt          d          A|||dft          | <   d S )NzThe %s object is not callablez!extra_args needs to be a sequencer7  z+extra_args elements are : (arg_name, value)F)callable	TypeErrorri   tupler   lenr  )r7   function
extra_argsdescriptionelements        r(   r   r   ?  s     
H D7(BCCCj5$-00 =;<<< K K'E4=11 	KS\\A5E5EIJJJ 6F '
KGTr'   c                     t           | = d S r3   )r  r   s    r(   r   r   T  s    r'   c	                 t   	 t          j        d| |||           	 t          |         }	n!# t          $ r t	          d|z            d w xY w||||d}
|	d         }|	d         D ]
\  }}||
|<   |t
          j        }|	d         }d }|t          j        |          j        }t          j	        |          st          t          j        d|          |rt          j        |           } ||
d<   n`t          j                    }||                    d	|           t
          j                            |           } |st          j        |           	  || |fi |
}|,||                    d
|           t          j        |           n4# |-||                    d
|           t          j        |           w w xY w|S )Nzshutil.make_archivezunknown archive format '%s')rb  rc  rS  rR  r         zNot a directoryrd  zchanging into '%s'zchanging back to '%s')rI   r   r  r:  rY  rF   rt  rm   r   r   NotADirectoryErrorr:   ENOTDIRr   getcwddebugrl   ro   chdir)r^  r   rd  r_  ra  rb  rS  rR  rc  format_infor   funcargvalsupports_root_dirsave_cwdstmdr8   s                     r(   r   r   W  s     I#Y(KKKK&v. K K K6?@@dJK !Fu. .F q>DN  Ss9#AHwx  (|D!! 	Q$U]4ExPPP 
	#	),,I!)F:y{{H!18<<<	22I #"""4	866v66!4h???HX !4h???HX  
 Os   ) A
F 1F5c                  v    	 d t                                           D             } |                                  | S )Nc                 6    g | ]\  }}||d          |d         fS )r   r  r&   )r   r7   r\  s      r(   r   z&get_unpack_formats.<locals>.<listcomp>  s7     ( ( (JD$d1gtAw' ( ( (r'   )_UNPACK_FORMATSr  r  r  s    r(   r   r     sC    
( ($$&&( ( (GLLNNNNr'   c                     	 i }t                                           D ]\  }}|d         D ]}|||<   | D ]"}||v rd}t          ||||         fz            #t          |          st	          d          d S )Nr   z!%s is already registered for "%s"z*The registered function must be a callable)r  r  r/   r  r  )	
extensionsr  r  existing_extensionsr7   r\  ext	extensionmsgs	            r(   _check_unpack_optionsr    s    5%++-- , ,
d7 	, 	,C'+$$	,   H H	+++5Cy':9'E'G !G H H H ,
 H FDEEEF Fr'   c                 N    	 |g }t          |||           ||||ft          | <   d S r3   )r  r  )r7   r  r  r  r  s        r(   r   r     s?     
*h
;;;&*kIODr'   c                     	 t           | = d S r3   )r  r   s    r(   r   r     s    4r'   c                     	 t           j                            |           }t           j                            |          st          j        |           d S d S r3   )rF   rl   r[  r   r   )rl   r[  s     r(   _ensure_directoryr    sN    ;good##G7==!! 
G r'   c                    	 dd l }|                    |           st          d| z            |                    |           }	 |                                D ]}|j        }|                    d          sd|v r#t          j        j	        |g|
                    d          R  }|sPt          |           |                    d          sf|                    |d          5 }t          |d          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   	 |                                 d S # |                                 w xY w)Nr   z%s is not a zip file/z..rr   )rp  
is_zipfiler-   rq  infolistr8   r0  rF   rl   r   splitr  r/  r   r   r  )	r8   extract_dirrp  r  r\  r7   
targetpathsourcetargets	            r(   _unpack_zipfiler    s   NNNh'' ;.9:::
//(
#
#CLLNN 	0 	0D=D s## tt||kDDJJsOODDDJ j)))==%% 0XXdC(( 0FZ..028///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0$ 					sU   BE	 !D&2DD&DD&DD&E	 &D*	*E	 -D*	.E	 	ErU  c                   	 dd l }	 |                    |           }n # |j        $ r t          d| z            w xY w	 |                    ||           |                                 d S # |                                 w xY w)Nr   z/%s is not a compressed or uncompressed tar filerU  )rZ  r   TarErrorr-   
extractallr  )r8   r  r   rZ  tarobjs        r(   _unpack_tarfiler    s    NNNJh'' J J J=HJ J 	JJ+f555s    :A+ +BrJ  rm  )ri  r  z.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzc                     t                                           D ]+\  }}|d         D ]}|                     |          r|c c S ,d S )Nr   )r  r  r/  )r8   r7   r\  r  s       r(   _find_unpack_formatr    sh    %++--  
da 	 	I  ++ 	 4r'   c                ~   	 t          j        d| ||           |t          j                    }t          j        |          }t          j        |           } |i }nd|i}|i	 t
          |         }n1# t          $ r$ t          d                    |                    d w xY w|d         } || |fi t          |d                   | d S t          |           }|"t          d                    |                     t
          |         d         }t          t
          |         d                   |z  } || |fi | d S )Nzshutil.unpack_archiver   zUnknown unpack format '{0}'r  r7  zUnknown archive format '{0}')rI   r   rF   r  r   r  r:  rY  r   dictr  r-   )r8   r  r   r   filter_kwargsr  r  r   s           r(   r   r     st   " I%xfEEEikk)K((Ky""H~!6*	U)&1KK 	U 	U 	U:AA&IIJJPTT	U 1~X{LLd;q>&:&:LmLLLLL %X..>:AA(KKLLLv&q)of-a011MAX{--f-----s   "A0 0.Bstatvfs
disk_usageusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytesc                     	 t          j        |           }|j        |j        z  }|j        |j        z  }|j        |j        z
  |j        z  }t          |||          S r3   )rF   r  f_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)rl   r   freetotaluseds        r(   r  r  V  s[    	
 Z{R[(bk)bj(BK7 d333r'   c                 ^    	 t          j        |           \  }}||z
  }t          |||          S r3   )r   _getdiskusager  )rl   r  r  r  s       r(   r  r  g  s8    	
 &t,,tt| d333r'   c                    	 t          j        d| ||           ||t          d          |}|}|d}nHt          |t                    r3t          |          }|"t          d                    |                    |d}nHt          |t                    s3t          |          }|"t          d                    |                    t          j        | ||           d S )Nzshutil.chownzuser and/or group must be setzno such user: {!r}zno such group: {!r})rI   r   rY  ri   r   rB  LookupErrorr   intr<  rF   r   )rl   userrR  _user_groups        r(   r   r   r  s    
 IndD%000|8999EF |	D#		 A=299$??@@@}s## C%>3::5AABBBHT5&!!!!!r'   P      c                 J   	 	 t          t          j        d                   }n# t          t          f$ r d}Y nw xY w	 t          t          j        d                   }n# t          t          f$ r d}Y nw xY w|dk    s|dk    r	 t          j        t          j                                                  }n1# t          t          t          f$ r t          j        |           }Y nw xY w|dk    r|j        p| d         }|dk    r|j        p| d         }t          j        ||f          S )NCOLUMNSr   LINESr  )r  rF   environr:  rY  r   rI   
__stdout__r4   AttributeErrorr6   terminal_sizecolumnslines)fallbackr  r  sizes       r(   r   r     sI   &bj+,,j!   BJw'((j!    !||uzz	.'(=(=(?(?@@DD
G4 	. 	. 	. #H--DDD	. a<<l1hqkGA::J-(1+EWe,---s/   # 99A A32A30B4 4+C"!C"c                     t           j                            |           o4t          j        | |          ot           j                            |            S r3   )rF   rl   r   r(  r   )rv   r   s     r(   _access_checkr    sD    GNN2 &29R#6#6 &GMM"%%%'r'   c                     	 t           j                                       rt           |          r S d S t	           t
                    }|[t           j                            dd           }|9	 t          j        d          }n## t          t          f$ r t           j        }Y nw xY w|sd S |rFt          j        |          }|                    t          j        t           j                            }n3t          j        |          }|                    t           j                  }t           j        dk    rt           j        }|rt          j        |          }||vr|                    d|           t          j        d          pt*          }d |                    t           j                  D             }|rd |D             }t-           fd|D                       r g}n fd	|D             }n g}t/                      }|D ]u}	t           j                            |	          }
|
|vrP|                    |
           |D ]8}t           j                            |	|          }t          ||          r|c c S 9vd S )
NPATHCS_PATHwin32r   PATHEXTc                     g | ]}||S r&   r&   r   r  s     r(   r   zwhich.<locals>.<listcomp>  s    JJJ3cJ3JJJr'   c                 6    g | ]}t          j        |          S r&   )rF   fsencoder  s     r(   r   zwhich.<locals>.<listcomp>  s"    ;;;Cr{3'';;;r'   c              3      K   | ]=}                                                     |                                           V  >d S r3   )lowerr/  r   r  cmds     r(   	<genexpr>zwhich.<locals>.<genexpr>  sA      DDSsyy{{##CIIKK00DDDDDDr'   c                     g | ]}|z   S r&   r&   r  s     r(   r   zwhich.<locals>.<listcomp>  s    2223S3Y222r'   )rF   rl   r[  r  ri   r  r  getconfstrr  rY  defpathr  r  pathsepr  rI   r+  rt  insertgetenv_WIN_DEFAULT_PATHEXTanyr   rn   r]  r   )r  r   rl   	use_bytesrt  pathext_sourcepathextfilesseendirnormdirthefiler7   s   `            r(   r   r     s    
ws d## 	Jt3&&I|z~~fd++<"z),,"J/ " " "z"  t &{4  zz"+bj1122{4  zz"*%%
|w 	)[((FKK6""" 9--E1EJJ."6"6rz"B"BJJJ 	<;;7;;;G
 DDDDGDDDDD 	3EEE2222'222EE 55D    '""3''$HHW     w||C11 t,,  KKKKK 4s   0B B%$B%)r   )F)FN)rC  r   r   NNNN)r   r   NNNNr  )NNr   r   NNN)NN)r  )frF   rI   rm   r   collectionsr:   zlibrV  r9  rG  rW  lzmarX  r7   r   r   r   rb   rk   r+  r0  rM   r   r  __all__r6   r   r    r   r   r-   r5   r/   r1   rC   rT   r`   r   rs   rw   r{   r	   r
   r   r   r   r   r   r   r   stat_resultr   r   r  r  r   r  r  supports_dir_fdr   supports_fdr   r  r   avoids_symlink_attacksr"  r   r&  r'  r<  rB  rk  r  r  r   r   r   r   r   r  r   r   r  r  r  r  r  r   r   
namedtupler  r  __doc__r  r  r  r   r   r  F_OKX_OKr   r&   r'   r(   <module>r     s	   
			 



       KKKOO   OOOJJJNN   NNNKKKOO   OOO 7d? 7gLLLL III&5{{I 72z**Os|/F/Fw/O/O 7775,77 ?   	 	 	 	 	G 	 	 	@ @ @ @ @E @ @ @; ; ; ; ;w ; ; ;6 6 6 6 6 6 6 60 0 0 0 0 0 0 0& & & & &I & & &    	   
     (> > >@ .:    &   4 4 4$E E ER R R +/ > > > > >@ +/ . . . . .2 72{ 04      0   +/ H H H H HT '+     $ (,     "
 
 
 7<@ @ @ @D !&d%&+5.2 .2 .2 .2` 72>/00 $       $ $ $0 0 0>>= >= >=@ grw	28<'( <Z2>1< W ;; 
M-d M- M- M- M- M-b !2 . . .$ "' @ @ @ @D  G G G
  $  $ LM@DD D D DL ;<@D7 7 7 7~ 
m01%t- 
  D!.1E0F 2D!:W,b*dCU ;!.1F0G 3T!;W  8!.1C0D 0$!8W  H H H H*   KL;?= = = =@	 	 	F F F$ CG')J J J J,      < 6:     ( h-DEhZ8 
  4!*F 3_b 2 4OG  5!+W 5 3 5OG  2!*F 3_b 0 2OG  ..d .. .. .. .. ..b 72y !4NN<   ..w8IJJ&<#%:"%:"
4 
4 
4 
4  4NN<   ..w8IJJ4 4 4" " " "@+. +. +. +.b' ' '
 Gbg%D N N N N N Ns-   # --9 AAA AA