<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?h&                     @   sh  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yX   dZY n0 zd dl	Z	[	dZ
W n ey   dZ
Y n0 zd dlZ[dZW n ey   dZY n0 zd dlmZ W n ey   dZY n0 zd dlmZ W n ey   dZY n0 e jdkZd ZZe jdkr&d dlZner4d dlZer>dnd	Zee d
oXejdaeoheedZdZg d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d de#Z%dd Z&dd  Z'efd!d"Z(dd#d$Z)d%d& Z*d'd( Z+d)d* Z,dd+d,d-Z-dd+d.d/Z.ee d0r\dd+d1d2Z/nd3d2 Z/dd+d4d5Z0dd+d6d7Z1dd+d8d9Z2d:d; Z3dd<d=Z4dde2ddfd>d?Z5ee j6d@rdAdB Z7dCdD Z8ndEdB Z7dFdD Z8dGdH Z9dIdJ Z:e j;e je j<e j=he j>ko(e j?e j@v o(e je jAv ZBddKdLZCeBeC_DdMdN ZEe2fdOdPZFdQdR ZGdSdT ZHdUdV ZIdWdX ZJddZd[ZKdd\d]ZLd^eKd_gd`fiZMereKdagdbfeMdc< eLg ddfeMde< e
reKdfgdgfeMdh< ereKdigdjfeMdk< dldm ZNddodpZOdqdr ZPddsdtZQdudv ZRdwdx ZSddydzZTd{d| ZUd}d~ ZVdd ZWddddZXdgeXg d`fdgeWg ddfdZYer~ddgeXg dbfeYdc< e
rddgeXg dgfeYdh< erddgeXg djfeYdk< dd ZZdddddZ[ee dre\d e]ddZ^de^j__`de^ja_`de^jb_`dd Zcn$er2e\d e]ddZ^dd ZcdddZddddZedd Zfe jge jhB dfdd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/python39/lib64/python3.9/shutil.pyr   E   s   r   c                   @   s   e Zd ZdS )r    Nr!   r%   r%   r%   r&   r    H   s   r    c                   @   s   e Zd ZdS )r   Nr!   r%   r%   r%   r&   r   K   s   r   c                   @   s   e Zd ZdS )r   Nr!   r%   r%   r%   r&   r   O   s   r   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y@ } zt|W Y d }~n
d }~0 0 zt||| W nV ty } z>| j|_|j|_|j	t	j
t	jhv rt|n|d W Y d }~n
d }~0 0 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   sF  z|   }|  }W n, ty@ } zt|W Y d }~n
d }~0 0 ztt|jd}W n tyn   d}Y n0 tj	dk rt
|d}d}zt||||}W n ty( } zr| j|_|j|_|jtjkrdat||jtjkr|d |dkrt|dtjdkrt||W Y d }~qd }~0 0 |dkr8qB||7 }qd 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   s   | j }|j}tt|j}||}|s*qtq||k rj|d | }|| W d    qr1 s^0    Y  q|| qW d    n1 s0    Y  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    r   c                 C   s   t | tjrHttjdrHztj|  t|W S  tyF   Y dS 0 ttjdrzztj| |W S  tyx   Y dS 0 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 ]h\}}zt|}W n ty^   Y q80 t	|j
rt|tjr~|jn|}td| tr8|dkr8|j}q8|st| rtt| | nt| dx}zt|d }tr4z2t||tj |W W  d    W W  d    S  ty0   Y n0 ntrz.t|| |W W  d    W W  d    S  ty|   Y n0 nDtr|dkrt||t|t |W  d    W W  d    S t || W d    n1 s0    Y  W nH t!y8 }	 z.tj"|s"t#d| |	n W Y d }	~	n
d }	~	0 0 W d    n1 sP0    Y  |S )Nzshutil.copyfilez{!r} and {!r} are the same filer   z`%s` is a named piperbwbzDirectory does not exist: )$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   IsADirectoryErrorexistsFileNotFoundError)
r[   r\   re   	file_sizeir_   str4   r5   er%   r%   r&   r	      sP    
$
$".8r	   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   lstatry   r`   chmodrW   S_IMODErl   )r[   r\   re   Z	stat_funcZ
chmod_funcrw   r%   r%   r&   r
   *  s    
r
   	listxattrc                C   s   zt j| |d}W n> tyP } z&|jtjtjtjfvr: W Y d }~d S d }~0 0 |D ]l}z&t j| ||d}t j||||d W qV ty } z(|jtj	tjtjtjfvr W Y d }~qVd }~0 0 qVd S Nrd   )
