
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    aO                     @   sx   d dl mZ d dlm  m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ZeZd
ddZG dd	 d	eejZdS )    )logN   )sdist_add_defaults c                 c   s,   t dD ]}| | D ]
}|V  qq
dS )z%Find all files under revision controlzsetuptools.file_findersN)pkg_resourcesiter_entry_pointsload)dirnameepitem r   @/tmp/pip-install-7tp5dx2w/setuptools/setuptools/command/sdist.pywalk_revctrl   s    r   c                       s   e Zd ZdZdddgZi ZddddgZed	d
 eD Zdd Z	dd Z
dd Zdd Zeejdd Z fddZdd Zdd Zdd Z fddZdd  Zd!d" Zd#d$ Zd%d& Z  ZS )'sdistz=Smart sdist that finds anything supported by revision control)zformats=Nz6formats for source distribution (comma-separated list))z	keep-tempkz@keep the distribution tree around after creating archive file(s))z	dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist]r   z.rstz.txtz.mdc                 c   s   | ]}d  |V  qdS )z	README{0}N)format).0extr   r   r   	<genexpr>'   s     zsdist.<genexpr>c                 C   s   |  d | d}|j| _| jtj|jd |   | 	 D ]}|  | qD| 
  t| jdg }| jD ] }dd|f}||krp|| qpd S )Negg_infozSOURCES.txt
dist_filesr   r   )run_commandget_finalized_commandfilelistappendospathjoinr   check_readmeget_sub_commandsmake_distributiongetattrdistributionZarchive_files)selfZei_cmdcmd_namer   filedatar   r   r   run)   s    



z	sdist.runc                 C   s   t j|  |   d S N)origr   initialize_options_default_to_gztarr$   r   r   r   r+   <   s    zsdist.initialize_optionsc                 C   s   t jdkrd S dg| _d S )N)      r   betar   gztar)sysversion_infoformatsr-   r   r   r   r,   A   s    
zsdist._default_to_gztarc              	   C   s$   |    tj|  W 5 Q R X dS )z%
        Workaround for #516
        N)_remove_os_linkr*   r   r!   r-   r   r   r   r!   G   s    
zsdist.make_distributionc               
   c   s^   G dd d} t td| }zt`W n tk
r6   Y nX z
dV  W 5 || k	rXttd| X dS )zG
        In a context, remove and restore os.link if it exists
        c                   @   s   e Zd ZdS )z&sdist._remove_os_link.<locals>.NoValueN)__name__
__module____qualname__r   r   r   r   NoValueU   s   r9   linkN)r"   r   r:   	Exceptionsetattr)r9   Zorig_valr   r   r   r5   N   s    
zsdist._remove_os_linkc                    s&   t    tjdr"| jd d S )Nzpyproject.toml)super_add_defaults_optionalr   r   isfiler   r   r-   	__class__r   r   r>   c   s    
zsdist._add_defaults_optionalc                 C   s8   | j  r4| d}| j|  | | | dS )zgetting python filesbuild_pyN)r#   has_pure_modulesr   r   extendZget_source_files_add_data_files_safe_data_filesr$   rB   r   r   r   _add_defaults_pythonh   s    

zsdist._add_defaults_pythonc                 C   s   | j jrdS |jS )z
        Extracting data_files from build_py is known to cause
        infinite recursion errors when `include_package_data`
        is enabled, so suppress it in that case.
        r   )r#   Zinclude_package_data
data_filesrG   r   r   r   rF   o   s    zsdist._safe_data_filesc                 C   s   | j dd |D  dS )zA
        Add data files as found in build_py.data_files.
        c                 s   s.   | ]&\}}}}|D ]}t j||V  qqd S r)   )r   r   r   )r   _src_dir	filenamesnamer   r   r   r   }   s   
 z(sdist._add_data_files.<locals>.<genexpr>N)r   rD   )r$   rI   r   r   r   rE   y   s    zsdist._add_data_filesc                    s2   zt    W n tk
r,   td Y nX d S )Nz&data_files contains unexpected objects)r=   _add_defaults_data_files	TypeErrorr   warnr-   r@   r   r   rN      s    zsdist._add_defaults_data_filesc                 C   s8   | j D ]}tj|r d S q| dd| j   d S )Nz,standard file not found: should have one of z, )READMESr   r   existsrP   r   )r$   fr   r   r   r      s    

zsdist.check_readmec                 C   s^   t j| || tj|d}ttdrJtj|rJt| | 	d| | 
d| d S )Nz	setup.cfgr:   r   )r*   r   make_release_treer   r   r   hasattrrR   unlink	copy_filer   Zsave_version_info)r$   base_dirfilesdestr   r   r   rT      s    
zsdist.make_release_treec              	   C   s@   t j| jsdS t| jd}| }W 5 Q R X |d kS )NFrbz+# file GENERATED by distutils, do NOT edit
)r   r   r?   manifestioopenreadlineencode)r$   fp
first_liner   r   r   _manifest_is_not_generated   s    z sdist._manifest_is_not_generatedc              	   C   s   t d| j t| jd}|D ]^}z|d}W n& tk
rV   t d|  Y qY nX | }|ds|spq| j	
| q|  dS )zRead the manifest file (named by 'self.manifest') and use it to
        fill in 'self.filelist', the list of files to include in the source
        distribution.
        zreading manifest file '%s'r[   zUTF-8z"%r not UTF-8 decodable -- skipping#N)r   infor\   r^   decodeUnicodeDecodeErrorrP   strip
startswithr   r   close)r$   r\   liner   r   r   read_manifest   s    
zsdist.read_manifest)r6   r7   r8   __doc__user_optionsnegative_optZREADME_EXTENSIONStuplerQ   r(   r+   r,   r!   staticmethod
contextlibcontextmanagerr5   r>   rH   rF   rE   rN   r   rT   rc   rl   __classcell__r   r   r@   r   r      s0   



r   )r   )	distutilsr   Zdistutils.command.sdistcommandr   r*   r   r2   r]   rr   Z
py36compatr   r   listZ_default_revctrlr   r   r   r   r   <module>   s   
