
    daf                     T   	 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 dlZ[dZ	 d dl
Z
[
dZ	 d dlZ[dZ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j$                  dk(  rd dlZndZerdndZ ee d	      xr ej$                  j-                  d
      aexr	  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&dqd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+Z0d, Z1	 drd-Z2dde0ddfd.Z3 ee jh                  d/      rd0 Z5nd1 Z5d2 Z6d3 Z7e jp                  e j                  e jr                  e jt                  he jv                  k  xr2 e jx                  e jz                  v xr e j                  e j|                  v Z?dsddd4d5Z@e?e@_A        d6 ZBe0fd7ZCd8 ZDd9 ZEd: ZFd; ZG	 	 dtd<ZH	 	 dud=ZIdeH_J        deI_J        d>eHd?gd@fiZKereHdAgdBfeKdC<   eIg dDfeKdE<   er	eHdFgdGfeKdH<   er	eHdIgdJfeKdK<   dL ZLdvdMZMdN ZN	 	 dwdOZOdP ZPdQ ZQ	 	 dvdRZRdS ZSdT ZTdU ZUddVdWZVdXgeVg d@fdYgeUg dDfdZZWerd[d\geVg dBfeWdC<   erd]d^geVg dGfeWdH<   erd_d`geVg dJfeWdK<   da ZXdxddVdbZY ee dc      r[ej                  dd        ej                  dedf      Z\dge\j                  _^        dhe\j                  _^        die\j                  _^        dj Zan)er'ej                  dd        ej                  dedf      Z\dk ZadxdlZbdydmZcdn Zddo Zee j                  e j                  z  dfdpZhy# e	$ r dZY dw xY w# e	$ r dZY jw xY w# e	$ r dZY pw xY w)z    NTFntposixwin32i   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y)r   N__name__
__module____qualname__     !/root/Python-3.12.4/Lib/shutil.pyr   r   C   s    r(   r   c                       e Zd Zy)r!   Nr#   r'   r(   r)   r!   r!   F   s    ?r(   r!   c                       e Zd Zy)r   Nr#   r'   r(   r)   r   r   I   s    ;r(   r   c                       e Zd Zy)r   Nr#   r'   r(   r)   r   r   M   s    5r(   r   c                       e Zd Zy)	ReadErrorNr#   r'   r(   r)   r.   r.   P   s    /r(   r.   c                       e Zd Zy)RegistryErrorNr#   r'   r(   r)   r0   r0   S   s    &r(   r0   c                       e Zd Zy)_GiveupOnFastCopyNr#   r'   r(   r)   r2   r2   W   s    r(   r2   c                    	 	 | j                         }|j                         }	 t        j                  |||       y # t        $ r}t        |      d }~ww xY w# t
        $ ra}| j                  |_        |j                  |_        |j                  t        j                  t        j                  hv rt        |      |d d }~ww xY wN)fileno	Exceptionr2   r   r   OSErrornamefilename	filename2errnoEINVALENOTSUP)fsrcfdstflagsinfdoutfderrs         r)   _fastcopy_fcopyfilerD   \   s    %{{} ue,	  %$$%
   yy		99u}}55#C((4 s-    < A 	AAA	C!AB==Cc                    	 	 | j                         }|j                         }	 t        t	        j
                  |      j                  d      }t        j                  dk  rt        |d      }d}	 	 t	        j                  ||||      }|dk(  ry ||z  }%# t        $ r}t        |      d }~ww xY w# t        $ r d}Y pw xY w# 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   F)r5   r6   r2   maxosfstatst_sizer7   sysmaxsizeminr   r8   r9   r:   r;   ENOTSOCK_USE_CP_SENDFILEENOSPClseekSEEK_CUR)r>   r?   rA   rB   rC   	blocksizeoffsetsents           r)   _fastcopy_sendfilerU   p   s[   %{{}..8	
 {{W	7+	F
	;;udFI>D, qydNF5 %  %$$%  	  	99CL IICMyyENN* $) ',,yyELL(t# {rxxq"++>!C',,I'	sA    B )B0 0C 	B-B((B-0B>=B>	E5
B&E00E5c                    	 | j                   }|j                  }t        t        |            5 }	  ||      }|sn%||k  r|d | 5 } ||       d d d        n	 ||       0d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr4   )readintowrite
memoryview	bytearray)r>   r?   lengthfsrc_readinto
fdst_writemvnsmvs           r)   _copyfileobj_readintora      s    
 MMMJ	If%	& 
"b!AVV $ssO$2 
 
$ $
 
s#   A5	A)A5)A2	.A55A>c                     	 |st         }| j                  }|j                  } ||      x}r ||        ||      x}ry y r4   )COPY_BUFSIZEreadrX   )r>   r?   r[   	fsrc_readr]   bufs         r)   r	   r	      sH    G		IJ6"
"#
"3 6"
"#
"r(   c                    t        | t        j                        r\t        t        j                  d      rB	 t        j                  j                  | j                         t        j                  |            S t        t        j                  d      r!	 t        j                  j                  | |      S t        j                  j                  t        j                  j                  |             t        j                  j                  t        j                  j                  |            k(  S # t        $ r Y yw xY w# t        $ r Y yw xY w)NsamestatFsamefile)
isinstancerG   DirEntryhasattrpathrh   statr7   ri   normcaseabspathsrcdsts     r)   	_samefilert      s    #r{{#(D	77##CHHJ== rww
#	77##C--
 GGRWW__S12GGRWW__S123 4  		  		s$   A D+ D: +	D76D7:	EEc                     t        | t        j                        r| j                         S t        j                  |       S r4   )rj   rG   rk   rn   fns    r)   _statrx      s(    "2r{{32779DDr(   c                     t        | t        j                        r| j                         S t        j                  j                  |       S r4   )rj   rG   rk   
is_symlinkrm   islinkrv   s    r)   _islinkr|      s-    (R[[92==?Qrww~~b?QQr(   follow_symlinksc          
         	 t        j                  d| |       t        | |      rt        dj	                  | |            d}t        | |g      D ]  \  }}	 t        |      }t        j                  |j                        r6t        |t        j                        r|j                  n|}t        d|z        t        sn|dk(  st|j                   } |s6t%        |       r+t        j&                  t        j(                  |       |       |S t+        | d      5 }	 t+        |d      5 }t,        r0	 t/        ||t0        j2                         |cd d d        cd d d        S t6        r!	 t9        ||       |cd d d        cd d d        S t        r4|dkD  r/t;        ||t=        |t>                     |cd d d        cd d d        S tA        ||       d d d        d d d        |S # t"        $ r Y w xY w# t4        $ r Y 9w xY w# t4        $ r Y Hw xY w# 1 sw Y   AxY w# tB        $ r4}	t        j                  jE                  |      stG        d|       |	 d }	~	ww xY w# 1 sw Y   |S xY w)Nzshutil.copyfilez{!r} and {!r} are the same filer   z`%s` is a named piperbwbzDirectory does not exist: )$rJ   auditrt   r!   format	enumeraterx   rn   S_ISFIFOst_moderj   rG   rk   rm   r   _WINDOWSrI   r7   r|   symlinkreadlinkopen_HAS_FCOPYFILErD   r   _COPYFILE_DATAr2   rN   rU   ra   rL   rc   r	   IsADirectoryErrorexistsFileNotFoundError)
rr   rs   r~   	file_sizeirw   str>   r?   es
             r)   r
   r
      sH    IIc*c=DDS#NOOIC:& '2	'rB }}RZZ( *2r{{ ;RWW&'='BCCAFJJ	' ws|


2;;s#S)D JA #t_ 	#t_ ,%!/dE<P<PQ#&, ,	 	 *!.tT:#&, ,	 	& "i!m-dD#i:VW"', ,	 	.  d++,	@ J]  		,  1 ! !  1 ! !, ,0 % ww~~c*+.H,NOUVV	5	@ Js   GIH#H+G)	HH!G8.	H'H(	H;HH	G&%G&)	G52H4G55H8	HHHHH	H	I/IIIIc                   	 t        j                  d| |       |st        |       rt        j                  j                  |      rft        j                  dk(  r!t        j                  t        j                  }}nt        t        d      r!t        j                  t        j                  }}njy t        j                  dk(  r@t        j                  j                  |      r!t        j                  j                  |d      }t        t        j                  }} ||       } ||t        j                  |j                               y )Nzshutil.copymoder   lchmodTstrict)rJ   r   r|   rG   rm   r{   r8   lstatchmodrl   r   realpathrx   rn   S_IMODEr   )rr   rs   r~   	stat_func
chmod_funcr   s         r)   r   r   &  s     IIc*ws|s0C77d?$&HHbhhzIR"$&HHbiizI77d?rww~~c2''""3t"4C %rxx:		3BsDLL,-r(   	listxattrc                ,   	 	 t        j                  | |      }|D ]4  }	 t        j                  | ||      }t        j                  ||||       6 y # t        $ rF}|j                  t        j                  t        j
                  t        j                  fvr Y d }~y d }~ww xY w# t        $ rd}|j                  t        j                  t        j                  t        j
                  t        j                  t        j                  fvr Y d }~d }~ww xY wNr}   )rG   r   r7   r;   r=   ENODATAr<   getxattrsetxattrEPERMEACCES)rr   rs   r~   namesr   r8   values          r)   
_copyxattrr   @  s    		LLoFE
  	DCOCuoN		  	wwu}}emmU\\JJ	  775;;u}}#(<<#? ??s/   A 1B&	B#<BB#&	D/ADDc                       y r4   r'   argskwargss     r)   r   r   X      r(   c                  
 	 t        j                  d| |       d d dd
|xs- t        |       xr t        j                  j                  |       }|r
fd}n
fd}t        | t        j                        r| j                  |      }n  |d      | |      }t        j                  |j                        }  |d      ||j                  |j                  f|       t        | ||        |d	      }t        j                  d
k(  rF|rAt        j                  j                  |      r%t        j                  j                  |d      }nd }	  ||||       t#        |d      r	   |d      ||j$                  |       y y # t         $ r Y 5w xY w# t&        $ rB}dD ]2  }	t#        t(        |	      s|j(                  t+        t(        |	      k(  s2 n  Y d }~y d }~ww xY w)Nzshutil.copystat)nsr~   c                      y r4   r'   )r   r~   r   s      r)   _nopzcopystat.<locals>._nopi  r   r(   c                 &    t        t        |       S r4   )getattrrG   )r8   r   s    r)   lookupzcopystat.<locals>.lookupp  s    2tT**r(   c                 R    t        t        |       }|t        j                  v r|S S r4   )r   rG   supports_follow_symlinks)r8   rw   r   s     r)   r   zcopystat.<locals>.lookupu  s)    T4(BR000	Kr(   r}   rn   utimer   r   Tr   c                  (    t        j                  |   y r4   )rG   r   r   s     r)   _chmodzcopystat.<locals>._chmod  s    $r(   st_flagschflags)
EOPNOTSUPPr=   )rJ   r   r|   rG   rm   r{   rj   rk   rn   r   r   st_atime_nsst_mtime_nsr   r8   r   NotImplementedErrorrl   r   r7   r;   r   )rr   rs   r~   followr   r   moder   whyrC   r   s             @r)   r   r   [  s   
 IIc*T  JWS\%IbggnnS6I JF	+
	 #r{{#XXfX-VF^C8<<

#DF7OCR^^R^^<  sC0G_F	ww$ww~~c"gg&&s4&8 sD&1 r:	F9c2;;G    	  	. 5#&399s8K+K  	s6   F *F 	FF	G!G5GGG!c                    	 t         j                  j                  |      r=t         j                  j                  |t         j                  j	                  |             }t        | ||       t        | ||       |S r   )rG   rm   isdirjoinbasenamer
   r   )rr   rs   r~   s      r)   r   r     sY    
 
ww}}Sggll3 0 0 56S#7S#7Jr(   c                   	 t         j                  j                  |      r=t         j                  j                  |t         j                  j	                  |             }t        t        d      rit        j                  |       }t        j                  |      }t        j                  }|s|t        j                  z  }	 t        j                  |||       |S t        | ||       t!        | ||       |S # t        $ rI}|j                  t        j                  k(  r|sn|j                  t        j                  k(  rn Y d }~kd }~ww xY w)N	CopyFile2r}   )rG   rm   r   r   r   rl   _winapifsdecode%COPY_FILE_ALLOW_DECRYPTED_DESTINATIONCOPY_FILE_COPY_SYMLINKr   r7   winerrorERROR_PRIVILEGE_NOT_HELDERROR_ACCESS_DENIEDr
   r   )rr   rs   r~   src_dst_r@   excs          r)   r   r     s   	 
ww}}Sggll3 0 0 56w${{3{{3==W333E	dD%0J S#7S#7J  	 @ @@' !<!<< 	s   >C5 5	E>?EEc                       	  fd}|S )Nc                 v    g }D ]'  }|j                  t        j                  ||             ) t        |      S r4   )extendfnmatchfilterset)rm   r   ignored_namespatternpatternss       r)   _ignore_patternsz)ignore_patterns.<locals>._ignore_patterns  s=     	AG  w!?@	A=!!r(   r'   )r   r   s   ` r)   r   r     s    &"
 r(   c           
      X   |5 |t        j                  |      | D cg c]  }|j                   c}      }	nd}	t        j                  ||       g }
