o
    g                     @   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y-   dZY nw z	d dl	Z	[	dZ
W n eyB   dZ
Y nw z	d dlZ[dZW n eyW   dZY nw e jdkZd ZZe jdkrkd dlZnerqd dlZerudndZee doejd	aeoe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 d.rdd)d/d0Z+nd1d0 Z+dd)d2d3Z,dd)d4d5Z-dd)d6d7Z.d8d9 Z/	dd:d;Z0dde.ddfd<d=Z1ee j2d>r?d?d@ Z3dAdB Z4ndCd@ Z3dDdB Z4dEdF Z5dGdH Z6e j7e je j8e j9he j:koie j;e j<v oie je j=v Z>ddIdJZ?e>e?_@dKdL ZAe.fdMdNZBdOdP ZCdQdR ZDdSdT ZEdUdV ZF	 	ddXdYZGddZd[ZHd\eGd]gd^fiZIereGd_gd`feIda< eHg dbfeIdc< e
reGddgdefeIdf< ereGdggdhfeIdi< djdk ZJddmdnZKdodp ZL	 	ddqdrZMdsdt ZNdudv ZO		lddwdxZPdydz ZQd{d| ZRd}d~ ZSdd ZTdgeTg d^fdgeSg dbfdZUerddgeTg d`feUda< e
r$ddgeTg defeUdf< er1ddgeTg dhfeUdi< dd ZVdddZWee dr\eXd eYddZZdeZj[_\deZj]_\deZj^_\dd Z_nerneXd eYddZZdd Z_dddZ`dddZadd Zbe jce jdB dfddZedS )    NTFntposixi   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dS )r   N__name__
__module____qualname__ r%   r%   </Users/admin/.pyenv/versions/3.10.0/lib/python3.10/shutil.pyr   ;       r   c                   @   r    )r   Nr!   r%   r%   r%   r&   r   >   r'   r   c                   @   r    )r   Nr!   r%   r%   r%   r&   r   A   r'   r   c                   @   r    )r   Nr!   r%   r%   r%   r&   r   E   r'   r   c                   @   r    )	ReadErrorNr!   r%   r%   r%   r&   r(   H   r'   r(   c                   @   r    )RegistryErrorNr!   r%   r%   r%   r&   r)   K   r'   r)   c                   @   r    )_GiveupOnFastCopyNr!   r%   r%   r%   r&   r*   O   r'   r*   c              
   C   s   	 z
|   }|  }W n ty } zt|d }~ww z
t||| W d S  tyJ } z| j|_|j|_|j	t	j
t	jhv rCt||d d }~ww N)fileno	Exceptionr*   r   r   OSErrornamefilename	filename2errnoEINVALENOTSUP)fsrcfdstflagsinfdoutfderrr%   r%   r&   _fastcopy_fcopyfileT   s$   r;   c              
   C   s&  	 z
|   }|  }W n ty } zt|d }~ww ztt|jd}W n ty2   d}Y nw tj	dk r=t
|d}d}	 z
t||||}W n= ty } z1| j|_|j|_|jtjkrfdat||jtjkro|d |dkrt|dtjdkrt||d }~ww |dkrd S ||7 }q@)Ni   i   l        i   @r   TF)r,   r-   r*   maxosfstatst_sizer.   sysmaxsizeminr   r/   r0   r1   r2   ENOTSOCK_USE_CP_SENDFILEENOSPClseekSEEK_CUR)r5   r6   r8   r9   r:   	blocksizeoffsetsentr%   r%   r&   _fastcopy_sendfileh   sH   

rK   c              	   C   s   	 | j }|j}tt|6}	 ||}|sq;||k r6|d | }|| W d    n1 s0w   Y  n|| qW d    d S 1 sFw   Y  d S NT)readintowrite
memoryview	bytearray)r5   r6   lengthfsrc_readinto
fdst_writemvnsmvr%   r%   r&   _copyfileobj_readinto   s    "rW   c                 C   s2   	 |st }| j}|j}	 ||}|sd S || qrL   )COPY_BUFSIZEreadrN   )r5   r6   rQ   	fsrc_readrS   bufr%   r%   r&   r      s   r   c                 C   s   t | tjr$ttjdr$ztj|  t|W S  ty#   Y dS w ttjdr=ztj| |W S  ty<   Y dS w tj	tj
| tj	tj
|kS )NsamestatFsamefile)
isinstancer=   DirEntryhasattrpathr\   statr.   r]   normcaseabspathsrcdstr%   r%   r&   	_samefile   s   rh   c                 C   s   t | tjr
|  S t| S r+   )r^   r=   r_   rb   fnr%   r%   r&   _stat   s   rk   c                 C   s    t | tjr
|  S tj| S r+   )r^   r=   r_   
is_symlinkra   islinkri   r%   r%   r&   _islink   s    rn   follow_symlinksc          
      C   s<  	 t d| | t| |rtd| |d}t| |gD ]4\}}zt|}W n	 ty0   Y qw t	|j
rHt|tjr@|jn|}td| trQ|dkrQ|j}q|sct| rctt| | |S t| d}zt|du}trzt||tj |W W  d    W W  d    S  ty   Y nDw trzt|| |W W  d    W W  d    S  ty   Y n!w tr|dkrt||t|t |W  d    W W  d    S t || W d    n1 sw   Y  W n t!y
 }	 ztj"|st#d| |	 d }	~	ww W d    |S 1 sw   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@   auditrh   r   format	enumeraterk   r.   rb   S_ISFIFOst_moder^   r=   r_   ra   r   _WINDOWSr?   rn   symlinkreadlinkopen_HAS_FCOPYFILEr;   r   _COPYFILE_DATAr*   rD   rK   rW   rB   rX   r   IsADirectoryErrorexistsFileNotFoundError)
rf   rg   rp   	file_sizeirj   str5   r6   er%   r%   r&   r      sx   
"

  r   c                C   sp   	 t d| | |s#t| r#tj|r#ttdr!tjtj}}nd S t	tj
}}|| }||t|j d S )Nzshutil.copymodelchmod)r@   rs   rn   r=   ra   rm   r`   lstatr   rk   chmodrb   S_IMODErw   )rf   rg   rp   	stat_func
chmod_funcr   r%   r%   r&   r	      s   
r	   	listxattrc                C   s   	 z	t j| |d}W n ty) } z|jtjtjtjfvr W Y d }~d S d }~ww |D ]5}zt j| ||d}t j||||d W q, tya } z|jtj	tjtjtjfvrW W Y d }~q,d }~ww d S Nro   )
r=   r   r.   r2   r4   ZENODATAr3   ZgetxattrZsetxattrZEPERM)rf   rg   rp   namesr   r/   valuer%   r%   r&   
_copyxattr6  s,   r   c                  O      d S r+   r%   )argskwargsr%   r%   r&   r   N     c          	   
      sZ  	 t d| | d d ddd |pt| otj| }|r& fdd}n fdd}t| tjr9| j|d}n|d	| |d}t	|j
}|d
||j|jf|d t| ||d z|d|||d W n	 tyo   Y nw t|drz|d||j|d W d S  ty } zdD ]}tt|r|jtt|kr qq W Y d }~d S d }~ww d S )Nzshutil.copystat)nsrp   c                 W   r   r+   r%   )r   rp   r   r%   r%   r&   _nop_  r   zcopystat.<locals>._nopc                    s   t t|  S r+   )getattrr=   r/   r   r%   r&   lookupf     zcopystat.<locals>.lookupc                    s   t t|  }|tjv r|S  S r+   )r   r=   supports_follow_symlinks)r/   rj   r   r%   r&   r   k  s   
ro   rb   utimer   st_flagschflags)
EOPNOTSUPPr4   )r@   rs   rn   r=   ra   rm   r^   r_   rb   r   rw   st_atime_nsst_mtime_nsr   NotImplementedErrorr`   r   r.   r2   r   )	rf   rg   rp   followr   r   modewhyr:   r%   r   r&   r
   Q  sB   
r
   c                C   D   	 t j|rt j|t j| }t| ||d t| ||d |S r   )r=   ra   isdirjoinbasenamer   r	   rf   rg   rp   r%   r%   r&   r     s   r   c                C   r   r   )r=   ra   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)ra   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   s2  |d ur|t |dd | D }nt }t j||d g }	|tu p%|tu }
| D ]}|j|v r0q(t j||j}t j||j}|
rD|n|}zf|	 }|r`t jdkr`|j
dd}|jt
jkr`d}|rt |}|rxt || t||| d n3t j|s|rW q(| rt||||||d n||| n| rt||||||d n||| W q( ty } z|	|jd  W Y d }~q(d }~w ty } z|	||t|f W Y d }~q(d }~ww zt|| W n& ty } zt|d	d d u r|	||t|f W Y d }~nd }~ww |	rt|	|S )
Nc                 S   s   g | ]}|j qS r%   r   ).0xr%   r%   r&   
<listcomp>  s    z_copytree.<locals>.<listcomp>)exist_okr   Fro   )dirs_exist_okr   winerror)r=   fspathr   makedirsr   r   r/   ra   r   rl   rb   st_reparse_tagIO_REPARSE_TAG_MOUNT_POINTrz   ry   r
   r   is_dirr   r   r   r   r.   appendstrr   )entriesrf   rg   symlinksignorecopy_functionignore_dangling_symlinksr   r   errorsuse_srcentrysrcentrysrcnamedstnamesrcobjrl   r   linktor:   r   r%   r%   r&   	_copytree  sj   



 r   c           	   
   C   sZ   	 t d| | t| }t|}W d    n1 sw   Y  t|| ||||||dS )Nzshutil.copytree)r   rf   rg   r   r   r   r   r   )r@   rs   r=   scandirlistr   )	rf   rg   r   r   r   r   r   itrr   r%   r%   r&   r     s   $

