
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÉ  ã                   @   s–  d dl Z d dlZd dlZd dlZd dlZd dlZzd dlZ[dZW n ek
rZ   dZY nX zd dl	Z	[	dZ
W n ek
r†   dZ
Y nX zd dlZ[dZW n ek
r²   dZY nX zd dlmZ W n ek
rÜ   dZY nX zd dlmZ W n ek
�r   dZY nX e jdkZd ZZe jdk�r2d dlZne�r@d dlZe�rJdnd	Zee d
ƒ�odej d¡ae�oteedƒZdZddddddddddddddddddd d!d"d#d$d%d&gZG d'd„ deƒZG d(d&„ d&eƒZG d)d„ deƒZ G d*d„ deƒZ!G d+d,„ d,eƒZ"G d-d.„ d.e#ƒZ$G d/d0„ d0e#ƒZ%d1d2„ Z&d3d4„ Z'efd5d6„Z(d¡d7d„Z)d8d9„ Z*d:d;„ Z+d<d=„ Z,dd>œd?d„Z-dd>œd@d„Z.ee dAƒ�r–dd>œdBdC„Z/ndDdC„ Z/dd>œdEd„Z0dd>œdFd„Z1dd>œdGd„Z2dHd"„ Z3d¢dIdJ„Z4dde2ddfdKd„Z5ee j6dLƒ�rdMdN„ Z7dOdP„ Z8ndQdN„ Z7dRdP„ Z8dSdT„ Z9dUdV„ Z:e j;e je j<e j=he j>k�obe j?e j@k�obe je jAkZBd£dWd„ZCeBeC_DdXdY„ ZEe2fdZd„ZFd[d\„ ZGd]d^„ ZHd_d`„ ZIdadb„ ZJd¤ddde„ZKd¥dfdg„ZLdheKdigdjfiZMe�rðeKdkgdlfeMdm< eLg dnfeMdo< e
�reKdpgdqfeMdr< e�reKdsgdtfeMdu< dvd„ ZNd¦dxd„ZOdyd„ ZPd§dzd„ZQd{d„ ZRd|d}„ ZSd¨d~d„ZTdd „ ZUd€d�„ ZVd‚dƒ„ ZWd„d…„ ZXd†geXg djfd‡geWg dnfdˆœZYe�r²d‰dŠgeXg dlfeYdm< e
�rÌd‹dŒgeXg dqfeYdr< e�ræd�dŽgeXg dtfeYdu< d�d�„ ZZd©d‘d!„Z[ee d’ƒ�r<e \d“¡ e ]d”d•¡Z^d–e^j__`d—e^ja_`d˜e^jb_`d™d“„ Zcn$e�r`e \d“¡ e ]d”d•¡Z^dšd“„ Zcdªd›d#„Zdd«d�d%„ZedždŸ„ Zfe jge jhB dfd d$„ZidS )¬é    NTF)Úgetpwnam)ÚgetgrnamÚntÚposixi   i   ÚsendfileZ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                   @   s   e Zd ZdS )r   N©Ú__name__Ú
__module__Ú__qualname__© r%   r%   ú+/opt/alt/python38/lib64/python3.8/shutil.pyr   E   s   c                   @   s   e Zd ZdS )r    Nr!   r%   r%   r%   r&   r    H   s   c                   @   s   e Zd ZdS )r   Nr!   r%   r%   r%   r&   r   K   s   c                   @   s   e Zd ZdS )r   Nr!   r%   r%   r%   r&   r   O   s   c                   @   s   e Zd ZdS )Ú	ReadErrorNr!   r%   r%   r%   r&   r'   R   s   r'   c                   @   s   e Zd ZdS )ÚRegistryErrorNr!   r%   r%   r%   r&   r(   U   s   r(   c                   @   s   e Zd ZdS )Ú_GiveupOnFastCopyNr!   r%   r%   r%   r&   r)   Y   s   r)   c              
   C   s¬   z|   ¡ }|  ¡ }W n* tk
r> } zt|ƒ‚W 5 d }~X Y nX zt |||¡ W nT tk
r¦ } z6| j|_|j|_|j	t	j
t	jhkr�t|ƒ‚n|d ‚W 5 d }~X Y nX d S ©N)ÚfilenoÚ	Exceptionr)   r   r   ÚOSErrorÚnameÚfilenameÚ	filename2ÚerrnoÚEINVALÚENOTSUP)ÚfsrcÚfdstÚflagsÚinfdÚoutfdÚerrr%   r%   r&   Ú_fastcopy_fcopyfile^   s    
r:   c              
   C   sD  z|   ¡ }|  ¡ }W n* tk
