
    z%ik                     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__     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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                x   	 t        j                  d| |       |s\t        |       rQt        j                  j                  |      r2t        t        d      r!t        j                  t        j                  }}ny t        t        j                  }} ||       } ||t        j                  |j                               y )Nzshutil.copymodelchmod)rJ   r   r|   rG   rm   r{   rl   lstatr   rx   chmodrn   S_IMODEr   )rr   rs   r~   	stat_func
chmod_funcr   s         r)   r   r   &  s}     IIc*ws|s0C2x $&HHbiizI %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   T      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        |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>._nope  r   r(   c                 &    t        t        |       S r4   )getattrrG   )r8   r   s    r)   lookupzcopystat.<locals>.lookupl  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>.lookupq  s)    T4(BR000	Kr(   r}   rn   utimer   st_flagschflags)
EOPNOTSUPPr=   )rJ   r   r|   rG   rm   r{   rj   rk   rn   r   r   st_atime_nsst_mtime_nsr   NotImplementedErrorrl   r   r7   r;   r   )
rr   rs   r~   followr   r   modewhyrC   r   s
            @r)   r   r   W  sn   
 IIc*T  JWS\%IbggnnS6I JF	+
	 #r{{#XXfX-VF^C8<<

#DF7OCR^^R^^<  sC0wT6: r:	F9c2;;G    	  	. 5#&399s8K+K  	s6   1D, D; ,	D87D8;	FFF8FF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           
      h   |5 |t        j                  |      | D cg c]  }|j                   c}      }	n
t               }	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/                  ||t1        |      f       Y d }~d }~ww xY w# t,        $ r4}t3        |dd       |
j/                  ||t1        |      f       Y d }~d }~ww xY w)N)exist_okr   Fr}   r   r   )rG   fspathr8   r   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     sT   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0I4 	I1H==I1	I,,I14	J1=*J,,J1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   R  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   [  s    ww~~d##r(   c                 :   	 t        j                  |       5 }t        |      }d d d        D ]s  }|j                  }	 |j                  d      }|r:|j                         s*	 |j                         rt        d      	 t        ||       ^	 t        j                  |       u 	 t        j                  |        y # 1 sw Y   xY w# t        $ r$} |t         j                  | |       g }Y d }~d }~ww xY w# t        $ r d}Y w xY w# t        $ r-} |t         j                  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)NFr}   %Cannot call rmtree on a symbolic link)rG   r   r   r7   rm   r   is_junctionrz   r{   _rmtree_unsafeunlinkrmdir)rm   onexc
scandir_itr   rC   entryfullnamer   s           r)   r   r   _  sm   ZZ 	':&G	'
  0::	\\%\8F %++-##% ""IJJ	 & 8U+0		(#)0.#
;	' 	' bjj$$  	F	  bggnnh4  0bii3//0  #bhhc""#s   C B:C C6"DE $E/ :C?C 	C3C..C36DD	D="D88D= 	E,	E''E,/	F8FFc                    	 t        j                  |       5 }t        |      }d d d        D ]m  }t         j
                  j                  ||j                        }	 |j                  d      }|r2	 |j                  d      }	t        j                  |	j                        }|r	 t        j                  |j                  t         j                  |       }
d}	 t         j
                  j                  	t        j                   |
            rGt#        |
||       	 t        j$                  |
       d}t        j&                  |j                  |        n	 t        d      |r5t        j$                  |
       L	 t        j*                  |j                  |        p y # 1 sw Y   ~xY w# t        $ r)}||_         |t         j                  ||       Y d }~y d }~ww xY w# t        $ r#} |t         j                  ||       Y d }~d }~ww xY w# t        $ r d}Y |w xY w# t        $ r"} |t         j&                  ||       Y d }~d }~ww xY w# t        $ r-} |t         j
                  j(                  ||       Y d }~#d }~ww xY w# |st        j$                  |
       w w xY w# t        $ r#} |t         j                  ||       Y d }~d }~ww xY w# t        $ r#} |t         j*                  ||       Y d }~d }~ww xY w)NFr}   dir_fdTr   )rG   r   r   r7   r9   rm   r   r8   r   rn   S_ISDIRr   r   r   O_RDONLYrh   rH   _rmtree_safe_fdcloser   r{   r   )topfdrm   r   r   r   rC   r  r  r   orig_stdirfddirfd_closeds               r)   r  r    sk   ZZ 	'*:&G	'  .077<<ejj1	\\%\8F #jjj?G!\\'//:F (