r   st_file_attributesc                 C   sJ   z| j dd}t |jo|jt j@ o|jt jk W S  ty$   Y dS w NFro   )rb   S_ISDIRrw   r   FILE_ATTRIBUTE_REPARSE_POINTr   r   r.   )entryr   r%   r%   r&   _rmtree_isdir5  s   
r   c                 C   sF   zt | }t|jp|jtj@ o|jtjkW S  t	y"   Y dS w )NF)
r=   r   rb   S_ISLNKrw   r   r   r   r   r.   )ra   r   r%   r%   r&   _rmtree_islink>  s   

r   c                 C   s$   z| j ddW S  ty   Y dS w r   )r   r.   )r   r%   r%   r&   r   G  s
   c                 C   s   t j| S r+   )r=   ra   rm   )ra   r%   r%   r&   r   M  r   c              	   C   s*  zt | }t|}W d    n1 sw   Y  W n ty/   |t j| t  g }Y nw |D ]F}|j}t|r_z
| rDtdW n tyX   |t jj	|t  Y q2w t
|| q2zt | W q2 tyx   |t j|t  Y q2w zt |  W d S  ty   |t j| t  Y d S w )N%Cannot call rmtree on a symbolic link)r=   r   r   r.   r@   exc_infora   r   rl   rm   _rmtree_unsafeunlinkrmdir)ra   onerror
scandir_itr   r   fullnamer%   r%   r&   r   Q  s>   
r   c              
   C   s$  zt | }t|}W d    n1 sw   Y  W n ty: } z||_|t j|t  W Y d }~d S d }~ww |D ]}t j||j	}z|j