r> } zt|ƒ‚W 5 d }~X Y nX ztt |¡jdƒ}W n tk
rn   d}Y nX tj	dk r„t
|dƒ}d}zt ||||¡}W nŠ tk
�r& } zj| j|_|j|_|jtjkrØdat|ƒ‚|jtjkrê|d ‚|dk�rt |dtj¡dk�rt|ƒ‚|‚W 5 d }~X Y qˆX |dk�r6�q@||7 }qˆd S )Ni  € i   l        i   @r   F)r+   r,   r)   ÚmaxÚosÚfstatÚst_sizer-   ÚsysÚmaxsizeÚminr   r.   r/   r0   r1   ZENOTSOCKÚ_USE_CP_SENDFILEZENOSPCÚlseekÚSEEK_CUR)r4   r5   r7   r8   r9   Z	blocksizeÚoffsetZsentr%   r%   r&   Ú_fastcopy_sendfiler   s8    


 
rF   c              
   C   sn   | j }|j}tt|ƒƒ�L}||ƒ}|s*q`q||k rV|d |… �}| |¡ W 5 Q R X q||ƒ qW 5 Q R X d S r*   )ÚreadintoÚwriteÚ
memoryviewÚ	bytearray)r4   r5   ÚlengthZfsrc_readintoÚ
fdst_writeZmvÚnZsmvr%   r%   r&   Ú_copyfileobj_readinto²   s    rN   c                 C   s0   |st }| j}|j}||ƒ}|s"q,||ƒ qd S r*   )ÚCOPY_BUFSIZEÚreadrH   )r4   r5   rK   Z	fsrc_readrL   Zbufr%   r%   r&   r   Å   s    c                 C   s¦   t | tjƒrJttjdƒrJztj |  ¡ t |¡¡W S  tk
rH   Y dS X ttjdƒr~ztj | |¡W S  tk
r|   Y dS X tj 	tj 
| ¡¡tj 	tj 
|¡¡kS )NÚsamestatFÚsamefile)Ú
isinstancer<   ÚDirEntryÚhasattrÚpathrQ   Ústatr-   rR   ÚnormcaseÚabspath©ÚsrcÚdstr%   r%   r&   Ú	_samefileÒ   s    ÿr]   c                 C   s   t | tjƒr|  ¡ S t | ¡S r*   )rS   r<   rT   rW   ©Úfnr%   r%   r&   Ú_statä   s    r`   c                 C   s    t | tjƒr|  ¡ S tj | ¡S r*   )rS   r<   rT   Ú
is_symlinkrV   Úislinkr^   r%   r%   r&   Ú_islinkç   s    rc   ©Úfollow_symlinksc          	      C   sÔ  t  d| |¡ t| |ƒr(td | |¡ƒ‚d}t| |gƒD ]j\}}zt|ƒ}W n tk
r`   Y q8X t 	|j
¡r�t|tjƒr€|jn|}td| ƒ‚tr8|dkr8|j}q8|sÆt| ƒrÆt t | ¡|¡ �n
t| dƒ� �ø}t|dƒ�â}t�r,z,t||tjƒ |W W  5 Q R £ W  5 Q R £ S  tk
�r(   Y nX n†t�rtz(t||ƒ |W W  5 Q R £ W  5 Q R £ S  tk
�rp   Y nX n>t�r²|dk�r²t||t|tƒƒ |W  5 Q R £ W  5 Q R £ S t ||ƒ W 5 Q R X W 5 Q R X |S )Nzshutil.copyfilez{!r} and {!r} are the same filer   z`%s` is a named pipeÚrbÚwb)!r?   Úauditr]   r    ÚformatÚ	enumerater`   r-   rW   ÚS_ISFIFOÚst_moderS   r<   rT   rV   r   Ú_WINDOWSr>   rc   ÚsymlinkÚreadlinkÚopenÚ_HAS_FCOPYFILEr:   r   Z_COPYFILE_DATAr)   rB   rF   rN   rA   rO   r   )	r[   r\   re   Ú	file_sizeÚir_   Ústr4   r5   r%   r%   r&   r	   ê   sD    

c                C   sp   t  d| |¡ |sFt| ƒrFtj |¡rFttdƒr@tjtj }}qRd S nt	tj
 }}|| ƒ}||t |j¡ƒ d S )Nzshutil.copymodeÚlchmod)r?   rh   rc   r<   rV   rb   rU   Úlstatru   r`   ÚchmodrW   ÚS_IMODErl   )r[   r\   re   Z	stat_funcZ
chmod_funcrt   r%   r%   r&   r
   !  s    
Ú	listxattrc                C   sÈ   zt j| |d�}W n@ tk
rR } z"|jtjtjtjfkr<‚ W Y ¢d S d }~X Y nX |D ]j}z&t j| ||d�}t j||||d� W qX tk
rÀ } z |jtj	tjtjtjfkr°‚ W 5 d }~X Y qXX qXd S ©Nrd   )
r<   ry   r-   r1   r3   ZENODATAr2   ÚgetxattrÚsetxattrZEPERM)r[   r\   re   ÚnamesÚer.   Úvaluer%   r%   r&   Ú
_copyxattr7  s    	ÿr€   c                  O   s   d S r*   r%   )ÚargsÚkwargsr%   r%   r&   r€   O  s    c          	   
      s`  t  d| |¡ d d dœdd„‰ |p6t| ƒo4tj |¡ }|rJ‡ fdd„}n‡ fdd„}t| tjƒrp| j|d�}n|d	ƒ| |d�}t 	|j
