3
Ävh7 ã @ s~ d dl mZ d dljjZd dlZd dlZd dlZd dl Z d dl
mZ ddlm
Z
d dlZeZddd„ZG d d
„ d
e
ejƒZdS )é )ÚlogN)Úsixé )Úsdist_add_defaultsÚ c c s4 x.t jdƒD ] }x|jƒ | ƒD ]
}|V qW qW dS )z%Find all files under revision controlzsetuptools.file_findersN)Ú
pkg_resourcesZiter_entry_pointsÚload)ÚdirnameZepÚitem© r ú/usr/lib/python3.6/sdist.pyÚwalk_revctrl s r
c sô e Zd ZdZd0d2d3gZi Zdd
ddgZedd„ eD ƒƒZdd„ Z dd„ Z
dd„ Zdd„ Ze
ejdd„ ƒƒZdd„ Zejd4k p®d5ej ko�d6k n p®d7ej koªd8k n Zer¸eZd$d%„ Z‡ fd&d'„Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z‡ ZS )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 zarchive 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 qdS )z README{0}N)Úformat)Ú.0Zextr r r ú ) s zsdist.c C sž | j dƒ | jdƒ}|j| _| jjtjj|jdƒƒ | jƒ x| j ƒ D ]}| j |ƒ qFW | j
ƒ t| jdg ƒ}x*| j
D ] }dd|f}||krv|j|ƒ qvW d S )NÚegg_infozSOURCES.txtÚ
dist_filesr r )Zrun_commandÚget_finalized_commandÚfilelistÚappendÚosÚpathÚjoinr Úcheck_readmeZget_sub_commandsÚmake_distributionÚgetattrÚdistributionZ
archive_files)ÚselfZei_cmdZcmd_namer ÚfileÚdatar r r Úrun+ s
z sdist.runc C s t jj| ƒ | jƒ d S )N)Úorigr Úinitialize_optionsÚ_default_to_gztar)r% r r r r* > s zsdist.initialize_optionsc C s t jdkrd S dg| _d S )Né é r Úbetar Zgztar)r, r- r r. r )ÚsysÚversion_infoZformats)r% r r r r+ C s
zsdist._default_to_gztarc C s$ | j ƒ � tjj| ƒ W dQ R X dS )z%
Workaround for #516
N)Ú_remove_os_linkr) r r" )r% r r r r" I s
zsdist.make_distributionc c s^ G dd„ dƒ} t td| ƒ}yt`W n tk
r6 Y nX z
dV W d|| k rXttd|ƒ X dS )zG
In a context, remove and restore os.link if it exists
c @ s e Zd ZdS )z&sdist._remove_os_link..NoValueN)Ú__name__Ú
__module__Ú__qualname__r r r r ÚNoValueW s r5 ÚlinkN)r# r r6 Ú ExceptionÚsetattr)r5 Zorig_valr r r r1 P s
zsdist._remove_os_linkc C sL yt jj| ƒ W n6 tk
rF tjƒ \}}}|jjjd j ƒ ‚ Y nX 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 zsdist.__read_template_hacké é r, r r é c sb | j jƒ r^| jdƒ}| jj|jƒ ƒ | j js^x0|jD ]&\}‰ }}| jj‡ fdd„|D ƒƒ q4W dS )zgetting python filesÚbuild_pyc s g | ]}t jjˆ |ƒ‘qS r )r r r )r Úfilename)Úsrc_dirr r ú
‡ s z.sdist._add_defaults_python..N)r$ Zhas_pure_modulesr r ÚextendZget_source_filesZinclude_package_dataZ
data_files)r% rE r@ Ú filenamesr )rG r Ú_add_defaults_python| s
zsdist._add_defaults_pythonc sD y t jrtj| ƒ n
tƒ jƒ W n tk
r> tjdƒ Y nX d S )Nz&data_files contains unexpected objects)r ZPY2r Ú_add_defaults_data_filesÚsuperÚ TypeErrorr Úwarn)r% )Ú __class__r r rL Š s zsdist._add_defaults_data_filesc C s: x4| j D ]}tjj|ƒrd S qW | jddj| j ƒ ƒ d S )Nz,standard file not found: should have one of z, )ÚREADMESr r ÚexistsrO r )r% Úfr r r r! “ s zsdist.check_readmec C s^ t jj| ||ƒ tjj|dƒ}ttdƒrJtjj|ƒrJtj|ƒ | j d|ƒ | j
dƒj|ƒ d S )Nz setup.cfgr6 r )r) r Úmake_release_treer r r ÚhasattrrR ÚunlinkZ copy_filer Zsave_version_info)r% Zbase_dirÚfilesÚdestr r r rT � s
zsdist.make_release_treec C s@ t jj| jƒsdS tj| jdƒ�}|jƒ }W d Q R X |djƒ kS )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 jd| jƒ t| jdƒ}xl|D ]d}tjr^y|jdƒ}W n$ tk
r\ t jd| ƒ w Y nX |j ƒ }|j
dƒs | rxq | jj|ƒ q W |j
ƒ dS )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.
zreading manifest file '%s'rY zUTF-8z"%r not UTF-8 decodable -- skippingú#N)r Úinfor[ r] r ZPY3ÚdecodeÚUnicodeDecodeErrorrO ÚstripÚ
startswithr r r? )r% r[ Úliner r r Ú
read_manifest´ s
zsdist.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__Zuser_optionsZnegative_optZREADME_EXTENSIONSÚtuplerQ r( r* r+ r" ÚstaticmethodÚ
contextlibÚcontextmanagerr1 Z_sdist__read_template_hackr/ r0 Zhas_leaky_handler: rK rL r! rT ra ri Ú
__classcell__r r )rP r r s:
r )r )Z distutilsr Zdistutils.command.sdistZcommandr r) r r/ r\ rn Zsetuptools.externr Z
py36compatr r ÚlistZ_default_revctrlr
r r r r Ú s