|t        u xs |t
        u }| D ]|  }|j                  |	v rt         j                  j                  ||j                        }t         j                  j                  ||j                        }|r|n|}	 |j                         }|rDt         j                  dk(  r1|j                  d      }|j                  t        j                  k(  rd}|rt        j                  |      }|r&t        j                  ||       t        |||        nzt         j                  j                  |      s|r&|j!                         rt#        |||||||       n5 |||       n+|j!                         rt#        |||||||       n	 |||        	 t        ||       |
rt%        |
      |S c c}w # t$        $ r)}|
j'                  |j(                  d          Y d }~d }~wt*        $ r(}|
j-                  ||t/        |      f       Y d }~d }~ww xY w# t*        $ r4}t1        |dd       |
j-                  ||t/        |      f       Y d }~d }~ww xY w)Nr'   )exist_okr   Fr}   r   r   )rG   fspathr8   makedirsr   r   rm   r   rz   rn   st_reparse_tagIO_REPARSE_TAG_MOUNT_POINTr   r   r   r   is_dirr   r   r   r   r7   appendstrr   )entriesrr   rs   symlinksignorecopy_functionignore_dangling_symlinksdirs_exist_okxr   errorsuse_srcentrysrcentrysrcnamedstnamesrcobjrz   r   linktorC   r   s                        r)   	_copytreer     sR   ryy~/H1/HIKKm,F E)B]d-BL ,8==M)'',,sHMM2'',,sHMM2)w&	8!,,.Jbggo !e<''4+J+JJ!&JW- JJvw/VW(lK 77>>&16N ( (F!.0H!.0 &fg6"(FM1=B fg.M,8Z0c
 FmJ{ 0Ib  	'MM#((1+&& 	8MM7GSX677	8  03
D)1MM3SX./0sI   H
B6HAH(I, 	I)H55I)I$$I),	J)5*J$$J)c           
          	 t        j                  d| |       t        j                  |       5 }t	        |      }d d d        t        | ||||||      S # 1 sw Y   xY w)Nzshutil.copytree)r   rr   rs   r   r   r   r   r   )rJ   r   rG   scandirlistr   )	rr   rs   r   r   r   r   r   itrr   s	            r)   r   r   -  sf    %L IIc*	C Cs)W#3"-.F#02 2 s   AAst_file_attributesc                    	 t        j                  |       }t        j                  |j                        xs< |j
                  t        j                  z  xr |j                  t        j                  k(  S # t        $ r Y yw xY w)NF)
rG   r   rn   S_ISLNKr   r   FILE_ATTRIBUTE_REPARSE_POINTr   r   r7   )rm   r   s     r)   _rmtree_islinkr   ^  sr    	$BLL, K&&)J)JJ J&&$*I*IIL  		s   A1A4 4	B ?B c                 @    t         j                  j                  |       S r4   )rG   rm   r{   )rm   s    r)   r   r   g  s    ww~~d##r(   c                    fd}t        j                  | d|t         j                        }|D ]  \  }}}|D ]8  }t         j                  j	                  ||      }	 t        j
                  |       : |D ]8  }t         j                  j	                  ||      }	 t        j                  |       :  	 t        j
                  |        y # t        $ r"}	 t         j
                  ||	       Y d }	~	d }	~	ww xY w# t        $ r"}	 t         j                  ||	       Y d }	~	d }	~	ww xY w# t        $ r"}	 t         j
                  | |	       Y d }	~	y d }	~	ww xY w)Nc                 J     t         j                  | j                  |        y r4   )rG   r   r9   )rC   onexcs    r)   onerrorz_rmtree_unsafe.<locals>.onerrorl  s    bjj#,,,r(   F)topdownr  followlinks)rG   walk_walk_symlinks_as_filesrm   r   rmdirr7   unlink)