¡}|d
ƒ||j|jf|d� t| ||d� z|dƒ|||d� W n tk
rÞ   Y nX t|dƒ�r\z|dƒ||j|d� W nV tk
�rZ } z6dD ]*}tt|ƒ�r|jtt|ƒk�r �qJ�q‚ W 5 d }~X Y nX d S )Nzshutil.copystat)Únsre   c                 W   s   d S r*   r%   )rƒ   re   r�   r%   r%   r&   Ú_nop`  s    zcopystat.<locals>._nopc                    s   t t| ˆ ƒS r*   )Úgetattrr<   ©r.   ©r„   r%   r&   Úlookupg  s    zcopystat.<locals>.lookupc                    s   t t| ˆ ƒ}|tjkr|S ˆ S r*   )r…   r<   Úsupports_follow_symlinks)r.   r_   r‡   r%   r&   rˆ   l  s    
rd   rW   Úutimerw   Úst_flagsZchflags)Z
EOPNOTSUPPr3   )r?   rh   rc   r<   rV   rb   rS   rT   rW   rx   rl   Úst_atime_nsÚst_mtime_nsr€   ÚNotImplementedErrorrU   r‹   r-   r1   r…   )	r[   r\   re   Zfollowrˆ   rt   ÚmodeÚwhyr9   r%   r‡   r&   r   R  s4    ÿ
c                C   sB   t j |¡r"t j |t j | ¡¡}t| ||d� t| ||d� |S rz   )r<   rV   ÚisdirÚjoinÚbasenamer	   r
   ©r[   r\   re   r%   r%   r&   r   ”  s
    c                C   sB   t j |¡r"t j |t j | ¡¡}t| ||d� t| ||d� |S rz   )r<   rV   r‘   r’   r“   r	   r   r”   r%   r%   r&   r   ¦  s
    c                     s   ‡ fdd„}|S )Nc                    s(   g }ˆ D ]}|  t ||¡¡ qt|ƒS r*   )ÚextendÚfnmatchÚfilterÚset)rV   r}   Úignored_namesÚpattern©Úpatternsr%   r&   Ú_ignore_patterns¼  s    z)ignore_patterns.<locals>._ignore_patternsr%   )rœ   r�   r%   r›   r&   r   ·  s    c                 C   s>  |d k	r$|t  |¡dd„ | D ƒƒ}ntƒ }t j||d� g }	|tkpJ|tk}
| D �]~}|j|krbqPt j ||j¡}t j ||j¡}|
rŠ|n|}zÖ| 	¡ }|rÂt jdkrÂ|j
dd�}|jt
jkrÂd}|�r8t  |¡}|rôt  ||¡ t||| d� nBt j |¡�s|�rW qP| ¡ �r,t||||||d� n
|||ƒ n*| ¡ �rXt||||||d� n
|||ƒ W qP tk
�r˜ } z|	 |jd ¡ W 5 d }~X Y qP tk
�rÎ } z|	 ||t|ƒf¡ W 5 d }~X Y qPX qPzt||ƒ W nJ tk
�r* } z*t|d	d ƒd k�r|	 ||t|ƒf¡ W 5 d }~X Y nX |	�r:t|	ƒ‚|S )
Nc                 S   s   g | ]
}|j ‘qS r%   r†   )Ú.0Úxr%   r%   r&   Ú
<listcomp>Æ  s     z_copytree.<locals>.<listcomp>)Úexist_okr   Frd   )Údirs_exist_okr   Zwinerror)r<   Úfspathr˜   Úmakedirsr   r   r.   rV   r’   ra   rW   Úst_reparse_tagÚIO_REPARSE_TAG_MOUNT_POINTro   rn   r   ÚexistsÚis_dirr   r   r•   r�   r-   ÚappendÚstrr…   )Úentriesr[   r\   ÚsymlinksÚignoreÚcopy_functionÚignore_dangling_symlinksr¢   r™   ÚerrorsZuse_srcentryZsrcentryZsrcnameZdstnameZsrcobjra   rv   Úlinktor9   r�   r%   r%   r&   Ú	_copytreeÃ  s`    




 ÿ