BKKF$(ww''%A'x?;HHUO+/LHHUZZ>A #* +1 #2 2
 (0		%**U3Y.0	' 	' bjj$$  "((Hc2  	F	0  ' ;!"((Hc::;  ' A!"''..(C@@A ( (-  .bggx--.6  0bii3//0s   F, FF, H11G!%2J&A J	8H"J	I:!KF)$F, ,	G5GG!	H*HHHH"	I+IJ	IJ		J"J;J	JJ		J#&	K/KK	LK<<L)r   r  c                <   	 t        j                  dt        d       t        j                  d| |       |rd }n|d }n|d }nfd}t
        rt        | t              rt        j                  |       } 	 t        j                  | |	      }	 t        j                  | t        j                  |	      }d
}	 t        j                  j                  |t        j                   |            r=t#        || |       	 t        j$                  |       d}t        j&                  | |	       n	 t)        d      |st        j$                  |       y y |t-        d      	 t/        |       rt)        d      	 t1        | |      S # t        $ r"} |t        j                  | |       Y d }~y d }~ww xY w# t        $ r"} |t        j                  | |       Y d }~y d }~ww xY w# t(        $ r"} |t        j&                  | |       Y d }~d }~ww xY w# t(        $ r-} |t        j                  j*                  | |       Y d }~d }~ww xY w# |st        j$                  |       w w xY w# t(        $ r,} |t        j                  j*                  | |       Y d }~y d }~ww xY w)Nz1onerror argument is deprecated, use onexc instead   )
stacklevelz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   funcrm   r   exc_infoonerrors        r)   r   zrmtree.<locals>.onexc  s=    "&dC;/H#Cy#s/@/@@HtT844r(   r  FTr   z#dir_fd unavailable on this platform)warningswarnDeprecationWarningrJ   r   _use_fd_functionsrj   bytesrG   r   r   r6   r   r  rm   rh   rH   r  r	  r   r7   r{   r   r   r   )	rm   ignore_errorsr  r   r  r  rC   fd	fd_closeds	     `      r)   r   r     s=   ( I(Q	8 IIotV,		U]		?5 dE";;t$D	hhtF3G	r{{6:BI	ww"6D%0/HHRL $IHHT&15!"IJJ   %&KLL	d#EFF $ dE**M  	"((D#&	  	"''4%	  /"((D#../  5"''..$445    	"''..$,	s   ?F (F4  A I	 .G" /I	 1H #I& 	F1F,,F14	G=GG"	H+HI	 HI	 	I"I;I	 II	 	I#&	J/"JJ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)   	_basenamer)  "  sS     99T?D
''++-2
.C77DKK,--r(   c                 @   	 t        j                  d| |       |}t        j                  j	                  |      ryt        | |      r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   renamer   r)  r   r   r7   r{   r   r   r   
_destinsrc_is_immutableaccessW_OKlistdirplatformPermissionErrorr   r   )rr   rs   r   real_dstr   s        r)   r   r   4  s   2 IImS#&H	ww}}SS# 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    4C A)H8C 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)   r-  r-  v  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)   r.  r.    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   )getgrnamr  )grpr=  ImportErrorKeyError)r8   r=  results      r)   _get_gidrB    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   )getpwnamr  )pwdrF  r?  r@  )r8   rF  rA  s      r)   _get_uidrH    rC  rD  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)tarinforS  groupownerrU  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   rH  rB  r   r   addr	  rp   )	base_namebase_dircompressverbosedry_runrY  rX  loggerroot_dirtar_compressionr`  compress_extarchive_namearchive_dirrZ  tararcnamerS  rU  s        ``          @@r)   _make_tarballrq    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   .ziprQ  z#creating '%s' and adding '%s' to itw)compressionzadding '%s')zipfilerG   rm   ra  r   rb  r   ZipFileZIP_DEFLATEDnormpathr   curdirrX   walkrelpathsortedisfilerp   )rd  re  rg  rh  ri  rY  rX  rj  rv  zip_filenamern  zfrp  dirpathdirnames	filenames
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ro  )rf  Nzuncompressed tar file)rf  rJ  zgzip'ed tar-filegztarzZIP filezip)rf  rL  zbzip2'ed tar-filebztar)rf  rN  zxz'ed tar-filexztarc                      	 t         j                         D  cg c]  \  } }| |d   f }} }|j                          |S c c}} w )Nr  )_ARCHIVE_FORMATSitemssort)r8   registryformatss      r)   r   r   @  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 sequencer  z+extra_args elements are : (arg_name, value))callable	TypeErrorrj   tupler   lenr  )r8   function
extra_argsdescriptionelements        r)   r   r   J  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   _  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')rh  ri  rY  rX  r      supports_root_dirFzNot a directoryrj  zchanging into '%s'zchanging back to '%s')rJ   r   r  r@  r_  rG   rz  r   rn   r   r  NotADirectoryErrorr;   ENOTDIRr   getcwddebugrm   rp   chdir)rd  r   rj  re  rg  rh  rY  rX  ri  format_infor   r  argvalr  save_cwdstmdr9   s                     r)   r   r   b  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   rb  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   rb  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   ra  r   r   )rm   ra  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   )rv  
is_zipfiler.   rw  infolistr9   r7  rG   rm   r   splitr  r6  r   r	   r	  )	r9   extract_dirrv  r  rb  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r[  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 filer[  )r`  r   TarErrorr.   
extractallr	  )r9   r  r   r`  tarobjs        r)   _unpack_tarfiler    s{    Jh'+f5  J=HJ 	JJ 	s   = A AA0rP  rs  )ro  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  r6  )r9   r8   rb  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  r  zUnknown archive format '{0}')rJ   r   rG   r  r   r  r@  r_  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  a  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  r  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   r_  rj   r   rH  LookupErrorr   intrB  rG   r   )rm   userrX  _user_groups        r)   r   r   }  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   environr@  r_  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   r/  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                 B   	 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(  rt        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   }	n| g}	t+               }
|D ]p  }t        j                  j-                  |      }||
vs'|
j/                  |       |	D ]4  }t        j                  j1                  ||      }t3        ||      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   PATHEXT)rj   r  rG   rm   r  r  getconfstrr  r_  defpathfsencodepathsepr   rJ   r2  r  rz  insertgetenv_WIN_DEFAULT_PATHEXTr   ro   rc  r   r  )r  r   rm   	use_bytesra  rz  pathext_sourcer  pathextfilesseendirnormdirthefiler8   s                  r)   r   r     s&    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; g6ss66 5D  ''""3'$HHW   ww||C1 t,K 	  a '
3 &::D&6 K < 7s*    I, J'J3JJ,JJ)r   )F)FN)rJ  r   r   NNNN)r   r   NNNNr$  )NNr   r   NNN)NN))P      )irG   rJ   rn   r   collectionsr;   r  zlibr\  r?  rM  r]  lzmar^  r8   r   r   r   r2  r   rc   rl   r7  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_attacksr)  r   r-  r.  rB  rH  rq  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{04 0 +/ @D '+ $ (, &P
 7<@D !&d%&+5.2` 2>>/0$!#H60p ggrww		288<''( <ZZ2>>1< WW ; ;; 
\+T$ \+@ !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 HU.  O  N  Os3   N  N N  N
NNNN'&N'