dd}W n tyZ   d}Y n$w |r~z|jdd}	t|	j}W n ty}   |t j|t  Y q=w |rzt j|j	t j| d}
W n ty   |t j|t  Y q=w zLt j|	t |
rt|
|| z
t j|j	| d W n* ty   |t j|t  Y nw ztd ty   |t jj|t  Y nw W t |
 q=t |
 w z
t j|j	| d W q= ty   |t j|t  Y q=w d S )NFro   )dir_fdr   )r=   r   r   r.   r0   r@   r   ra   r   r/   r   rb   r   rw   r   r{   O_RDONLYr\   r>   _rmtree_safe_fdr   rm   closer   )topfdra   r   r   r   r:   r   r   r   orig_stdirfdr%   r%   r&   r   p  sj   
r   c              	   C   s  	 t d|  |rdd }n|d u rdd }trt| tr"t| } zt| }W n ty<   |tj| t 	  Y d S w z	t
| tj}W n tyY   |tj
| t 	  Y d S w zZtj|t|rt|| | zt|  W n* ty   |tj| t 	  Y n!w ztd ty   |tjj| t 	  Y nw W t| d S W t| d S W t| d S t| w z
t| rtdW n ty   |tjj| t 	  Y d S w t| |S )Nzshutil.rmtreec                  W   r   r+   r%   r   r%   r%   r&   r     r   zrmtree.<locals>.onerrorc                   W   s    r+   r%   r   r%   r%   r&   r     s   r   )r@   rs   _use_fd_functionsr^   bytesr=   fsdecoder   r-   r   r{   r   ra   r\   r>   r   r   r.   rm   r   r   r   )ra   ignore_errorsr   r   fdr%   r%   r&   r     sb   