ÿ (&r²   c           	   
   C   sD   t  d| |¡ t | ¡�}t|ƒ}W 5 Q R X t|| ||||||d�S )Nzshutil.copytree)r«   r[   r\   r¬   r­   r®   r¯   r¢   )r?   rh   r<   ÚscandirÚlistr²   )	r[   r\   r¬   r­   r®   r¯   r¢   Zitrr«   r%   r%   r&   r     s    &
 ýÚst_file_attributesc                 C   sP   z4| j dd�}t  |j¡o2|jt j@ o0|jt jk W S  tk
rJ   Y dS X d S ©NFrd   )rW   ÚS_ISDIRrl   rµ   ÚFILE_ATTRIBUTE_REPARSE_POINTr¥   r¦   r-   )Úentryrt   r%   r%   r&   Ú_rmtree_isdir6  s    
þrº   c                 C   sL   z0t  | ¡}t |j¡p.|jtj@ o.|jtjkW S  t	k
rF   Y dS X d S )NF)
r<   rv   rW   ÚS_ISLNKrl   rµ   r¸   r¥   r¦   r-   )rV   rt   r%   r%   r&   Ú_rmtree_islink?  s    

þr¼   c                 C   s*   z| j dd�W S  tk
r$   Y dS X d S r¶   )r¨   r-   )r¹   r%   r%   r&   rº   H  s    c                 C   s   t j | ¡S r*   )r<   rV   rb   )rV   r%   r%   r&   r¼   N  s    c              	   C   s&  z"t  | ¡�}t|ƒ}W 5 Q R X W n* tk
rL   |t j| t ¡ ƒ g }Y nX |D ]–}|j}t|ƒr²z| ¡ rvtdƒ‚W n, tk
r¤   |t jj	|t ¡ ƒ Y qRY nX t
||ƒ qRzt  |¡ W qR tk
ræ   |t j|t ¡ ƒ Y qRX qRzt  | ¡ W n( tk
�r    |t j| t ¡ ƒ Y nX d S )Nú%Cannot call rmtree on a symbolic link)r<   r³   r´   r-   r?   Úexc_inforV   rº   ra   rb   Ú_rmtree_unsafeÚunlinkÚrmdir)rV   ÚonerrorÚ
scandir_itr«   r¹   Úfullnamer%   r%   r&   r¿   R  s0    

r¿   c              
   C   s.  z"t  | ¡�}t|ƒ}W 5 Q R X W n@ tk
rb } z"||_|t j|t ¡ ƒ W Y ¢d S d }~X Y nX |D �]¾}t j ||j	¡}z|j
dd�}W n tk
r¦   d}Y nNX |rôz|jdd�}	t |	j¡}W n* tk
rò   |t j|t ¡ ƒ Y qhY nX |�rêzt j|j	t j| d�}
W n( tk
�r:   |t j|t ¡ ƒ Y n®X zžt j |	t  |
¡¡�r t|
||ƒ zt j|j	| d� W n( tk
�rœ   |t j|t ¡ ƒ Y nX n8ztdƒ‚W n* tk
�rÖ   |t jj|t ¡ ƒ Y nX W 5 t  |
¡ X qhzt j|j	| d� W qh tk
�r&   |t j|t ¡ ƒ Y qhX qhd S )NFrd   )Údir_fdr½   )r<   r³   r´   r-   r/   r?   r¾   rV   r’   r.   r¨   rW   r·   rl   rv   rp   ÚO_RDONLYÚcloserQ   r=   Ú_rmtree_safe_fdrÁ   rb   rÀ   )ÚtopfdrV   rÂ   rÃ   r«   r9   r¹   rÄ   r¨   Úorig_stÚdirfdr%   r%   r&   rÈ   q  sR    