rm   r  r  resultsdirpathdirnames	filenamesr8   fullnamerC   s
    `        r)   _rmtree_unsafer  k  s   -ggdE7HbHbcG(/ 0$9 	/Dww||GT2H/"	/  	0Dww||GT2H0		(#	00#
  /bhh#../  0bii3//0  #bhhc""#sH   C
C84D& 
	C5C00C58	D#DD#&	E/EEc                    | j                         \  }}}}||n|j                  }	 |t        j                  u rt        j                  |       y |t        j                  u rt        j                  ||       y |t        j
                  ||      }n|j                  d      }t        j                  }t        j                  |t        j                  t        j                  z  |      }t        j                  j                  }	 t        j                  j                  |t        j                  |            st        d      | j                  t        j                  |||f       | j                  t        j                  |||f       t        j                   }t        j                   |      5 }	t#        |	      }
d d d        
D ]  }t        j                  j%                  ||j                        }	 |j'                  d      r$| j                  t        j
                  |||f       d	 	 t        j(                  |j                  |        y # | j                  t        j                  |||f       w xY w# 1 sw Y   xY w# t        $ r Y dw xY w# t        $ r"} |t        j(                  ||       Y d }~d }~ww xY w# t        $ r}||_         ||||       Y d }~y d }~ww xY w)N)dir_fdFr}   %Cannot call rmtree on a symbolic link)popr8   rG   closer  r   rn   r   O_RDONLY
O_NONBLOCKrm   r{   rh   rH   r7   r   r   r   r   r   r  r9   )stackr  funcdirfdrm   
orig_entryr8   orig_sttopfd
scandir_itr   entryr  rC   s                 r)   _rmtree_safe_fdr    sA    %*IIK!D%z%4:??D.288HHUO288HHT%(
 hhtE2G ooeo<GwwbkkBMM9%Hww~~	>77##GRXXe_=EFFLL"((E4<=LL"((E4<=zzZZ 	'*:&G	' 	0Eww||D%**5H<<<6LL"((E8U!CD 70		%**U3	0 LL"((E4<=	' 	'    0bii3//0 dD#s   'K )K 9BK A!I (AK 0I8<7K 45J)K ,!JK %I55K 8J=K 	JK JK 	J>J94K 9J>>K 	K%
K  K%)r  r  c                   	 t        j                  d| |       |rd }n|d }n|d }nfd}t        rt        | t              rt        j                  |       } t
        j                  || d fg}	 |rt        ||       |r|rB|j                         \  }}} }|t
        j                  ur*	 t        j                  |       |rAy y |t        d      	 t        |       rt        d      	 t!        | |      S # t        $ r"}	 |t
        j                  | |	       Y d }	~	\d }	~	ww xY w# |rq|j                         \  }}} }|t
        j                  ur*	 t        j                  |       n.# t        $ r"}	 |t
        j                  | |	       Y d }	~	nd }	~	ww xY w|rpw w xY w# t        $ r,}	 |t
        j                  j                  | |	       Y d }	~	y d }	~	ww xY w)Nzshutil.rmtreec                       y r4   r'   r   s    r)   r  zrmtree.<locals>.onexc  s    r(   c                        r4   r'   r!  s    r)   r  zrmtree.<locals>.onexc  s    r(   c                        r4   r'   r!  s    r)   r  zrmtree.<locals>.onexc  s    r(   c                  ^    | \  }}}|d}nt        |      ||j                  f} |||      S )N)NNN)type__traceback__)r   r  rm   r   exc_infor  s        r)   r  zrmtree.<locals>.onexc  s=    "&dC;/H#Cy#s/@/@@HtT844r(   z#dir_fd unavailable on this platformr  )rJ   r   _use_fd_functionsrj   bytesrG   r   r   r  r  r  r7   r   r   rm   r{   r  )
rm   ignore_errorsr  r  r  r  r  fdr  rC   s
     `       r)   r   r     s   ( IIotV,		U]		?5 dE";;t$D((FD$/0	/u-  (-		%b$rxx'/HHRL  %&KLL	d#EFF $ dE**  /"((D#../ (-		%b$rxx'/HHRL /"((D#../   	"''..$,	sl   6D+ 2C= F# =	D(D##D(++F E-,F -	F6FF FF F #	G,"GGc                     	 t        j                  |       } t         j                  j                  t         j                  j                  xs dz   }t         j                  j                  | j                  |            S N )rG   r   rm   sepaltsepr   rstrip)rm   r/  s     r)   	_basenamer2    sS     99T?D
''++-2
.C77DKK,--r(   c                 ~   	 t        j                  d| |       |}t        j                  j	                  |      rt        | |      r6t        j                  j                  |       st        j                  | |       y t        j                  j                  |t        |             }t        j                  j                  |      rt        d|z        	 t        j                  | |       |S # t        $ rG t        j                  j                  |       rCt        j                  |       }t        j                  ||       t        j                  |        Y |S t        j                  j	                  |       rt!        | |      rt        d| d|d      t#        |       sLt        j$                  | t        j&                        s:t        j(                  |       r%t         j*                  dk(  rt-        d| d| d      t/        | ||d	
       t1        |        Y |S  || |       t        j                  |        Y |S w xY w)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   )rJ   r   rG   rm   r   rt   r{   renamer   r2  r   r   r7   r   r   r  
_destinsrc_is_immutableaccessW_OKlistdirplatformPermissionErrorr   r   )rr   rs   r   real_dstr   s        r)   r   r   %  s   2 IImS#&H	ww}}SS#rww~~c': IIc3 77<<Ys^477>>(#>IJJ
		#x , O+  77>>#[[%FJJvx(IIcN" O! WW]]3#s#(+S2 3 3c"IIc2773