r<   r}   r-   r1   r3   ZENODATAr2   getxattrsetxattrZEPERM)r[   r\   re   namesrx   r.   valuer%   r%   r&   
_copyxattr@  s    	r   c                  O   s   d S r*   r%   )argskwargsr%   r%   r&   r   X  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y   Y n0 t|dr\z|d||j|d W nX tyZ } z>dD ]*}tt|r|jtt|kr qFq W Y d }~n
d }~0 0 d S )Nzshutil.copystat)nsre   c                 W   s   d S r*   r%   )r   re   r   r%   r%   r&   _nopi  s    zcopystat.<locals>._nopc                    s   t t|  S r*   )getattrr<   r.   r   r%   r&   lookupp  s    zcopystat.<locals>.lookupc                    s   t t|  }|tjv r|S  S r*   )r   r<   supports_follow_symlinks)r.   r_   r   r%   r&   r   u  s    
rd   rW   utimer{   st_flagsZchflags)Z
EOPNOTSUPPr3   )r?   rh   rc   r<   rV   rb   rS   rT   rW   r|   rl   st_atime_nsst_mtime_nsr   NotImplementedErrorrU   r   r-   r1   r   )	r[   r\   re   Zfollowr   rw   modewhyr9   r%   r   r&   r   [  s4    
r   c                C   sB   t j|r"t j|t j| }t| ||d t| ||d |S r~   )r<   rV   isdirjoinbasenamer	   r
   r[   r\   re   r%   r%   r&   r     s
    r   c                C   sB   t j|r"t j|t j| }t| ||d t| ||d |S r~   )r<   rV   r   r   r   r	   r   r   r%   r%   r&   r     s
    r   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    r   c                 C   sD  |d ur$|t |dd | D }nt }t j||d g }	|tu pJ|tu }
| D ]}|j|v rbqPt j||j}t j||j}|
r|n|}z|	 }|rt jdkr|j
dd}|jt
jkrd}|r8t |}|rt || t||| d nBt j|s|rW qP| r,t||||||d n
||| n*| rXt||||||d n
||| W qP ty } z|	|jd  W Y d }~qPd }~0  ty } z |	||t|f W Y d }~qPd }~0 0 qPzt|| W nL ty0 } z2t|d	d d u r|	||t|f W Y d }~n
d }~0 0 |	r@t|	|S )
Nc                 S   s   g | ]
}|j qS r%   r   ).0xr%   r%   r&   
<listcomp>      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   rs   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   rz   linktor9   r   r%   r%   r&   	_copytree  s^    





$,*r   c           	   
   C   sX   t d| | t| }t|}W d    n1 s60    Y  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    (&
r   st_file_attributesc                 C   sN   z4| j dd}t |jo2|jt j@ o0|jt jk W S  tyH   Y dS 0 d S NFrd   )rW   S_ISDIRrl   r   FILE_ATTRIBUTE_REPARSE_POINTr   r   r-   )entryrw   r%   r%   r&   _rmtree_isdirA  s    
r   c                 C   sJ   z0t | }t|jp.|jtj@ o.|jtjkW S  t	yD   Y dS 0 d S )NF)
r<   rz   rW   S_ISLNKrl   r   r   r   r   r-   )rV   rw   r%   r%   r&   _rmtree_islinkJ  s    

r   c                 C   s(   z| j ddW S  ty"   Y dS 0 d S r   )r   r-   )r   r%   r%   r&   r   S  s    c                 C   s   t j| S r*   )r<   rV   rb   )rV   r%   r%   r&   r   Y  s    c              	   C   s2  z6t | }t|}W d    n1 s*0    Y  W n( ty^   |t j| t  g }Y n0 |D ]}|j}t|rz| rtdW n* ty   |t jj	|t  Y qdY n0 t
|| qdzt | W qd ty   |t j|t  Y qd0 qdzt |  W n& ty,   |t j| t  Y n0 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   ]  s0    *

