U
    f                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ d
dlmZ G dd deZdd ZdS )zD
Create a dist_info directory
As defined in the wheel specification
    N)contextmanager)log)Command)Path)cast   )_normalization   )egg_infoc                   @   s^   e Zd ZdZdZdddddgZdd	gZd
diZdd Zdd Z	e
eedddZdd ZdS )	dist_infoz
    This command is private and reserved for internal use of setuptools,
    users should rely on ``setuptools.build_meta`` APIs.
    z@DO NOT CALL DIRECTLY, INTERNAL ONLY: create .dist-info directory)zoutput-dir=ozYdirectory inside of which the .dist-info will becreated [default: top of the source tree])tag-datedz0Add date stamp (e.g. 20050528) to version number)z
tag-build=bz-Specify explicit tag to add to version number)no-dateDz"Don't include date stamp [default])keep-egg-infoNz,*TRANSITIONAL* will be removed in the futurer   r   r   c                 C   s(   d | _ d | _d | _d | _d | _d| _d S )NF)
output_dirnamedist_info_dirtag_date	tag_buildkeep_egg_info)self r   ;lib/python3.8/site-packages/setuptools/command/dist_info.pyinitialize_options*   s    zdist_info.initialize_optionsc                 C   s   | j }|jptj}t| jp|| _tt| d}t	| j|_
| jrN| j|_n|j| _| jrf| j|_n|j| _|  || _t| }t| }| d| | _tj| j| j d| _d S )Nr
   -z
.dist-info)ZdistributionZsrc_rootoscurdirr   r   r   egg_info_clsZreinitialize_commandstrZegg_baser   r   finalize_optionsr
   r   Z
safer_nameZget_nameZsafer_best_effort_versionZget_versionr   pathjoinr   )r   ZdistZproject_dirr
   r   versionr   r   r   r"   2   s"    

zdist_info.finalize_options)dir_pathrequires_bkpc              
   c   s^   |rT| d}t |dd tj||ddd z
d V  W 5 t |dd t|| X nd V  d S )Nz.__bkp__T)ignore_errors)Zdirs_exist_okZsymlinks)_rmshutilZcopytreeZmove)r   r&   r'   Zbkp_namer   r   r   _maybe_bkp_dirL   s    

zdist_info._maybe_bkp_dirc              	   C   s   | j jddd | j  | jj}tj|s6tdt	d
tj| j | d}| || j ||| j W 5 Q R X d S )NT)parentsexist_okz&.egg-info dir should have been createdzcreating '{}'bdist_wheel)r   mkdirr
   runr   r#   isdirAssertionErrorr   infoformatabspathr   Zget_finalized_commandr+   r   Zegg2dist)r   Zegg_info_dirr.   r   r   r   r0   Z   s    

zdist_info.runN)__name__
__module____qualname____doc__ZdescriptionZuser_optionsZboolean_optionsZnegative_optr   r"   r   r!   boolr+   r0   r   r   r   r   r      s   r   c                 K   s   t j| rtj| f| d S )N)r   r#   r1   r*   Zrmtree)Zdir_nameZoptsr   r   r   r)   h   s    r)   )r9   r   r*   
contextlibr   	distutilsr   Zdistutils.corer   pathlibr   typingr    r   r
   r    r   r)   r   r   r   r   <module>   s   V