3LLH4%),c'3 4 4 S(-"$3K O #x(IIcNO+s    C+ +A)H<C H<H<;H<c                    t         j                  j                  |       } t         j                  j                  |      }| j                  t         j                  j                        s| t         j                  j                  z  } |j                  t         j                  j                        s|t         j                  j                  z  }|j                  |       S r4   )rG   rm   rp   endswithr/  
startswithrq   s     r)   r6  r6  g  s    
''//#
C
''//#
C<<$rww{{<<$rww{{>>#r(   c                     t        |       }t        j                  t        j                  g}t	        |d      xr |j
                  |v S )Nr   )rx   rn   UF_IMMUTABLESF_IMMUTABLErl   r   )rr   r   immutable_statess      r)   r7  r7  p  s>    	sB))4+<+<=2z"Fr{{6F'FFr(   c                 z    	 | y 	 ddl m} 	  ||       }||d   S y # t        $ r Y y w xY w# t        $ r d }Y $w xY w)Nr   )getgrnam   )grprF  ImportErrorKeyError)r8   rF  results      r)   _get_gidrL  u  a    ,| $ ay  
      , 	))::c                 z    	 | y 	 ddl m} 	  ||       }||d   S y # t        $ r Y y w xY w# t        $ r d }Y $w xY w)Nr   )getpwnamrG  )pwdrP  rI  rJ  )r8   rP  rK  s      r)   _get_uidrR    rM  rN  c	                 0   	 |d}	nDt         r|dk(  rd}	n6t        r|dk(  rd}	n(t        r|dk(  rd}	nt        dj	                  |            dd l}