rÈ   c              	   C   s²  t  d| ¡ |rdd„ }n|d kr*dd„ }t�r`t| tƒrDt | ¡} zt | ¡}W n( tk
rz   |tj| t  	¡ ƒ Y d S X zt 
| tj¡}W n( tk
r¶   |tj
| t  	¡ ƒ Y d S X z˜tj |t |¡¡�rt|| |ƒ zt | ¡ W n( tk
�r   |tj| t  	¡ ƒ Y nX n8ztdƒ‚W n* tk
�rL   |tjj| t  	¡ ƒ Y nX W 5 t |¡ X nNzt| ƒ�rttdƒ‚W n, tk
�r¢   |tjj| t  	¡ ƒ Y d S X t| |ƒS d S )Nzshutil.rmtreec                  W   s   d S r*   r%   ©r�   r%   r%   r&   rÂ   ·  s    zrmtree.<locals>.onerrorc                   W   s   ‚ d S r*   r%   rÌ   r%   r%   r&   rÂ   º  s    r½   )r?   rh   Ú_use_fd_functionsrS   Úbytesr<   Úfsdecoderv   r,   r¾   rp   rÆ   rÇ   rV   rQ   r=   rÈ   rÁ   r-   rb   r¼   r¿   )rV   Úignore_errorsrÂ   rÊ   Úfdr%   r%   r&   r   ª  sJ    



c                 C   s&   t jjt jjpd }t j |  |¡¡S )NÚ )r<   rV   ÚsepÚaltsepr“   Úrstrip)rV   rÓ   r%   r%   r&   Ú	_basenameê  s    rÖ   c              	   C   sT  t  d| |¡ |}tj |¡rbt| |ƒr8t | |¡ d S tj |t| ƒ¡}tj 	|¡rbt
d| ƒ‚zt | |¡ W nÜ tk
�rN   tj | ¡r²t | ¡}t ||¡ t | ¡ n˜tj | ¡�r6t| |ƒrÚt
d| |f ƒ‚t| ƒ�st | tj¡�st | ¡�rt jdk�rtd| | f ƒ‚t| ||dd� t| ƒ n|| |ƒ t | ¡ Y nX |S )Nzshutil.movez$Destination path '%s' already existsz.Cannot move a directory '%s' into itself '%s'.ÚdarwinzKCannot move the non-empty directory '%s': Lacking write permission to '%s'.T)r®   r¬   )r?   rh   r<   rV   r‘   r]   Úrenamer’   rÖ   r§   r   r-   rb   ro   rn   rÀ   Ú
_destinsrcÚ_is_immutableÚaccessÚW_OKÚlistdirÚplatformÚPermissionErrorr   r   )r[   r\   r®   Zreal_dstr±   r%   r%   r&   r   ð  sL    


ÿ
ÿÿþþÿ

c                 C   sV   t j | ¡} t j |¡}|  t jj¡s2| t jj7 } | t jj¡sL|t jj7 }| | ¡S r*   )r<   rV   rY   ÚendswithrÓ   Ú
startswithrZ   r%   r%   r&   rÙ   /  s    rÙ   c                 C   s(   t | ƒ}tjtjg}t|dƒo&|j|kS )Nr‹   )r`   rW   ÚUF_IMMUTABLEÚSF_IMMUTABLErU   r‹   )r[   rt   Zimmutable_statesr%   r%   r&   rÚ   8  s    rÚ   c                 C   sN   t d ks| d krd S zt | ƒ}W n tk
r8   d }Y nX |d k	rJ|d S d S ©Né   )r   ÚKeyError©r.   Úresultr%   r%   r&   Ú_get_gid=  s    
ré   c                 C   sN   t d ks| d krd S zt | ƒ}W n tk
r8   d }Y nX |d k	rJ|d S d S rä   )r   ræ   rç   r%   r%   r&   Ú_get_uidI  s    
rê   Úgzipc                    s   |d krd}nDt r |dkr d}n2tr2|dkr2d}n trD|dkrDd}ntd |¡ƒ‚dd l}	|rfd	| nd}
| d
 |
 }tj |¡}|r´tj 	|¡s´|d k	r¦| 