r   c                 C   s2   	 t | } t jjt jjpd }t j| |S N )r=   r   ra   sepaltsepr   rstrip)ra   r   r%   r%   r&   	_basename  s   
r   c              	   C   sP  	 t d| | |}tj|r2t| |rt| | d S tj|t| }tj	|r2t
d| z	t| | W |S  ty   tj| r[t| }t|| t|  Y |S tj| rt| |rnt
d| |f t| st| tjst| rt jdkrtd| | f t| ||dd t|  Y |S || | t|  Y |S w )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@   rs   r=   ra   r   rh   renamer   r   r   r   r.   rm   rz   ry   r   
_destinsrc_is_immutableaccessW_OKlistdirplatformPermissionErrorr   r   )rf   rg   r   real_dstr   r%   r%   r&   r     sV   




r   c                 C   sV   t j| } t j|}| t jjs| t jj7 } |t jjs&|t jj7 }|| S r+   )r=   ra   rd   endswithr   
startswithre   r%   r%   r&   r   =  s   
r   c                 C   s(   t | }tjtjg}t|do|j|v S )Nr   )rk   rb   UF_IMMUTABLESF_IMMUTABLEr`   r   )rf   r   immutable_statesr%   r%   r&   r   F  s   r   c                 C   l   	 | d u rd S zddl m} W n
 ty   Y d S w z|| }W n ty+   d }Y nw |d ur4|d S d S )Nr   )getgrnam   )grpr  ImportErrorKeyError)r/   r  resultr%   r%   r&   _get_gidK      r
  c                 C   r  )Nr   )getpwnamr  )pwdr  r  r  )r/   r  r	  r%   r%   r&   _get_uid]  r  r  gzipc                    s*  	 |d u rd}n"t r|dkrd}ntr|dkrd}ntr#|dkr#d}ntd|dd l}	|r4d	| nd}
| d
 |
 }tj|}|r[tj	|s[|d urT|
d| |s[t| |d urd|
d tt  fdd}|s|	|d| }z|j||d W |  |S |  w |S )Nr   r  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+   )gidgnameuiduname)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
ValueErrorrt   tarfiler=   ra   dirnamer   infor   r  r
  r{   addr   )	base_namebase_dircompressverbosedry_runr  r  loggertar_compressionr$  compress_extarchive_namearchive_dirr  tarr%   r  r&   _make_tarballo  sD   

	
r3  c              	   C   s~  	 dd l }| d }tj| }|r(tj|s(|d ur!|d| |s(t| |d ur3|d|| |s|j|d|jdw}tj	|}	|	tj
krZ||	|	 |d urZ|d|	 t|D ]M\}
}}t|D ]}tj	tj|
|}	||	|	 |d ur|d|	 qh|D ]#}tj	tj|
|}	tj|	r||	|	 |d ur|d|	 qq_W d    |S 1 sw   Y  |S )Nr   .zipr  z#creating '%s' and adding '%s' to itw)compressionzadding '%s')zipfiler=   ra   r%  r   r&  r   ZipFileZIP_DEFLATEDnormpathcurdirrN   walksortedr   isfile)r(  r)  r+  r,  r-  r7  zip_filenamer1  zfra   dirpathdirnames	filenamesr/   r%   r%   r&   _make_zipfile  sV   


rD  r2  )r*  Nzuncompressed tar file)r*  r  zgzip'ed tar-filegztarzZIP filezip)r*  r  zbzip2'ed tar-filebztar)r*  r  zxz'ed tar-filexztarc                  C       	 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formatsr%   r%   r&   r     s   r   r   c                 C   sv   	 |d u rg }t |std| t|ttfstd|D ]}t|ttfr-t|dkr1t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	TypeErrorr^   tupler   lenrK  )r/   function
extra_argsdescriptionelementr%   r%   r&   r     s   r   c                 C   s
   t | = d S r+   )rK  r   r%   r%   r&   r     s   
r   c	              
   C   s8  	 t d| ||| t }	|d ur)|d ur|d| tj| } |s)t| |d u r0tj}||d}
zt	| }W n t
yI   td| d w |d }|d D ]\}}||
|< qR|dkrg||
d< ||
d	< z|| |fi |
}W |d ur|d ur|d
|	 t|	 |S |d ur|d ur|d
|	 t|	 w w )Nzshutil.make_archivezchanging into '%s')r,  r-  zunknown archive format '%s'r      rF  r  r  zchanging back to '%s')r@   rs   r=   getcwddebugra   rd   chdirr;  rK  r  r#  )r(  rt   root_dirr)  r+  r,  r  r  r-  save_cwdr   format_infofuncargvalr0   r%   r%   r&   r     sF   



r   c                  C   rI  )Nc                 S   s"   g | ]\}}||d  |d fqS )r      r%   )r   r/   r&  r%   r%   r&   r   M  s   " z&get_unpack_formats.<locals>.<listcomp>)_UNPACK_FORMATSrL  rM  rN  r%   r%   r&   r   G  s   r   c           	      C   sl   	 i }t  D ]\}}|d D ]}|||< qq| D ]}||v r+d}t|||| f qt|s4tdd S )Nr   z!%s is already registered for "%s"z*The registered function must be a callable)rc  rL  r)   rP  rQ  )	
extensionsrT  rU  existing_extensionsr/   r&  ext	extensionmsgr%   r%   r&   _check_unpack_optionsR  s    
ri  c                 C   s.   	 |d u rg }t ||| ||||ft| < d S r+   )ri  rc  )r/   rd  rT  rU  rV  r%   r%   r&   r   d  s
   r   c                 C   s   	 t | = d S r+   )rc  r   r%   r%   r&   r   z  s   
r   c                 C   s,   	 t j| }t j|st | d S d S r+   )r=   ra   r%  r   r   )ra   r%  r%   r%   r&   _ensure_directory~  s
   rj  c           	   
   C   s   	 dd l }|| std|  || }zd| D ]X}|j}|ds(d|v r)qtjj	|g|
dR  }|s9qt| |dsr||d"}t|d}t|| W d    n1 s^w   Y  W d    q1 smw   Y  qW |  d S |  w )Nr   z%s is not a zip file/z..rrr   )r7  
is_zipfiler(   r8  infolistr0   r   r=   ra   r   splitrj  r   r{   r   r   )	r0   extract_dirr7  rF  r&  r/   
targetpathsourcetargetr%   r%   r&   _unpack_zipfile  s4   


 rt  c                 C   sZ   	 dd l }z|| }W n |jy   td|  w z|| W |  d S |  w )Nr   z/%s is not a compressed or uncompressed tar file)r$  r{   TarErrorr(   
extractallr   )r0   rp  r$  tarobjr%   r%   r&   _unpack_tarfile  s   rx  r  r4  )r2  rF  z.tar.gzz.tgzz.tar.bz2z.tbz2z.tar.xzz.txzc                 C   s:   t  D ]\}}|d D ]}| |r|    S qqd S )Nr   )rc  rL  r   )r0   r/   r&  rg  r%   r%   r&   _find_unpack_format  s   
ry  c                 C   s   	 t d| || |d u rt }t|}t| } |d urHzt| }W n ty4   td|d w |d }|| |fi t	|d  d S t
| }|d u rWtd| t| d }t	t| d }|| |fi | d S )Nzshutil.unpack_archivezUnknown unpack format '{0}'rX  r  zUnknown archive format '{0}')r@   rs   r=   rY  r   rc  r  r#  rt   dictry  r(   )r0   rp  rt   r^  r_  r   r%   r%   r&   r     s(   

r   statvfs
disk_usageusageztotal used freezTotal space in byteszUsed space in byteszFree space in bytesc                 C   sB   	 t | }|j|j }|j|j }|j|j |j }t|||S r+   )r=   r{  f_bavailf_frsizef_blocksf_bfree_ntuple_diskusage)ra   r   freetotalusedr%   r%   r&   r|    s   
c                 C   s$   	 t | \}}|| }t|||S r+   )r   Z_getdiskusager  )ra   r  r  r  r%   r%   r&   r|    s   c                 C   s   	 t d| || |d u r|d u rtd|}|}|d u r d}nt|tr4t|}|d u r4td||d u r;d}nt|tsOt	|}|d u rOtd|t
| || d S )Nzshutil.chownzuser and/or group must be setzno such user: {!r}zno such group: {!r})r@   rs   r#  r^   r   r  LookupErrorrt   intr
  r=   r   )ra   userr  _user_groupr%   r%   r&   r     s&   

r   P      c              
   C   s   	 z	t tjd }W n ttfy   d}Y nw z	t tjd }W n ttfy.   d}Y nw |dks7|dkraz
ttj }W n t	tt
fyR   t| }Y nw |dkrZ|j}|dkra|j}t||fS )NCOLUMNSr   LINES)r  r=   environr  r#  r   r@   
__stdout__r,   AttributeErrorr.   terminal_sizecolumnslines)fallbackr  r  sizer%   r%   r&   r   6  s,   r   c                 C   s&   t j| ot | |ot j|  S r+   )r=   ra   r   r   r   )rj   r   r%   r%   r&   _access_checkg  s   r  c              	      s  	 t j rt |r S d S t t}|d u r:t jdd }|d u r:zt d}W n t	t
fy9   t j}Y nw |s>d S |rOt |}|t t j}nt |}|t j}tjdkrt j}|rit |}||vrs|d| t dpyt}dd |t jD }|rdd |D }t fd	d
|D r g}n fdd|D }n g}t }|D ](}	t j|	}
|
|vr||
 |D ]}t j|	|}t||r|    S qqd S )NPATHCS_PATHwin32r   PATHEXTc                 S   s   g | ]}|r|qS r%   r%   r   rf  r%   r%   r&   r         zwhich.<locals>.<listcomp>c                 S   s   g | ]}t |qS r%   )r=   fsencoder  r%   r%   r&   r     s    c                 3   s"    | ]}   |  V  qd S r+   )lowerr   r  cmdr%   r&   	<genexpr>  s     zwhich.<locals>.<genexpr>c                    s   g | ]} | qS r%   r%   r  r  r%   r&   r     r  )r=   ra   r%  r  r^   r   r  getconfstrr  r#  defpathr  ro  pathsepr   r@   r   r;  insertgetenv_WIN_DEFAULT_PATHEXTanyr   rc   r'  r   )r  r   ra   	use_bytesr;  pathext_sourcepathextfilesseendirnormdirthefiler/   r%   r  r&   r   l  s^   








r   )r   )F)FN)r  r   r   NNN)r   r   Nr   )NNr   r   NNN)NN)r  )fr=   r@   rb   r   collectionsr2   zlibr   r  r  r!  lzmar"  r/   rx   r   r   rX   r`   r   r   rD   r|   r  __all__r.   r   r   r   r   r(   r-   r)   r*   r;   rK   rW   r   rh   rk   rn   r   r	   r   r
   r   r   r   r   r   stat_resultr   r   r   r   r{   r   r   supports_dir_fdr   supports_fdr   r   r   avoids_symlink_attacksr   r   r   r   r
  r  r3  rD  rK  r   r   r   r   r   ri  r   r   rj  rt  rx  rc  ry  r   r   
namedtupler  r  __doc__r  r  r|  r   r   r  F_OKX_OKr   r%   r%   r%   r&   <module>   s6   



@
@B
A
.
		4


>B	

A-


8




*




 1