|rd	|	z   nd}| d
z   |z   }t        j                  j                  |      }|rJt        j                  j                  |      s+||j                  d|       |st        j                  |       ||j                  d       t              t              fd}|s^|
j                  |d|	z        }|}| t        j                  j                  ||      }	 |j!                  |||       |j#                          |t        j                  j%                  |      }|S # |j#                          w xY w)Nr.  gzipgzbzip2bz2xzzCbad value for 'compress', or compression format not supported : {0}r   ..tarcreating %szCreating tar archivec                 H    | _         | _        | _        | _        | S r4   )gidgnameuiduname)tarinfor]  groupownerr_  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   tarfilerG   rm   dirnamer   infor   rR  rL  r   r   addr  rp   )	base_namebase_dircompressverbosedry_runrc  rb  loggerroot_dirtar_compressionrj  compress_extarchive_namearchive_dirrd  tararcnamer]  r_  s        ``          @@r)   _make_tarballr{    sw    	X/	H/	X- ++16(+;= 	= ,43("Lv%4L''//,/K277>>+6KK{3KK$ *+
5/C
5/C ll</)ABww||Hh7H	GGHglG;IIKww|4	 IIKs   <F Fc                 
   	 dd l }| dz   }	t        j                  j                  |       }
|
rJt        j                  j	                  |
      s+||j                  d|
       |st        j                  |
       ||j                  d|	|       |sH|j                  |	d|j                        5 }t        j                  j                  |      }| t        j                  j                  ||      }t        j                  j                  |      }|t        j                  k7  r&|j                  ||       ||j                  d|       t        j                  |      D ]n  \  }}}|}| t        j                  j                  ||      }t        j                  j                  |      }t        |      D ]i  }t        j                  j                  ||      }t        j                  j                  ||      }|j                  ||       |X|j                  d|       k |D ]  }t        j                  j                  ||      }t        j                  j                  |      }t        j                  j!                  |      sbt        j                  j                  ||      }|j                  ||       ||j                  d|        q 	 d d d        |t        j                  j#                  |	      }	|	S # 1 sw Y   ,xY w)Nr   .zipr[  z#creating '%s' and adding '%s' to itw)compressionzadding '%s')zipfilerG   rm   rk  r   rl  r   ZipFileZIP_DEFLATEDnormpathr   curdirrX   r  relpathsortedisfilerp   )rn  ro  rq  rr  rs  rc  rb  rt  r  zip_filenamerx  zfrz  r
  r  r  