d|¡ |s´t |¡ |d k	rÆ| 
d¡ tˆƒ‰tˆƒ‰ ‡ ‡‡‡fdd„}|�s|	 |d| ¡}z|j||d� W 5 | ¡  X |S )NrÒ   rë   ZgzÚbzip2Úbz2ÚxzzCbad value for 'compress', or compression format not supported : {0}r   Ú.ú.tarúcreating %szCreating tar archivec                    s,   ˆ d k	rˆ | _ ˆ| _ˆd k	r(ˆ| _ˆ| _| S r*   )ÚgidZgnameÚuidÚuname)Ztarinfo©rò   ÚgroupÚownerró   r%   r&   Ú_set_uid_gid„  s    z#_make_tarball.<locals>._set_uid_gidzw|%s)r—   )Ú_ZLIB_SUPPORTEDÚ_BZ2_SUPPORTEDÚ_LZMA_SUPPORTEDÚ
ValueErrorri   Útarfiler<   rV   Údirnamer§   Úinfor¤   rê   ré   rp   rÇ   Úadd)Ú	base_nameÚbase_dirÚcompressÚverboseÚdry_runr÷   rö   ÚloggerZtar_compressionrý   Zcompress_extZarchive_nameÚarchive_dirrø   Útarr%   rõ   r&   Ú_make_tarballU  s>    ÿ

	
r	  c              	   C   sn  dd l }| d }tj | ¡}|rNtj |¡sN|d k	r@| d|¡ |sNt |¡ |d k	rd| d||¡ |�sj|j|d|jd��è}tj 	|¡}	|	tj
kr´| |	|	¡ |d k	r´| d|	¡ t |¡D ] \}
}}t|ƒD ]:}tj 	tj |
|¡¡}	| |	|	¡ |d k	rÐ| d|	¡ qÐ|D ]L}tj 	tj |
|¡¡}	tj |	¡�r| |	|	¡ |d k	�r| d|	¡ �qq¾W 5 Q R X |S )Nr   ú.ziprñ   z#creating '%s' and adding '%s' to itÚw)Zcompressionzadding '%s')Úzipfiler<   rV   rþ   r§   rÿ   r¤   ÚZipFileZZIP_DEFLATEDÚnormpathÚcurdirrH   ÚwalkÚsortedr’   Úisfile)r  r  r  r  r  r  Zzip_filenamer  ZzfrV   ÚdirpathZdirnamesÚ	filenamesr.   r%   r%   r&   Ú_make_zipfile–  sH    
 ÿÿ

r  r  )r  Nzuncompressed tar file)r  rë   zgzip'ed tar-fileZgztarzZIP fileÚzip)r  rì   zbzip2'ed tar-fileZbztar)r  rî   zxz'ed tar-fileZxztarc                  C   s   dd„ t  ¡ D ƒ} |  ¡  | S )Nc                 S   s   g | ]\}}||d  f‘qS )rå   r%   )rž   r.   Úregistryr%   r%   r&   r    Ø  s     z'get_archive_formats.<locals>.<listcomp>)Ú_ARCHIVE_FORMATSÚitemsÚsort©Zformatsr%   r%   r&   r   Ó  s
    ÿrÒ   c                 C   st   |d krg }t |ƒs td| ƒ‚t|ttfƒs6tdƒ‚|D ]&}t|ttfƒrXt|ƒdkr:tdƒ‚q:|||ft| < d S )NzThe %s object is not callablez!extra_args needs to be a sequencerå   z+extra_args elements are : (arg_name, value))ÚcallableÚ	TypeErrorrS   Útupler´   Úlenr  )r.   ÚfunctionÚ
extra_argsÚdescriptionZelementr%   r%   r&   r   Ý  s    	
c                 C   s
   t | = d S r*   )r  r†   r%   r%   r&   r   ò  s    c	              
   C   s  t  d| |||¡ t ¡ }	|d k	rP|d k	r6| d|¡ tj | ¡} |sPt |¡ |d kr^tj}||dœ}
zt	| }W n" t
k
r–   td| ƒd ‚Y nX |d }|d D ]\}}||
|< q¨|dkrÒ||
d< ||
d	< z|| |f|
Ž}W 5 |d k	�r|d k	�r| d
|	¡ t |	¡ X |S )Nzshutil.make_archivezchanging into '%s')r  r  zunknown archive format '%s'r   é   r  r÷   rö   zchanging back to '%s')r?   rh   r<   ÚgetcwdÚdebugrV   rY   Úchdirr  r  ræ   rü   )r  ri   Zroot_dirr  r  r  r÷   rö   r  Zsave_cwdr‚   Úformat_infoÚfuncÚargÚvalr/   r%   r%   r&   r   õ  s8    




