U
    -c                     @   s   d Z ddlZddlZddl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eedddZeedddZdd Zdd ZdS )zD
Create a dist_info directory
As defined in the wheel specification
    N)contextmanager)cleandoc)Path)Command)log)	packaging)SetuptoolsDeprecationWarningc                   @   s\   e Zd ZdZd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create a .dist-info directory)z	egg-base=ezjdirectory containing .egg-info directories (default: top of the source tree) DEPRECATED: use --output-dir.)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| _d S )NF)egg_base
output_dirnamedist_info_dirtag_date	tag_buildkeep_egg_info)self r   @/tmp/pip-unpacked-wheel-izj_87as/setuptools/command/dist_info.pyinitialize_options(   s    zdist_info.initialize_optionsc                 C   s   | j r$d}t|t | j p | j| _| j}|jp4tj}t	| jp@|| _| 
d}t| j|_ | jrl| j|_n|j| _| jr| j|_n|j| _|  || _t| }t| }| d| | _tj| j| j d| _d S )NzA--egg-base is deprecated for dist_info command. Use --output-dir.egg_info-z
.dist-info)r   warningswarnr   r   distributionZsrc_rootoscurdirr   reinitialize_commandstrr   r   finalize_optionsr   _safeget_name_versionget_versionr   pathjoinr   )r   msgdistZproject_dirr   r   versionr   r   r   r&   1   s*    


zdist_info.finalize_options)dir_pathrequires_bkpc              
   c   s\   |rR| d}t |dd t||ddd z
d V  W 5 t |dd t|| X nd V  d S )Nz.__bkp__T)ignore_errors)dirs_exist_oksymlinks)_rm_copyshutilmove)r   r0   r1   Zbkp_namer   r   r   _maybe_bkp_dirP   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   get_finalized_commandr9   r   Zegg2dist)r   egg_info_dirr<   r   r   r   r>   ^   s    

zdist_info.runN)__name__
__module____qualname__descriptionuser_optionsboolean_optionsnegative_optr   r&   r   r%   boolr9   r>   r   r   r   r   r	      s   	r	   )	componentreturnc                 C   s   t dd| S )zAEscape a component used to form a wheel name according to PEP 491z	[^\w\d.]+_)resub)rN   r   r   r   r'   l   s    r'   )r/   rO   c                 C   sr   |  dd}zttj| ddW S  tjjk
rl   d| d| d}tt| t	|
d Y S X dS )	z0Convert an arbitrary string to a version string. .r   rP   zInvalid version: zk.
        !!


        ###################
        # Invalid version #
        ###################
        z is not valid according to PEP 440.

        Please make sure specify a valid version for your package.
        Also note that future releases of setuptools may halt the build process
        if an invalid version is given.
        

!!
        N)replacer%   r   r/   VersionInvalidVersionr   r    r   r'   strip)r/   vr-   r   r   r   r)   q   s    r)   c                 K   s   t j| rtj| f| d S )N)r"   r+   r?   r7   rmtree)Zdir_nameoptsr   r   r   r5      s    r5   c                 K   s*   t jdk r|dd  tj| |f| d S )N)      r3   )sysversion_infopopr7   copytree)srcdstr[   r   r   r   r6      s    
r6   )__doc__r"   rQ   r7   r^   r   
contextlibr   inspectr   pathlibr   distutils.corer   	distutilsr   Zsetuptools.externr   Zsetuptools._deprecation_warningr   r	   r%   r'   r)   r5   r6   r   r   r   r   <module>   s"   W