o
     JAf|!                     @   sD  	 d dl Z d dlmZ d dlZzd dlZW n ey    dZY nw d dlmZ d dlm	Z	 d dl
mZ d dlmZ zd dlmZ W n eyL   dZY nw zd dlmZ W n ey`   dZY nw d	d
 Zdd Z	 	d"ddZd#ddZedgdfedgdfedgdfedgdfedgdfeg dfdZdd Z	 	d$d d!ZdS )%    N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc                 C   N   	 t d u s	| d u rd S zt | }W n ty   d }Y nw |d ur%|d S d S N   )r   KeyErrornameresult r   -/usr/lib/python3.10/distutils/archive_util.py_get_gid      r   c                 C   r	   r
   )r   r   r   r   r   r   _get_uid+   r   r   gzipc                    s4  	 dddddd}dddd	d
}|d ur||  vrtd| d }	|dkr.|	||d7 }	ttj|	|d dd l}
t	d t
t  fdd}|sq|
|	d||  }z|j||d W |  n|  w |dkrtdt |	||  }tjdkr||	|g}n|d|	g}t||d |S |	S )Ngzbz2xz )r   bzip2r   Ncompressz.gzz.bz2z.xzz.Z)r   r   r   r   zKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr   dry_runr   zCreating tar archivec                    s,    d ur
 | _ | _d ur| _| _| S N)gidgnameuiduname)tarinfor   groupownerr!   r   r   _set_uid_gida   s   z"make_tarball.<locals>._set_uid_gidzw|%s)filterz'compress' will be deprecated.win32z-f)keys
ValueErrorgetr   ospathdirnametarfiler   infor   r   openaddcloser   PendingDeprecationWarningsysplatformr   )	base_namebase_dirr   verboser   r&   r%   tar_compressioncompress_extarchive_namer0   r'   tarZcompressed_namecmdr   r$   r   make_tarball7   sD   
	


r@   c              
   C   s  	 | d }t tj||d td u r5|rd}nd}ztd|||g|d W |S  ty4   td| w td|| |sztj	|dtj
d	}W n ty[   tj	|dtjd	}Y nw |o |tjkr{tjtj|d
}||| td| t|D ]D\}}	}
|	D ]}tjtj||d
}||| td| q|
D ]}tjtj||}tj|r||| td| qqW d    |S 1 sw   Y  |S )Nz.zipr   z-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)compressionr   zadding '%s')r   r-   r.   r/   zipfiler   r   r   r1   ZipFileZIP_DEFLATEDRuntimeErrorZ
ZIP_STOREDcurdirnormpathjoinwritewalkisfile)r8   r9   r:   r   zip_filenameZ
zipoptionsrA   r.   dirpathdirnames	filenamesr   r   r   r   make_zipfile   sh   %



rR   )r   r   zgzip'ed tar-file)r   r   zbzip2'ed tar-file)r   r   zxz'ed tar-file)r   r   zcompressed tar file)r   Nzuncompressed tar filezZIP file)gztarbztarxztarZztarr>   rA   c                 C   s    	 | D ]
}|t vr|  S qd S r   )ARCHIVE_FORMATS)formatsformatr   r   r   check_archive_formats   s   rY   c              
   C   s
  	 t  }|d urtd| t j| } |st | |d u r#t j}d|i}	zt| }
W n t	y:   t
d| w |
d }|
d D ]\}}||	|< qC|dkrX||	d< ||	d< z|| |fi |	}W |d urrtd	| t | |S |d urtd	| t | w w )
Nzchanging into '%s'r   zunknown archive format '%s'r      rA   r&   r%   zchanging back to '%s')r-   getcwdr   debugr.   abspathchdirrH   rV   r   r+   )r8   rX   root_dirr9   r:   r   r&   r%   save_cwdkwargsformat_infofuncargvalfilenamer   r   r   make_archive   s>   


rg   )r   r   r   NN)r   r   )NNr   r   NN)r-   warningsr   r6   rD   ImportErrorZdistutils.errorsr   Zdistutils.spawnr   Zdistutils.dir_utilr   Z	distutilsr   pwdr   grpr   r   r   r@   rR   rV   rY   rg   r   r   r   r   <module>   sP    

H
=



	