c                  C   s   dd„ t  ¡ D ƒ} |  ¡  | S )Nc                 S   s"   g | ]\}}||d  |d f‘qS )r   é   r%   )rž   r.   rÿ   r%   r%   r&   r    3  s     z&get_unpack_formats.<locals>.<listcomp>)Ú_UNPACK_FORMATSr  r  r  r%   r%   r&   r   -  s
    ÿc           	      C   sj   i }t  ¡ D ]\}}|d D ]}|||< qq| D ]$}||kr0d}t|||| f ƒ‚q0t|ƒsftdƒ‚d S )Nr   z!%s is already registered for "%s"z*The registered function must be a callable)r,  r  r(   r  r  )	Ú
extensionsr   r!  Zexisting_extensionsr.   rÿ   ÚextÚ	extensionÚmsgr%   r%   r&   Ú_check_unpack_options8  s    ÿ
r1  c                 C   s,   |d krg }t |||ƒ ||||ft| < d S r*   )r1  r,  )r.   r-  r   r!  r"  r%   r%   r&   r   J  s    c                 C   s
   t | = d S r*   )r,  r†   r%   r%   r&   r   `  s    c                 C   s&   t j | ¡}t j |¡s"t  |¡ d S r*   )r<   rV   rþ   r‘   r¤   )rV   rþ   r%   r%   r&   Ú_ensure_directoryd  s    r2  c           	   	   C   sÆ   dd l }| | ¡std|  ƒ‚| | ¡}zŽ| ¡ D ]€}|j}| d¡s2d|krPq2tj	j
|f| d¡žŽ }|snq2t|ƒ | d¡s2| |j¡}t|dƒ}z| |¡ W 5 | ¡  ~X q2W 5 | ¡  X d S )Nr   z%s is not a zip fileú/z..rg   )r  Z
is_zipfiler'   r  rÇ   Zinfolistr/   rá   r<   rV   r’   Úsplitr2  rà   rP   rp   rH   )	r/   Úextract_dirr  r  rÿ   r.   ÚtargetÚdataÚfr%   r%   r&   Ú_unpack_zipfilej  s*    




r9  c                 C   sX   dd l }z| | ¡}W n" |jk
r8   td|  ƒ‚Y nX z| |¡ W 5 | ¡  X d S )Nr   z/%s is not a compressed or uncompressed tar file)rý   rp   ZTarErrorr'   rÇ   Z
extractall)r/   r5  rý   Ztarobjr%   r%   r&   Ú_unpack_tarfileŒ  s    ÿ
r:  rð   r
  )r  r  z.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzc                 C   s:   t  ¡ D ],\}}|d D ]}|  |¡r|    S qqd S )Nr   )r,  r  rà   )r/   r.   rÿ   r/  r%   r%   r&   Ú_find_unpack_format«  s
    
r;  c                 C   sÚ   t  d| ||¡ |d kr t ¡ }t |¡}t | ¡} |d k	rŽzt| }W n$ tk
rl   td |¡ƒd ‚Y nX |d }|| |ft	|d ƒŽ nHt
| ƒ}|d kr¬td | ¡ƒ‚t| d }t	t| d ƒ}|| |f|Ž d S )Nzshutil.unpack_archivezUnknown unpack format '{0}'r#  rå   zUnknown archive format '{0}')r?   rh   r<   r$  r£   r,  ræ   rü   ri   Údictr;  r'   )r/   r5  ri   r'  r(  r‚   r%   r%   r&   r   ²  s$    

ÚstatvfsÚ
disk_usageZusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytesc                 C   s@   t  | ¡}|j|j }|j|j }|j|j |j }t|||ƒS r*   )r<   r=  Úf_bavailÚf_frsizeÚf_blocksÚf_bfreeÚ_ntuple_diskusage)rV   rt   ÚfreeÚtotalÚusedr%   r%   r&   r>  ä  s
    
c                 C   s"   t  | ¡\}}|| }t|||ƒS r*   )r   Z_getdiskusagerC  )rV   rE  rD  rF  r%   r%   r&   r>  õ  s    c                 C   s®   t  d| ||¡ |d kr(|d kr(tdƒ‚|}|}|d kr>d}n(t|tƒrft|ƒ}|d krftd |¡ƒ‚|d krtd}n(t|tƒsœt	|ƒ}|d krœtd |¡ƒ‚t
 | ||¡ d S )Nzshutil.chownzuser and/or group must be setéÿÿÿÿzno such user: {!r}zno such group: {!r})r?   rh   rü   rS   rª   rê   ÚLookupErrorri   Úintré   r<   r   )rV   Úuserrö   Z_userZ_groupr%   r%   r&   r      s$    

©éP   é   c              
   C   sÔ   zt tjd ƒ}W n ttfk
r.   d}Y nX zt tjd ƒ}W n ttfk
r^   d}Y nX |dksp|dkrÆzt tj ¡ ¡}W n$ t	tt
fk
r¨   t | ¡}Y nX |dkr¸|j}|dkrÆ|j}t ||f¡S )NZCOLUMNSr   ZLINES)rI  r<   Úenvironræ   rü   r   r?   Ú
__stdout__r+   ÚAttributeErrorr-   Úterminal_sizeÚcolumnsÚlines)ZfallbackrR  rS  Úsizer%   r%   r&   r      s$    

c                 C   s&   t j | ¡o$t  | |¡o$t j | ¡ S r*   )r<   rV   r§   rÛ   r‘   )r_   r�   r%   r%   r&   Ú_access_checkQ  s    ÿrU  c              	      sÂ  t j ˆ ¡rtˆ |ƒrˆ S d S tˆ tƒ}|d krtt j dd ¡}|d krtzt  d¡}W n t	t
fk
rr   t j}Y nX |s|d S |ržt  |¡}| t  t j¡¡}nt  |¡}| t j¡}tjdk�rTt j}|rÔt  |¡}||krè| d|¡ t  d¡pôt}dd„ | t j¡D ƒ}|�r dd„ |D ƒ}t‡ fd	d
„|D ƒƒ�r@ˆ g}n‡ fdd„|D ƒ}nˆ g}tƒ }|D ]X}	t j |	¡}
|
|k�rd| |
¡ |D ],}t j |	|¡}t||ƒ�rŒ|    S �qŒ�qdd S )NÚPATHÚCS_PATHZwin32r   ZPATHEXTc                 S   s   g | ]}|r|‘qS r%   r%   ©rž   r.  r%   r%   r&   r    Š  s      zwhich.<locals>.<listcomp>c                 S   s   g | ]}t  |¡‘qS r%   )r<   ÚfsencoderX  r%   r%   r&   r    �  s     c                 3   s    | ]}ˆ   ¡  |  ¡ ¡V  qd S r*   )Úlowerrà   rX  ©Úcmdr%   r&   Ú	<genexpr>’  s     zwhich.<locals>.<genexpr>c                    s   g | ]}ˆ | ‘qS r%   r%   rX  r[  r%   r&   r    •  s     )r<   rV   rþ   rU  rS   rÎ   rN  ÚgetÚconfstrrP  rü   ÚdefpathrY  r4  ÚpathseprÏ   r?   rÞ   r  ÚinsertÚgetenvÚ_WIN_DEFAULT_PATHEXTÚanyr˜   rX   r   r’   )r\  r�   rV   Z	use_bytesr  Zpathext_sourceZpathextÚfilesÚseenÚdirZnormdirZthefiler.   r%   r[  r&   r   V  sV    






)r   )F)FN)rë   r   r   NNN)r   r   N)NrÒ   )NNr   r   NNN)NrÒ   )NN)NN)rK  )jr<   r?   rW   r–   Úcollectionsr1   Úzlibrù   ÚImportErrorrí   rú   Zlzmarû   Úpwdr   Zgrpr   r.   rm   r   r   rO   rU   rÞ   rá   rB   rq   rd  Ú__all__r-   r   r    r   r   r'   r,   r(   r)   r:   rF   rN   r   r]   r`   rc   r	   r
   r€   r   r   r   r   r²   r   Ústat_resultrº   r¼   r¿   rÈ   rp   rÀ   rÁ   Úsupports_dir_fdr³   Úsupports_fdr‰   rÍ   r   Zavoids_symlink_attacksrÖ   r   rÙ   rÚ   ré   rê   r	  r  r  r   r   r   r   r   r1  r   r   r2  r9  r:  r,  r;  r   r©   Ú
namedtuplerC  rE  Ú__doc__rF  rD  r>  r   r   rU  ÚF_OKÚX_OKr   r%   r%   r%   r&   Ú<module>   sr  






            ù
@
7B ÿ
A ÿ
.	
	4ÿ
þ
ý
>?	      ÿ
A
- 
ÿÿÿÿ

        ÿ
8  ÿ
"þ
ÿ
ÿ
ÿ
*



 
1