3 �L�j��A@s�ddlZddlZddlZddlZddlZddlZyddlZ[dZWnek rZdZYnXyddl Z [ dZ Wnek r�dZ YnXyddl Z [ dZ Wnek r�dZ YnXyddl mZWnek r�dZYnXyddlmZWnek �rdZYnXdddd d d d d dddddddddddddddddgZGdd�de�ZGd d�de�ZGd!d�de�ZGd"d�de�ZGd#d$�d$e�ZGd%d&�d&e�Zd�d)d�Zd*d+�Zdd,�d-d�Zdd,�d.d�Zeed/��r�dd,�d0d1�Znd2d1�Zdd,�d3d �Z dd,�d4d �Z!dd,�d5d �Z"d6d�Z#dde"dfd7d �Z$d8d9�Z%d:d;�Z&ej'ejej(ej)hej*k�ozej+ej,k�ozejej-kZ.d�ddd<�d=d�Z/e.e/_0d>d?�Z1e"fd@d �Z2dAdB�Z3dCdD�Z4dEdF�Z5d�dHdI�Z6d�dJdK�Z7dLe6d�gdNfiZ8e�re6d�gdOfe8dP<e7gdQfe8dR<e �re6d�gdTfe8dU<e �r4e6d�gdWfe8dX<dYd�Z9d�d[d�Z:d\d�Z;d�d]d�Zd�dad�Z?dbd�Z@dcdd�ZAdedf�ZBddg�dhdi�ZCdjgeCgdNfdkgeBgdQfdl�ZDe�r�dmdngeCgdOfeDdP<e �r�dodpgeCgdTfeDdU<e �rdqdrgeCgdWfeDdX<dsdt�ZEd�ddg�dud�ZFeedv��r`ejGdw�ejHdxdy�ZIdzeIjJ_Kd{eIjL_Kd|eIjM_Kd}dw�ZNn2ejOd~k�r�ddlPZPejGdw�ejHdxdy�ZIddw�ZNd�d�d�ZQd�d�d�ZRejSejTBdfd�d�ZUdS)��NTF)�getpwnam)�getgrnam� 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 eZdZdS)r N)�__name__� __module__� __qualname__�r r �/usr/lib64/python3.6/shutil.pyr 7sc@s eZdZdS)rN)rrrr r r r!r:sc@s eZdZdS)rN)rrrr r r r!r=sc@s eZdZdS)rN)rrrr r r r!rAsc@s eZdZdS)� ReadErrorN)rrrr r r r!r"Dsr"c@s eZdZdS)� RegistryErrorN)rrrr r r r!r#Gsr#�icCs$x|j|�}|sP|j|�qWdS)N)�read�write)�fsrc�fdstZlengthZbufr r r!rLs  c CsXttjd�r0ytjj||�Stk r.dSXtjjtjj|��tjjtjj|��kS)N�samefileF)�hasattr�os�pathr)�OSError�normcase�abspath)�src�dstr r r!� _samefileTs r2)�follow_symlinkscCs�t||�rtdj||���xL||gD]@}ytj|�}Wntk rJYq$Xtj|j�r$td|��q$W| r�tj j |�r�tj tj |�|�n6t |d��&}t |d��}t||�WdQRXWdQRX|S)Nz{!r} and {!r} are the same filez`%s` is a named pipe�rb�wb)r2r�formatr+�statr-�S_ISFIFO�st_moderr,�islink�symlink�readlink�openr)r0r1r3�fn�str'r(r r r!r`s    cCsz| r>tjj|�r>tjj|�r>ttd�r8tjtj}}q\dSnttd�rXtjtj}}ndS||�}||tj|j ��dS)N�lchmod�chmod) r+r,r:r*�lstatr@r7rA�S_IMODEr9)r0r1r3Z stat_funcZ chmod_funcr?r r r!r}s  � listxattrcCs�ytj||d�}Wn4tk rF}z|jtjtjfkr8�dSd}~XnXxn|D]f}y&tj|||d�}tj||||d�WqNtk r�}z|jtjtjtjfkr��WYdd}~XqNXqNWdS)N)r3) r+rDr-�errno�ENOTSUPZENODATA�getxattr�setxattrZEPERM)r0r1r3�names�e�name�valuer r r!� _copyxattr�s  rMcOsdS)Nr )�args�kwargsr r r!rM�sc s6ddd�dd��|p,tjj|�o*tjj|� }|r@�fdd�}n �fdd�}|d�||d�}tj|j�}|d �||j|jf|d�y|d �|||d�Wntk r�YnXt |d ��r$y|d �||j |d�WnPt k �r"}z2x*dD] }t t |�r�|j t t |�kr�Pq�W�WYdd}~XnXt|||d�dS)N)�nsr3cWsdS)Nr )rPr3rNr r r!�_nop�szcopystat.._nopcs tt|��S)N)�getattrr+)rK)rQr r!�lookup�szcopystat..lookupcstt|��}|tjkr|S�S)N)rRr+�supports_follow_symlinks)rKr>)rQr r!rS�s  r7)r3�utimerA�st_flagsZchflags� EOPNOTSUPPrF)rWrF)r+r,r:r7rCr9� st_atime_ns� st_mtime_ns�NotImplementedErrorr*rVr-rErRrM) r0r1r3ZfollowrSr?�mode�why�errr )rQr!r�s,      cCsBtjj|�r"tjj|tjj|��}t|||d�t|||d�|S)N)r3)r+r,�isdir�join�basenamerr)r0r1r3r r r!r�s cCsBtjj|�r"tjj|tjj|��}t|||d�t|||d�|S)N)r3)r+r,r^r_r`rr)r0r1r3r r r!r �s cs�fdd�}|S)Ncs,g}x�D]}|jtj||��q Wt|�S)N)�extend�fnmatch�filter�set)r,rI� ignored_names�pattern)�patternsr r!�_ignore_patternss z)ignore_patterns.._ignore_patternsr )rgrhr )rgr!r s cCs�tj|�}|dk r|||�}nt�}tj|�g}�xB|D�]8} | |krJq:tjj|| �} tjj|| �} y�tjj| �r�tj| �} |r�tj| | �t | | | d�ny td��Wn0tk �r�|tjj|tj�||d�YnXWdtj| �XqVytj||d�WqVtk �r�|tj|tj�||d�YqVXqVWdS)NF)�dir_fdr3r)r{)Z entry_namer{z%Cannot call rmtree on a symbolic link)r+rir-�filenamersrtr,r_r7r9rur=�O_RDONLY�samestat�fstat�_rmtree_safe_fdrxr:�closerw) �topfdr,ryrIr]rKrz�orig_str[�dirfdr r r!r��sL$     r�)r{� _onexc_kwargsc!s�|rdd�}n&|dkr dd�}n|s4|��fdd�}t�rtt|t�rNtj|�}ytj||dd�}Wn&tk r�|tj|tj ��dSXytj |tj |d�}Wn&tk r�|tj|tj ��dSXz�tj j |tj|���r*t|||�ytj||d�Wn(tk �r&|tj|tj ��YnXn8y td��Wn*tk �r`|tj j|tj ��YnXWdtj|�Xn t||�SdS) Nc_sdS)Nr )rNrOr r r!ry�szrmtree..onerrorc_s�dS)Nr )rNrOr r r!ry�scs �|||�S)Nr )�funcr,rtrO)�_onerrorr r!ry�sF)r{r3)r{z%Cannot call rmtree on a symbolic link)�_use_fd_functions� isinstance�bytesr+�fsdecoder7� ExceptionrBrsrtr=r}r,r~rr�rxr-r:r�rv)r,� ignore_errorsryr{r�r��fdr )r�r!r �sB        cCs&tjjtjjpd}tjj|j|��S)N�)r+r,�sep�altsepr`�rstrip)r,r�r r r!� _basenamesr�c Cs|}tjj|�rTt||�r*tj||�dStjj|t|��}tjj|�rTtd|��ytj||�Wn�t k r�tjj |�r�tj |�}tj ||�tj |�nTtjj|�r�t||�r�td||f��t|||dd�t|�n|||�tj |�YnX|S)Nz$Destination path '%s' already existsz.Cannot move a directory '%s' into itself '%s'.T)rprn)r+r,r^r2�renamer_r�rkr r-r:r<r;rw� _destinsrcr r )r0r1rpZreal_dstrrr r r!r s2              cCsVtjj|�}tjj|�}|jtjj�s2|tjj7}|jtjj�sL|tjj7}|j|�S)N)r+r,r/�endswithr�� startswith)r0r1r r r!r�Bs    r�c CsNtdks|dkrdSy t|�}Wntk r8d}YnX|dk rJ|dSdS)N�)r�KeyError)rK�resultr r r!�_get_gidKs  r�c CsNtdks|dkrdSy t|�}Wntk r8d}YnX|dk rJ|dSdS)Nr�)rr�)rKr�r r r!�_get_uidWs  r��gzipc s"|dkrd}nDtr |dkr d}n2tr2|dkr2d}n trD|dkrDd}ntdj|���ddl} |rfd |nd} |d | } tjj| �} | r�tjj | � r�|dk r�|j d | �|s�tj | �|dk r�|j d �t ���t �������fd d�} |�s| j| d|�}z|j|| d�Wd|j�X| S)Nr�r�Zgz�bzip2�bz2�xzzCbad value for 'compress', or compression format not supported : {0}r�.z.tarz creating %szCreating tar archivecs,�dk r�|_�|_�dk r(�|_�|_|S)N)�gidZgname�uid�uname)Ztarinfo)r��group�ownerr�r r!� _set_uid_gid�sz#_make_tarball.._set_uid_gidzw|%s)rc)�_ZLIB_SUPPORTED�_BZ2_SUPPORTED�_LZMA_SUPPORTED� ValueErrorr6�tarfiler+r,�dirnamerk�inforjr�r�r=�addr�)� base_name�base_dir�compress�verbose�dry_runr�r��loggerZtar_compressionr�Z compress_extZ archive_name� archive_dirr��tarr )r�r�r�r�r!� _make_tarballcs<          r�c Cs|ddl}|d}tjj|�}|rPtjj|� rP|dk rB|jd|�|sPtj|�|dk rf|jd||�|�sx|j|d|jd���}tjj |�} | tj kr�|j | | �|dk r�|jd| �x�tj |�D]�\} } } xFt | �D]:} tjj tjj| | ��} |j | | �|dk r�|jd| �q�WxT| D]L} tjj tjj| | ��} tjj| ��r|j | | �|dk �r|jd| ��qWq�WWdQRX|S)Nrz.zipz creating %sz#creating '%s' and adding '%s' to it�w)Z compressionz adding '%s')�zipfiler+r,r�rkr�rj�ZipFileZ ZIP_DEFLATED�normpath�curdirr&�walk�sortedr_�isfile)r�r�r�r�r�r�Z zip_filenamer�Zzfr,�dirpathZdirnames� filenamesrKr r r!� _make_zipfile�s@             r�r�r�zuncompressed tar filezgzip'ed tar-fileZgztarzZIP file�zipr�zbzip2'ed tar-fileZbztarr�zxz'ed tar-fileZxztarcCsdd�tj�D�}|j�|S)NcSsg|]\}}||df�qS)r�r )�.0rK�registryr r r!� �sz'get_archive_formats..)�_ARCHIVE_FORMATS�items�sort)�formatsr r r!r�s r�cCsz|dkr g}t|�s td|��t|ttf�s6td��x0|D](}t|ttf� s\t|�dkr|dk r$|jd|�tjj|�}|s>tj|�|dkrLtj}||d�} y t|} Wn tk r�t d|��YnX| d} x| dD]\} }|| | <q�W|dkr�|| d<|| d<z| ||f| �}Wd|dk r�|dk r�|jd | �tj| �X|S) Nzchanging into '%s')r�r�zunknown archive format '%s'r�r�r�r�zchanging back to '%s') r+�getcwd�debugr,r/�chdirr�r�r�r�)r�r6Zroot_dirr�r�r�r�r�r�Zsave_cwdrO� format_infor��arg�valr|r r r!rs6        cCsdd�tj�D�}|j�|S)NcSs"g|]\}}||d|df�qS)r�r )r�rKr�r r r!r�@sz&get_unpack_formats..)�_UNPACK_FORMATSr�r�)r�r r r!r:s c Csvi}x.tj�D]"\}}x|dD] }|||<q WqWx,|D]$}||kr:d}t||||f��q:Wt|�srtd��dS)Nrz!%s is already registered for "%s"z*The registered function must be a callable)r�r�r#r�r�) � extensionsr�r�Zexisting_extensionsrKr��ext� extension�msgr r r!�_check_unpack_optionsEs r�cCs,|dkr g}t|||�||||ft|<dS)N)r�r�)rKr�r�r�r�r r r!rWs cCs t|=dS)N)r�)rKr r r!rmscCs&tjj|�}tjj|�s"tj|�dS)N)r+r,r�r^rj)r,r�r r r!�_ensure_directoryqs  r�c Cs�ddl}|j|�std|��|j|�}z�x�|j�D]�}|j}|jd�s4d|krRq4tjj |f|j d���}|spq4t |�|j d�s4|j |j�}t|d�}z|j|�Wd|j�~Xq4WWd|j�XdS)Nrz%s is not a zip file�/z..r5)r�Z is_zipfiler"r�Zinfolistr|r�r+r,r_�splitr�r�r%r=r&r�) r|� extract_dirr�r�r�rK�target�data�fr r r!�_unpack_zipfilews*       r�)rccCs\ddl}y|j|�}Wn"|jk r8td|��YnXz|j||d�Wd|j�XdS)Nrz/%s is not a compressed or uncompressed tar file)rc)r�r=ZTarErrorr"Z extractallr�)r|r�rcr�Ztarobjr r r!�_unpack_tarfile�sr�z.tarz.zip)r�r�z.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzcCs:x4tj�D](\}}x|dD]}|j|�r|SqWq WdS)Nr)r�r�r�)r|rKr�r�r r r!�_find_unpack_format�s   r�c Cs�|dkrtj�}|dkri}nd|i}|dk r�y t|}Wn"tk r\tdj|���YnX|d}|||ft|d�|��nRt|�}|dkr�tdj|���t|d}tt|d�}|j |�|||f|�dS)NrczUnknown unpack format '{0}'r�r�zUnknown archive format '{0}') r+r�r�r�r�r6�dictr�r"�update)r|r�r6rcZ filter_kwargsr�r�rOr r r!r�s&   �statvfs� disk_usageZusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytescCs@tj|�}|j|j}|j|j}|j|j|j}t|||�S)N)r+r��f_bavail�f_frsize�f_blocks�f_bfree�_ntuple_diskusage)r,r?�free�total�usedr r r!r��s    �ntcCs"tj|�\}}||}t|||�S)N)r�Z _getdiskusager�)r,r�r�r�r r r!r�scCs�|dkr|dkrtd��|}|}|dkr.d}n(t|t�rVt|�}|dkrVtdj|���|dkrdd}n(t|t�s�t|�}|dkr�tdj|���tj |||�dS)Nzuser and/or group must be setr�zno such user: {!r}zno such group: {!r}�����r�) r�r�rmr�� LookupErrorr6�intr�r+r)r,�userr�Z_userZ_groupr r r!rs"  �P�cCs�yttjd�}Wnttfk r.d}YnXyttjd�}Wnttfk r^d}YnX|dksp|dkr�ytjtjj��}Wn$t tt fk r�tj |�}YnX|dkr�|j }|dkr�|j }tj ||f�S)NZCOLUMNSrZLINES)r�r+�environr�r�rrs� __stdout__�fileno�AttributeErrorr-� terminal_size�columns�lines)Zfallbackrr�sizer r r!r2s$  c s"dd�}tjj��r&|�|�r"�SdS|dkr>tjjdtj�}|sFdS|jtj�}tj dkr�tj |krt|j dtj �tjjdd�jtj�}t �fdd �|D��r��g}q‡fd d �|D�}n�g}t �}xT|D]L}tjj|�}||kr�|j|�x(|D] } tjj|| �} || |�r�| Sq�Wq�WdS) NcSs&tjj|�o$tj||�o$tjj|� S)N)r+r,rk�accessr^)r>r[r r r!� _access_checklszwhich.._access_check�PATHZwin32rZPATHEXTr�c3s |]}�j�j|j��VqdS)N)�lowerr�)r�r�)�cmdr r!� �szwhich..csg|] }�|�qSr r )r�r�)r r r!r��szwhich..)r+r,r�r�get�defpathr��pathseprs�platformr��insert�anyrdr.r�r_) r r[r,r Zpathext�files�seen�dirZnormdirZthefilerKr )r r!r_s8            �@)r)FN)r�rrNNN)rrN)r�N)r�r�)r�r�)r�r�)Nr�)NNrrNNN)Nr�)NN)NN�r�r�)r)Vr+rsr7rb� collectionsrE�zlibr�� ImportErrorr�r�Zlzmar��pwdrZgrpr�__all__r-r rrrr"r�r#rr2rrr*rMrrr rr rvr�r=rwrx�supports_dir_fdri� supports_fdrTr�r Zavoids_symlink_attacksr�r r�r�r�r�r�r�rrrrrr�rrr�r�r�r�r�rrl� namedtupler�r��__doc__r�r�r�rKr�rr�F_OK�X_OKrr r r r!�s�          :  Y!0  : 8    @ -     6  "       /        -