r   c              
   C   s`  z6t | }t|}W d    n1 s*0    Y  W n> tyt } z&||_|t j|t  W Y d }~d S d }~0 0 |D ]}t j||j	}z|j
dd}W n ty   d}Y nP0 |rz|jdd}	t|	j}W n* ty   |t j|t  Y qzY n0 |rzt j|j	t j| d}
d}W n& tyN   |t j|t  Y n0 zt j|	t |
rt|
|| z"t |
 d}t j|j	| d W n& ty   |t j|t  Y n0 n6ztdW n( ty   |t jj|t  Y n0 W |st |
 n|st |
 0 qzzt j|j	| d W qz tyX   |t j|t  Y qz0 qzd S )NFrd   )dir_fdTr   )r<   r   r   r-   r/   r?   r   rV   r   r.   r   rW   r   rl   rz   rp   O_RDONLYrQ   r=   _rmtree_safe_fdcloser   rb   r   )topfdrV   r   r   r   r9   r   r   r   orig_stdirfdZdirfd_closedr%   r%   r&   r   |  s^    *



r   c              	   C   s  t d|  |rdd }n|d u r*dd }trt| trDt| } zt| }W n& tyx   |tj| t 	  Y d S 0 zt
| tj}d}W n& ty   |tj
| t 	  Y d S 0 ztj|t|r"t|| | zt| d}t|  W n& ty   |tj| t 	  Y n0 n6ztdW n( tyV   |tjj| t 	  Y n0 W |s~t| n|s|t| 0 nLzt| rtdW n* ty   |tjj| t 	  Y d S 0 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    FTr   )r?   rh   _use_fd_functionsrS   bytesr<   fsdecoderz   r,   r   rp   r   rV   rQ   r=   r   r   r   r-   rb   r   r   )rV   ignore_errorsr   r   fdZ	fd_closedr%   r%   r&   r     sV    




r   c                 C   s0   t | } t jjt jjpd }t j| |S )N )r<   r   rV   sepaltsepr   rstrip)rV   r   r%   r%   r&   	_basename  s    
r   c              	   C   sR  t d| | |}tj|rbt| |r8t| | d S tj|t| }tj	|rbt
d| zt| | W n tyL   tj| rt| }t|| t|  ntj| r4t| |rt
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0 |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   rs   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    





r   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   Q  s    r   c                 C   s(   t | }tjtjg}t|do&|j|v S )Nr   )r`   rW   UF_IMMUTABLESF_IMMUTABLErU   r   )r[   rw   Zimmutable_statesr%   r%   r&   r   Z  s    r   c                 C   sL   t d u s| d u rd S zt | }W n ty6   d }Y n0 |d urH|d S d S N   )r   KeyErrorr.   resultr%   r%   r&   _get_gid_  s    
r   c                 C   sL   t d u s| d u rd S zt | }W n ty6   d }Y n0 |d urH|d S d S r   )r   r   r   r%   r%   r&   _get_uidk  s    
r   gzipc                    s(  |d u 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|}|rtj	|s|d ur|
d| |st| |d ur|
d tt  fdd}|s$|	|d| }z|j||d W |  n
|  0 |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 ur | _ | _d u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   dirnamers   infor   r   r   rp   addr   )	base_namebase_dircompressverbosedry_runr   r   loggerZtar_compressionr  Zcompress_extZarchive_namearchive_dirr   tarr%   r   r&   _make_tarballw  s>    

	r  c              	   C   s  dd l }| d }tj| }|rNtj|sN|d ur@|d| |sNt| |d urd|d|| |s|j|d|jd}tj	|}	|	tj
kr||	|	 |d ur|d|	 t|D ]\}
}}t|D ]:}tj	tj|
|}	||	|	 |d ur|d|	 q|D ]L}tj	tj|
|}	tj|	r||	|	 |d ur|d|	 qqW d    n1 sv0    Y  |S )Nr   .zipr   z#creating '%s' and adding '%s' to itw)Zcompressionzadding '%s')zipfiler<   rV   r  rs   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  sF    


2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     r   z'get_archive_formats.<locals>.<listcomp>)_ARCHIVE_FORMATSitemssortZformatsr%   r%   r&   r     s
    r   r   c                 C   st   |d u 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    	
r   c                 C   s
   t | = d S r*   )r  r   r%   r%   r&   r     s    r   c	              
   C   sB  t d| ||| t }	|d urP|d ur6|d| tj| } |sPt| |d u r^tj}||d}
zt	| }W n  t
y   td| d Y n0 |d }|d D ]\}}||
|< q|dkr||
d< ||
d	< z@|| |fi |
}W |d ur>|d ur|d
|	 t|	 n,|d ur<|d ur2|d
|	 t|	 0 |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     s@    






r   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   U  r   z&get_unpack_formats.<locals>.<listcomp>)_UNPACK_FORMATSr  r  r  r%   r%   r&   r   O  s
    r   c           	      C   sj   i }t  D ]\}}|d D ]}|||< qq| D ]$}||v r0d}t|||| f q0t|sftdd S )Nr   z!%s is already registered for "%s"z*The registered function must be a callable)r0  r  r(   r   r!  )	
extensionsr$  r%  Zexisting_extensionsr.   r  ext	extensionmsgr%   r%   r&   _check_unpack_optionsZ  s    
r5  c                 C   s,   |d u rg }t ||| ||||ft| < d S r*   )r5  r0  )r.   r1  r$  r%  r&  r%   r%   r&   r   l  s    r   c                 C   s
   t | = d S r*   )r0  r   r%   r%   r&   r     s    r   c                 C   s&   t j| }t j|s"t | d S r*   )r<   rV   r  r   r   )rV   r  r%   r%   r&   _ensure_directory  s    r6  c           	   
   C   s   dd l }|| std|  || }z| D ]}|j}|ds2d|v rPq2tjj	|g|
