a
    |ӓh                     @   s   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m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)sixordered_set   )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   F/var/www/auris/lib/python3.9/site-packages/setuptools/command/sdist.pywalk_revctrl   s    r   c                       s  e Zd ZdZg dZi Zg d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dd Zejdk pdej  kodk n  pdej  kodk n  Zere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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>)       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}||v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formatsr0   r   r   r   r/   C   s    
zsdist._default_to_gztarc                 C   s8   |    tj|  W d   n1 s*0    Y  dS )z%
        Workaround for #516
        N)_remove_os_linkr-   r   r$   r0   r   r   r   r$   I   s    
zsdist.make_distributionc               
   c   sp   G dd d} t td| }zt`W n ty4   Y n0 zdV  W || urlttd| n|| urjttd| 0 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   NoValueW   s   r<   linkN)r%   r   r=   	Exceptionsetattr)r<   Zorig_valr   r   r   r8   P   s    zsdist._remove_os_linkc                 C   sJ   zt j|  W n4 tyD   t \}}}|jjjd 	   Y n0 d S )Ntemplate)
r-   r   read_templater>   r5   exc_infotb_nexttb_framef_localsclose)r'   _tbr   r   r   Z__read_template_hacke   s    zsdist.__read_template_hack)      rI   )r1   r   )r1   r      )r1   rI   )r1   rI   r   c                    s8   t jrt|  n
t   tjdr4| j	d d S )Nzpyproject.toml)
r   PY2r   _add_defaults_optionalsuperr   r    isfiler   r   r0   	__class__r   r   rM   |   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'   rR   r   r   r   _add_defaults_python   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_filesrW   r   r   r   rV      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   rG   src_dir	filenamesnamer   r   r   r      s   
z(sdist._add_data_files.<locals>.<genexpr>N)r   rT   )r'   rY   r   r   r   rU      s    zsdist._add_data_filesc                    sB   z t jrt|  n
t   W n ty<   td Y n0 d S )Nz&data_files contains unexpected objects)r   rL   r   _add_defaults_data_filesrN   	TypeErrorr   warnr0   rP   r   r   r]      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    existsr_   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!   hasattrra   unlink	copy_filer   Zsave_version_info)r'   base_dirfilesdestr   r   r   rc      s    
zsdist.make_release_treec                 C   sT   t j| jsdS t| jd}| }W d    n1 s>0    Y  |d kS )NFrbz+# file GENERATED by distutils, do NOT edit
)r   r    rO   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 ]b}tjs\z|d}W n$ tyZ   t d|  Y qY n0 |	 }|
ds|stq| 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'rj   zUTF-8z"%r not UTF-8 decodable -- skipping#N)r   infork   rm   r   rL   decodeUnicodeDecodeErrorr_   strip
startswithr   r   rF   )r'   rk   liner   r   r   read_manifest   s    
zsdist.read_manifestc                 C   s   t  }| jd}|dd\}}|du r8td n
|| z|| jj	j
 W n tyr   td Y n0 |D ]&}tj|sxtd| || qx| j| dS )zvChecks if license_file' or 'license_files' is configured and adds any
        valid paths to 'self.filelist'.
        metadatalicense_file)NNNz''license_file' option was not specifiedz,warning: 'license_files' option is malformedz8warning: Failed to find the configured license file '%s')r   Z
OrderedSetr&   get_option_dictgetr   debugaddupdater{   Zlicense_filesr^   r_   r   r    ra   remover   rT   )r'   rh   optsrG   r|   rb   r   r   r   check_license   s$    
zsdist.check_license)!r9   r:   r;   __doc__user_optionsnegative_optZREADME_EXTENSIONStupler`   r+   r.   r/   r$   staticmethod
contextlibcontextmanagerr8   Z_sdist__read_template_hackr5   r6   Zhas_leaky_handlerA   rM   rX   rV   rU   r]   r"   rc   rr   rz   r   __classcell__r   r   rP   r   r      s<   


	

r   )r   )	distutilsr   Zdistutils.command.sdistcommandr   r-   r   r5   rl   r   Zsetuptools.externr   r   Z
py36compatr   r   listZ_default_revctrlr   r   r   r   r   <module>   s   
