509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
Ävh7  ã               @   s~   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mZ d dlZeZddd„ZG d	d
„ d
eejƒZdS )é    )ÚlogN)Úsixé   )Ú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_resourcesZiter_entry_pointsÚload)ÚdirnameZepÚitem© r   ú/usr/lib/python3.6/sdist.pyÚwalk_revctrl   s    r   c                   sô   e Zd ZdZd0d2d3g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dd„ Zejd4k p®d5ej  ko�d6k n  p®d7ej  koªd8k n  Zer¸eZd$d%„ Z‡ fd&d'„Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z‡  ZS )9Úsdistz=Smart sdist that finds anything supported by revision controlúformats=Nú6formats for source distribution (comma-separated list)ú	keep-tempÚkz1keep the distribution tree around after creating zarchive file(s)ú	dist-dir=ÚdúFdirectory to put the source distribution archive(s) in [default: dist]r   z.rstz.txtz.mdc             c   s   | ]}d j |ƒV  qdS )z	README{0}N)Úformat)Ú.0Z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   )Zrun_commandÚget_finalized_commandÚfilelistÚappendÚosÚpathÚjoinr   Úcheck_readmeZget_sub_commandsÚmake_distributionÚgetattrÚdistributionZarchive_files)ÚselfZei_cmdZ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   r*   >   s    zsdist.initialize_optionsc             C   s   t jdkrd S dg| _d S )Né   é   r   Úbetar   Zgztar)r,   r-   r   r.   r   )ÚsysÚversion_infoZformats)r%   r   r   r   r+   C   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_linkr)   r   r"   )r%   r   r   r   r"   I   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   ÚNoValueW   s   r5   ÚlinkN)r#   r   r6   Ú	ExceptionÚsetattr)r5   Zorig_valr   r   r   r1   P   s    
zsdist._remove_os_linkc             C   sL   yt jj| ƒ W n6 tk
rF   tjƒ \}}}|jjjd j	ƒ  ‚ Y nX d S )NÚtemplate)
r)   r   Úread_templater7   r/   Úexc_infoÚtb_nextÚtb_frameÚf_localsÚclose)r%   Ú_Útbr   r   r   Z__read_template_hacke   s    zsdist.__read_template_hacké   é   r,   r   r   é   c                sb   | j jƒ r^| jdƒ}| jj|jƒ ƒ | j js^x0|jD ]&\}‰ }}| jj‡ fdd„|D ƒƒ q4W dS )zgetting python filesÚbuild_pyc                s   g | ]}t jjˆ |ƒ‘qS r   )r   r   r    )r   Úfilename)Úsrc_dirr   r   ú
<listcomp>‡   s   z.sdist._add_defaults_python.<locals>.<listcomp>N)r$   Zhas_pure_modulesr   r   ÚextendZget_source_filesZinclude_package_dataZ
data_files)r%   rE   r@   Ú	filenamesr   )rG   r   Ú_add_defaults_python|   s    

zsdist._add_defaults_pythonc                sD   y t jrtj| ƒ n
tƒ jƒ  W n tk
r>   tjdƒ Y nX d S )Nz&data_files contains unexpected objects)r   ZPY2r   Ú_add_defaults_data_filesÚsuperÚ	TypeErrorr   Úwarn)r%   )Ú	__class__r   r   rL   Š   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   ÚexistsrO   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.cfgr6   r   )r)   r   Úmake_release_treer   r   r    ÚhasattrrR   ÚunlinkZ	copy_filer   Zsave_version_info)r%   Zbase_dirÚfilesÚdestr   r   r   rT   �   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   ÚisfileÚmanifestÚioÚopenÚreadlineÚencode)r%   ÚfpZ
first_liner   r   r   Ú_manifest_is_not_generatedª   s    z sdist._manifest_is_not_generatedc             C   s”   t jd| jƒ t| jdƒ}xl|D ]d}tjr^y|jdƒ}W n$ tk
r\   t jd| ƒ w Y nX |j	ƒ }|j
dƒs | rxq | jj|ƒ q W |jƒ  dS )zªRead 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'rY   zUTF-8z"%r not UTF-8 decodable -- skippingú#N)r   Úinfor[   r]   r   ZPY3ÚdecodeÚUnicodeDecodeErrorrO   ÚstripÚ
startswithr   r   r?   )r%   r[   Úliner   r   r   Úread_manifest´   s    
zsdist.read_manifest)r   Nr   ú@keep the distribution tree around after creating archive file(s))r   r   rj   )r   r   r   )rB   rC   rB   )r,   r   )r,   r   rD   )r,   rB   )r,   rB   r   )r2   r3   r4   Ú__doc__Zuser_optionsZnegative_optZREADME_EXTENSIONSÚtuplerQ   r(   r*   r+   r"   ÚstaticmethodÚ
contextlibÚcontextmanagerr1   Z_sdist__read_template_hackr/   r0   Zhas_leaky_handler:   rK   rL   r!   rT   ra   ri   Ú__classcell__r   r   )rP   r   r      s:       
	

r   )r   )Z	distutilsr   Zdistutils.command.sdistZcommandr   r)   r   r/   r\   rn   Zsetuptools.externr   Z
py36compatr   r   ÚlistZ_default_revctrlr   r   r   r   r   Ú<module>   s   