arcdirpathr8   rm   s                      r)   _make_zipfiler    sr   
 v%L''//),K277>>+6KK{3KK$9 (	, __\3)0)=)=  ? 	=BDgg&&x0G#77<<(;ww''1H"))#7+%KKx8020A =,9$
'!#X!FJWW--j9
"8, 9D77<<6D ggll:t<GHHT7+)M489 & =D77<<6D77++D1Dww~~d+"$'',,z4"@w/!-"KKt<==	=< ww|4A	= 	=s    ,EK9	A7K94K96K99Lry  )rp  Nzuncompressed tar file)rp  rT  zgzip'ed tar-filegztarzZIP filezip)rp  rV  zbzip2'ed tar-filebztar)rp  rX  zxz'ed tar-filexztarc                      	 t         j                         D  cg c]  \  } }| |d   f }} }|j                          |S c c}} w )NrG  )_ARCHIVE_FORMATSitemssort)r8   registryformatss      r)   r   r   1  sK    
  %%')~tXhqk" )G )LLNN)s   ?c                    	 |g }t        |      st        d|z        t        |t        t        f      st        d      |D ]1  }t        |t        t        f      rt        |      dk7  s(t        d       |||ft        | <   y )NzThe %s object is not callablez!extra_args needs to be a sequencerG  z+extra_args elements are : (arg_name, value))callable	TypeErrorrj   tupler   lenr  )r8   function
extra_argsdescriptionelements        r)   r   r   ;  s     
H7(BCCj5$-0;<< K'E4=1S\A5EIJJK '
K@Tr(   c                     t         | = y r4   )r  r8   s    r)   r   r   P  s
    r(   c	                 j   	 t        j                  d| |||       	 t        |   }	||||d}
|	d   }|	d   D ]
  \  }}||
|<    |t
        j                  }t        |dd      }d }|t        j                  |      j                  }t        j                  |      st        t        j                  d|      |rt        j                  |       } ||