dR  }|spq2t| |ds2||dD}t|d}t|| W d    n1 s0    Y  W d    q21 s0    Y  q2W |  n
|  0 d S )Nr   z%s is not a zip file/z..rrg   )r  Z
is_zipfiler'   r  Zinfolistr/   r   r<   rV   r   splitr6  r   rp   r   r   )	r/   extract_dirr  r  r  r.   Z
targetpathsourcetargetr%   r%   r&   _unpack_zipfile  s(    


Jr=  r   c                C   sb   dd l }z|| }W n  |jy6   td|  Y n0 z|j||d W |  n
|  0 d S )Nr   z/%s is not a compressed or uncompressed tar filer   )r  rp   ZTarErrorr'   Z
extractallr   )r/   r:  r   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   )r0  r  r   )r/   r.   r  r3  r%   r%   r&   _find_unpack_format  s
    
r?  c                C   s   t d| || |d u r t }t|}t| } |d u rBi }nd|i}|d urzt| }W n" ty   td|d Y n0 |d }|| |fi t	|d | nPt
| }|d u rtd| t| d }t	t| d |B }|| |fi | d S )Nzshutil.unpack_archiver   zUnknown unpack format '{0}'r'  r   zUnknown archive format '{0}')r?   rh   r<   r(  r   r0  r   r   ri   dictr?  r'   )r/   r:  ri   r   Zfilter_kwargsr+  r,  r   r%   r%   r&   r     s*    

 r   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<   rA  f_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)rV   rw   freetotalusedr%   r%   r&   rB  	  s
    
c                 C   s"   t | \}}|| }t|||S r*   )r   Z_getdiskusagerG  )rV   rI  rH  rJ  r%   r%   r&   rB    s    c                 C   s   t d| || |d u r(|d u r(td|}|}|d u r>d}n(t|trft|}|d u rftd||d u rtd}n(t|tst	|}|d u rtd|t
| || d S )Nzshutil.chownzuser and/or group must be setz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$    

r   P      c              
   C   s   zt tjd }W n ttfy,   d}Y n0 zt tjd }W n ttfyZ   d}Y n0 |dksl|dkrzttj }W n" t	tt
fy   t| }Y n0 |dkr|j}|dkr|j}t||fS )NZCOLUMNSr   ZLINES)rM  r<   environr   r   r   r?   
__stdout__r+   AttributeErrorr-   terminal_sizecolumnslines)ZfallbackrV  rW  sizer%   r%   r&   r   E  s$    

r   c                 C   s&   t j| o$t | |o$t j|  S r*   )r<   rV   rs   r   r   )r_   r   r%   r%   r&   _access_checkv  s    rY  c              	      s  t j rt |r S d S t t}|d u rrt jdd }|d u rrzt d}W n t	t
fyp   t j}Y n0 |szd S |rt |}|t t j}nt |}|t j}tjdkrRt j}|rt |}||vr|d| t dpt}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|	}
|
|vrb||
 |D ],}t j|	|}t||r|    S qqbd S )NPATHCS_PATHZwin32r   ZPATHEXTc                 S   s   g | ]}|r|qS r%   r%   r   r2  r%   r%   r&   r     r   zwhich.<locals>.<listcomp>c                 S   s   g | ]}t |qS r%   )r<   fsencoder\  r%   r%   r&   r     r   c                 3   s    | ]}   |  V  qd S r*   )lowerr   r\  cmdr%   r&   	<genexpr>  r   zwhich.<locals>.<genexpr>c                    s   g | ]} | qS r%   r%   r\  r_  r%   r&   r     r   )r<   rV   r  rY  rS   r   rR  getconfstrrT  r   defpathr]  r9  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   {  sV    






r   )r   )F)FN)r   r   r   NNN)r   r   N)Nr   )NNr   r   NNN)Nr   )NN)NN)rO  )jr<   r?   rW   r   collectionsr1   zlibr   ImportErrorr   r   Zlzmar   pwdr   Zgrpr   r.   rm   r   r   rO   rU   r   r   rB   rq   rh  __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   r5  r   r   r6  r=  r>  r0  r?  r   r   
namedtuplerG  rI  __doc__rJ  rH  rB  r   r   rY  F_OKX_OKr   r%   r%   r%   r&   <module>   s<  







@
@B 
A
0	
	8


BB	  
A
-

  
8  



1



 
1