B
    0*\F"                 @   s@  d dl Z d dlmZ d dlZyd dlZW n ek
r@   dZY nX d dlmZ d dlm	Z	 d dl
mZ d dlmZ yd dlmZ W n ek
r   dZY nX yd dlmZ W n ek
r   dZY nX 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   sN   t d ks| d krd S yt | }W n tk
r8   d }Y nX |d k	rJ|d S d S )N   )r   KeyError)nameresult r   AC:\ALexclude\prg\programme\Python37\Lib\distutils\archive_util.py_get_gid   s    
r   c             C   sN   t d ks| d krd S yt | }W n tk
r8   d }Y nX |d k	rJ|d S d S )Nr	   )r   r
   )r   r   r   r   r   _get_uid+   s    
r   gzipc                s.  dddddd}dddd	d
}|d k	r:||  kr:td| d }	|dkrZ|	||d7 }	ttj|	|d dd l}
t	d t
t  fdd}|s|
|	d||  }z|j||d W d |  X |dkr*tdt |	||  }tjdkr||	|g}n
|d|	g}t||d |S |	S )NZ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 k	r | _ | _d k	r(| _| _| S )N)gidZgnameuidZuname)Z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   Ztar_compressionZcompress_extZarchive_namer%   r   tarZcompressed_namecmdr   )r   r   r   r   r   make_tarball7   s<    
	



r2   c          	   C   s  | d }t tj||d td krp|r.d}nd}ytd|||g|d W n  tk
rj   td| Y nX n:td|| |sytj	|dtj
d	}W n& tk
r   tj	|dtjd	}Y nX |tjkrtjtj|d
}||| td| xt|D ]\}}	}
x>|	D ]6}tjtj||d
}||| td| qW xJ|
D ]B}tjtj||}tj|rV||| td| qVW qW |  |S )Nz.zip)r   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)Zcompressionr   zadding '%s')r   r"   r#   r$   zipfiler   r   r   r&   ZZipFileZZIP_DEFLATEDRuntimeErrorZ
ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)   )r-   r.   r/   r   Zzip_filenameZ
zipoptionsr3   r#   ZdirpathZdirnames	filenamesr   r   r   r   make_zipfile   sJ    	


r>   )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)ZgztarZbztarZxztarZztarr0   r3   c             C   s   x| D ]}|t kr|S qW d S )N)ARCHIVE_FORMATS)formatsformatr   r   r   check_archive_formats   s    
rB   c          
   C   s   t  }|d k	r6td| t j| } |s6t | |d krDt j}d|i}	yt| }
W n  t	k
rx   t
d| Y nX |
d }x|
d D ]\}}||	|< qW |dkr||	d< ||	d< z|| |f|	}W d |d k	rtd	| t | X |S )
Nzchanging into '%s'r   zunknown archive format '%s'r      r3   r   r   zchanging back to '%s')r"   getcwdr   debugr#   abspathchdirr7   r?   r
   r    )r-   rA   Zroot_dirr.   r/   r   r   r   Zsave_cwdkwargsZformat_infofuncargvalfilenamer   r   r   make_archive   s2    
rM   )r   r   r   NN)r   r   )NNr   r   NN)r"   warningsr   r+   r5   ImportErrorZdistutils.errorsr   Zdistutils.spawnr   Zdistutils.dir_utilr   Z	distutilsr   Zpwdr   Zgrpr   r   r   r2   r>   r?   rB   rM   r   r   r   r   <module>   s@   


 
G
=





 