d	<   n^t        j                         }||j!                  d
|       t
        j"                  j%                  |       } |st        j&                  |       	  || |fi |
}|)||j!                  d|       t        j&                  |       |S # t        $ r t	        d|z        d w xY w# |*||j!                  d|       t        j&                  |       w w xY w)Nzshutil.make_archivezunknown archive format '%s')rr  rs  rc  rb  r      supports_root_dirFzNot a directoryrt  zchanging into '%s'zchanging back to '%s')rJ   r   r  rJ  ri  rG   r  r   rn   r   S_ISDIRNotADirectoryErrorr;   ENOTDIRr   getcwddebugrm   rp   chdir)rn  r   rt  ro  rq  rr  rc  rb  rs  format_infor   r  argvalr  save_cwdstmdr9   s                     r)   r   r   S  s     II#Y(KK&v. !Fu.F q>DN Ss 99&95AHwwx ((||D!$U]]4ExPP		),I!)F:yy{H!18<	2I"	86v6!4h?HHXOQ  K6?@dJKF !4h?HHX  s   	E( 1
F (F.F2c                      	 t         j                         D  cg c]  \  } }| |d   |d   f }} }|j                          |S c c}} w )Nr      )_UNPACK_FORMATSr  r  )r8   rl  r  s      r)   r   r     sQ     $$&(JD$d1gtAw' (G (LLNN(s   Ac                     	 i }t         j                         D ]  \  }}|d   D ]  }|||<   	  | D ]  }||v sd}t        ||||   fz         t        |      st	        d      y )Nr   z!%s is already registered for "%s"z*The registered function must be a callable)r  r  r0   r  r  )	
extensionsr  r  existing_extensionsr8   rl  ext	extensionmsgs	            r)   _check_unpack_optionsr    s    5%++- ,
d7 	,C'+$	,,   H	++5Cy':9'E'G !G H HH HDEE r(   c                 B    	 |g }t        |||       ||||ft        | <   y r4   )r  r  )r8   r  r  r  r  s        r)   r   r     s3     
*h
;&*kIODr(   c                     	 t         | = y r4   )r  r  s    r)   r   r     s    4r(   c                     	 t         j                  j                  |       }t         j                  j                  |      st        j                  |       y y r4   )rG   rm   rk  r   r   )rm   rk  s     r)   _ensure_directoryr    s8    ;ggood#G77==!
G "r(   c                 p   	 dd l }|j                  |       st        d| z        |j                  |       }	 |j	                         D ]  }|j
                  }|j                  d      sd|v r%t        j                  j                  |g|j                  d       }|sWt        |       |j                  d      rt|j                  |d      5 }t        |d      5 }t        ||       d d d        d d d         	 |j                          y # 1 sw Y   %xY w# 1 sw Y   xY w# |j                          w xY w)Nr   z%s is not a zip file/z..rr   )r  
is_zipfiler.   r  infolistr9   r@  rG   rm   r   splitr  r?  r   r	   r  )	r9   extract_dirr  r  rl  r8   
targetpathsourcetargets	            r)   _unpack_zipfiler    s   h'.9::
//(
#CLLN 	0D==D s#tt|kDDJJsODJj)==%XXdC( 0FZ.028/0 0 0	0$ 				0 0 0 0 			sB   BD# ;D# DD'D/
D# DDD 	D# #D5re  c                    	 dd l }	 |j                  |       }	 |j	                  ||       |j                          y # |j                  $ r t        d| z        w xY w# |j                          w xY w)Nr   z/%s is not a compressed or uncompressed tar filere  )rj  r   TarErrorr.   
extractallr  )r9   r  r   rj  tarobjs        r)   _unpack_tarfiler    s{    Jh'+f5  J=HJ 	JJ 	s   = A AA0rZ  r}  )ry  r  z.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzc                 ~    t         j                         D ]&  \  }}|d   D ]  }| j                  |      s|c c S  ( y )Nr   )r  r  r?  )r9   r8   rl  r  s       r)   _find_unpack_formatr    sI    %++- 
da 	I  +	 r(   c                   	 t        j                  d| ||       |t        j                         }t        j                  |      }t        j                  |       } |i }nd|i}|(	 t
        |   }|d   } || |fi t        |d         | y t        |       }|t        dj                  |             t
        |   d   }t        t
        |   d         |z  } || |fi | y # t        $ r t        dj                  |            d w xY w)Nzshutil.unpack_archiver   zUnknown unpack format '{0}'r  rG  zUnknown archive format '{0}')rJ   r   rG   r  r   r  rJ  ri  r   dictr  r.   )r9   r  r   r   filter_kwargsr  r  r   s           r)   r   r     s'   " II%xfEiik))K(Kyy"H~!6*	U)&1K 1~X{Ld;q>&:LmL %X.>:AA(KLLv&q)of-a01MAX{-f-  	U:AA&IJPTT	Us   &	C# #%D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 r4   )rG   r  f_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)rm   r   freetotaluseds        r)   r  r  R  se    	
 ZZ{{R[[(bkk)bjj(BKK7 d33r(   c                 X    	 t        j                  |       \  }}||z
  }t        |||      S r4   )r   _getdiskusager  )rm   r  r  r  s       r)   r  r  c  s5    	
 &&t,tt| d33r(   c                 z   	 t        j                  d| ||       ||t        d      |}|}|d}n7t        |t              r't        |      }|t        dj                  |            |d}n7t        |t              s't        |      }|t        dj                  |            t        j                  | ||       y )Nzshutil.chownzuser and/or group must be setzno such user: {!r}zno such group: {!r})rJ   r   ri  rj   r   rR  LookupErrorr   intrL  rG   r   )rm   userrb  _user_groups        r)   r   r   n  s    
 IIndD%0|899EF |	D#	=299$?@@}s#%>3::5ABBHHT5&!r(   c                 8   	 	 t        t        j                  d         }	 t        t        j                  d         }|dk  s|dk  rb	 t        j
                  t        j                  j                               }|dk  r|j                  xs | d   }|dk  r|j                  xs | d   }t        j                  ||f      S # t        t        f$ r d}Y w xY w# t        t        f$ r d}Y w xY w# t        t        t        f$ r t        j                  |       }Y w xY w)NCOLUMNSr   LINESr  )r  rG   environrJ  ri  r    rJ   
