3
A|e                 @   sr   d dl mZ d dljj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   s4   x.t jdD ] }x|j | D ]
}|V  qW qW dS )z%Find all files under revision controlzsetuptools.file_findersN)pkg_resourcesiter_entry_pointsload)dirnameepitem r   \/var/www/html/StaffProfile/staffvenv/lib/python3.6/site-packages/setuptools/command/sdist.pywalk_revctrl   s    r   c                   s   e Zd ZdZd4d6d7d8d9g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d0d1 Zd2d3 Z  ZS ):sdistz=Smart sdist that finds anything supported by revision controlformats=N6formats for source distribution (comma-separated list)	keep-tempkz1keep the distribution tree around after creating zarchive file(s)	dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]r   z.rstz.txtz.mdc             c   s   | ]}d j |V  qdS )z	README{0}N)format).0extr   r   r   	<genexpr>+   s    zsdist.<genexpr>c             C   s   | j d | jd}|j| _| jjtjj|jd | j  x| j	 D ]}| j | qFW | j
  t| jdg }x*| jD ] }dd|f}||krv|j| qvW d 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)selfei_cmdcmd_namer"   filedatar   r   r   run-   s    


z	sdist.runc             C   s   t jj|  | j  d S )N)origr   initialize_options_default_to_gztar)r/   r   r   r   r6   @   s    zsdist.initialize_optionsc             C   s   t jdkrd S dg| _d S )N      r   betar   gztar)r8   r9   r   r:   r   )sysversion_infoformats)r/   r   r   r   r7   E   s    
zsdist._default_to_gztarc          	   C   s$   | j   tjj|  W dQ R X dS )z%
        Workaround for #516
        N)_remove_os_linkr5   r   r,   )r/   r   r   r   r,   K   s    
zsdist.make_distributionc              c   s^   G dd d} t td| }yt`W n tk
r6   Y nX z
dV  W d|| 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   NoValueY   s   rC   linkN)r-   r'   rD   	Exceptionsetattr)rC   Zorig_valr   r   r   r?   R   s    
zsdist._remove_os_linkc                s&   t  j  tjjdr"| jjd d S )Nzpyproject.toml)super_add_defaults_optionalr'   r(   isfiler%   r&   )r/   )	__class__r   r   rH   g   s    
zsdist._add_defaults_optionalc             C   s8   | j j r4| jd}| jj|j  | j| 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/   rK   r   r   r   _add_defaults_pythonl   s    

zsdist._add_defaults_pythonc             C   s   |j S )a  
        Since the ``sdist`` class is also used to compute the MANIFEST
        (via :obj:`setuptools.command.egg_info.manifest_maker`),
        there might be recursion problems when trying to obtain the list of
        data_files and ``include_package_data=True`` (which in turn depends on
        the files included in the MANIFEST).

        To avoid that, ``manifest_maker`` should be able to overwrite this
        method and avoid recursive attempts to build/analyze the MANIFEST.
        )
data_files)r/   rK   r   r   r   rO   s   s    zsdist._safe_data_filesc             C   s   | j jdd |D  dS )zA
        Add data files as found in build_py.data_files.
        c             s   s.   | ]&\}}}}|D ]}t jj||V  qqd S )N)r'   r(   r)   )r   _Zsrc_dir	filenamesnamer   r   r   r       s   
z(sdist._add_data_files.<locals>.<genexpr>N)r%   rM   )r/   rQ   r   r   r   rN      s    zsdist._add_data_filesc                s2   yt  j  W n tk
r,   tjd Y nX d S )Nz&data_files contains unexpected objects)rG   _add_defaults_data_files	TypeErrorr   warn)r/   )rJ   r   r   rU      s    zsdist._add_defaults_data_filesc             C   s:   x4| j D ]}tjj|rd S qW | jddj| j   d S )Nz,standard file not found: should have one of z, )READMESr'   r(   existsrW   r)   )r/   fr   r   r   r*      s    zsdist.check_readmec             C   s^   t jj| || tjj|d}ttdrJtjj|rJtj| | j	d| | j
dj| d S )Nz	setup.cfgrD   r!   )r5   r   make_release_treer'   r(   r)   hasattrrY   unlink	copy_filer$   save_version_info)r/   base_dirfilesdestr   r   r   r[      s    
zsdist.make_release_treec          	   C   s@   t jj| jsdS tj| jd}|j }W d Q R X |dj kS )NFrbz+# file GENERATED by distutils, do NOT edit
)r'   r(   rI   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 jd| j t| jd}xf|D ]^}y|jd}W n$ tk
rV   t jd|  w Y nX |j }|jds | rrq | j	j
| q W |j  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'rc   zUTF-8z"%r not UTF-8 decodable -- skipping#N)r   inford   rf   decodeUnicodeDecodeErrorrW   strip
startswithr%   r&   close)r/   rd   liner   r   r   read_manifest   s    
zsdist.read_manifest)r   Nr   @keep the distribution tree around after creating archive file(s))r   r   ru   )r   r   r   )r   r   r   )r   r   r   )r@   rA   rB   __doc__user_optionsnegative_optZREADME_EXTENSIONStuplerX   r4   r6   r7   r,   staticmethod
contextlibcontextmanagerr?   rH   rP   rO   rN   rU   r*   r[   rk   rt   __classcell__r   r   )rJ   r   r      s<         


r   )r   )	distutilsr   Zdistutils.command.sdistcommandr   r5   r'   r<   re   r{   Z
py36compatr   r   listZ_default_revctrlr   r   r   r   r   <module>   s   