__stdout__r5   AttributeErrorr7   terminal_sizecolumnslines)fallbackr  r  sizes       r)   r    r      s   &bjj+,BJJw'(
 !|uz	.''(=(=(?@D
 a<ll1hqkGA:JJ-(1+EWe,--+ j! 
 j!  
G4 	. ##H-D	.s4   B? C 1C- ?CCC*)C*-)DDc                     t         j                  j                  |       xr8 t        j                  | |      xr  t         j                  j	                  |        S r4   )rG   rm   r   r8  r   )rw   r   s     r)   _access_checkr    sA    GGNN2 &299R#6 &GGMM"%%'r(   c                     	 |t         j                  z   xs( t        j                  t        j                  |             S r4   )rG   X_OKr   NeedCurrentDirectoryForExePathr   )cmdr   s     r)   _win_path_needs_curdirr    s:    
   "W%K%KC &" "r(   c                 :   	 t        | t              }t        j                  j	                  |       \  }} |r|g}n|8t        j
                  j                  dd       }|	 t        j                  d      }|sy |rHt        j                  |      }|j	                  t        j                  t        j                              }n4t        j                  |      }|j	                  t        j                        }t        j                  dk(  rEt!        | |      r9t        j"                  }|rt        j                  |      }|j%                  d|       t        j                  dk(  rt        j&                  d      xs t(        }|j	                  t        j                        D cg c]  }|s|	 }}|r"|D cg c]  }t        j                  |       }}| g|D cg c]  }| |z   	 c}z   }	t        j                  j+                  |	d         d   j-                         |t        j.                  z  r8t1        fd|D              s$|	j3                  |	j5                  d             n| g}	t7               }
|D ]p  }t        j                  j9                  |      }||
vs'|
j;                  |       |	D ]4  }t        j                  j=                  ||      }t?        ||      s0|c c S  r y # t        t        f$ r t        j                  }Y w xY wc c}w c c}w c c}w )NPATHCS_PATHr   r   PATHEXTr  c              3   D   K   | ]  }|j                         k(    y wr4   )upper).0r  suffixs     r)   	<genexpr>zwhich.<locals>.<genexpr>  s     %Of		&;%Os    ) rj   r)  rG   rm   r  r  getconfstrr  ri  defpathfsencodepathsepr   rJ   r;  r  r  insertgetenv_WIN_DEFAULT_PATHEXTsplitextr  r  anyr   r  r   ro   rm  r   r  )r  r   rm   	use_bytesrk  r  pathext_sourcer  pathextfilesseendirnormdirthefiler8   r   s                  @r)   r   r     sw    3&I
 77==%LGSy<::>>&$/D|&::i0D ;;t$D::bkk"**56D;;t$D::bjj)D<<7"'=c4'HYYFV,KK6"
||w9-E1E"0"6"6rzz"BJ3c3JJ3:;Cr{{3';G;w7#)77 !!%(+A.446"''>#%Ow%O"OLL1& 5D  ''""3'$HHW   ww||C1 t,K 	  q '
3 &::D&6 K <7s*   !K( !L)L5LL(L
L)r   )F)FN)rT  r   r   NNNN)r   r   NNNNr-  )NNr   r   NNN)NN))P      )irG   rJ   rn   r   collectionsr;   warningszlibrf  rI  rW  rg  lzmarh  r8   r   r   r   r;  r   rc   rl   r@  rN   r   r	  __all__r7   r   r!   r   r   r.   r6   r0   r2   rD   rU   ra   r	   rt   rx   r|   r
   r   r   r   r   r   r   r   r   stat_resultr   r  r  r   r  r  supports_dir_fdr   supports_fdr   r(  r   avoids_symlink_attacksr2  r   r6  r7  rL  rR  r{  r  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  r  F_OKr  r   r'   r(   r)   <module>r"     s;   
 
     ONO 77d? 77g<<7G&{I 2z*Os||/F/Fw/O 775,7 ? 	G 	@E @;w ;6 60 0&I &	 
 (>@ .: (4$ER +/ >@ +/ .2 2{04 0 +/ HT '+ $ (, &P
 7<@D !&d%&+5.2` 2>>/0$#.=~ ggrww		288<''( <ZZ2>>1< WW ; ;; 
G+T$ G+V !2 .$ "' @DG
$$ LM@DDL ;<@D7r #' "&  
m01%' 
 !.1E0F 2!4W,b*=U!.1F0G 3!5W !.1C0D 0!2WA* KL;?=@	F$ CG')J,< 6: ( h-DEhZ8
 !*F 3_b 2 4OG !+W 5 3 5OG !*F 3_b 0 2OG..d ..b 2yNN< ...w8IJ&<#%:"%:"
4 NN< ...w8IJ4"@+.b'
" GGbgg%D Pw-  O  N  Os3   N  N N  N
NNNN'&N'