Y@sddlmZddljjZddlZddlZddlZddl Z ddl Z ddl m Z ddl Z eZdddZGdd d e ejZdS) )logN)sdist_add_defaultsccs@x9tjdD](}x|j|D] }|Vq)WqWdS)z%Find all files under revision controlzsetuptools.file_findersN) pkg_resourcesiter_entry_pointsload)dirnameepitemr >/tmp/pip-build-3puug3g5/setuptools/setuptools/command/sdist.py walk_revctrlsrcs<eZdZdZd-ddddfd.gZiZd/ZddZddZddZ ddZ e e j ddZddZejd0kpd1ejkod2knpd3ejkod4knZereZd!d"Zfd#d$Zd%d&Zd'd(Zd)d*Zd+d,ZS)5sdistz=Smart sdist that finds anything supported by revision controlformats=N6formats for source distribution (comma-separated list)z keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]README README.rst README.txtcCs|jd|jd}|j|_|jjtjj|jd|jx!|j D]}|j|qaWddl }d|j j kr|j |jt|jdg}x9|jD].}dd|f}||kr|j|qWdS)Negg_infoz SOURCES.txtrcheck dist_filesrr) run_commandget_finalized_commandfilelistappendospathjoinr check_readmeget_sub_commandsdistutils.commandcommand__all__Zcheck_metadatamake_distributiongetattr distributionZ archive_files)selfZei_cmdcmd_name distutilsrfiledatar r r run*s   "     z sdist.runcCstjj||jdS)N)origrinitialize_options_default_to_gztar)r+r r r r2Dszsdist.initialize_optionscCs#tjdkrdSdg|_dS)Nrbetargztar)r4r5rzbetar)sys version_infoformats)r+r r r r3Iszsdist._default_to_gztarc Cs(|jtjj|WdQRXdS)z% Workaround for #516 N)_remove_os_linkr1rr()r+r r r r(Os zsdist.make_distributionccsqGddd}ttd|}y t`Wntk rCYnXz dVWd||k rlttd|XdS)zG In a context, remove and restore os.link if it exists c@seZdZdS)z&sdist._remove_os_link..NoValueN)__name__ __module__ __qualname__r r r r NoValue]s r?linkN)r)r r@ Exceptionsetattr)r?Zorig_valr r r r;Vs    zsdist._remove_os_linkc Cs\ytjj|WnAtk rWtj\}}}|jjjdj YnXdS)Ntemplate) r1r read_templaterAr8exc_infotb_nexttb_framef_localsclose)r+_tbr r r Z__read_template_hackks  zsdist.__read_template_hackr4rrcs|jjr|jd}|jj|j|jjsx@|jD]5\}}}|jjfdd|DqJWdS)zgetting python filesbuild_pycs%g|]}tjj|qSr )r r!r").0filename)src_dirr r s z.sdist._add_defaults_python..N)r*has_pure_modulesrrextendZget_source_filesZinclude_package_data data_files)r+rOrJ filenamesr )rRr _add_defaults_pythons zsdist._add_defaults_pythonc sPy*tjrtj|n tjWntk rKtjdYnXdS)Nz&data_files contains unexpected objects)sixPY2r_add_defaults_data_filessuper TypeErrorrwarn)r+) __class__r r r[s   zsdist._add_defaults_data_filescCsKxD|jD]}tjj|r dSq W|jddj|jdS)Nz,standard file not found: should have one of z, )READMESr r!existsr^r")r+fr r r r#s zsdist.check_readmecCstjj|||tjj|d}ttdritjj|ritj||j d||j dj |dS)Nz setup.cfgr@r) r1rmake_release_treer r!r"hasattrraunlink copy_filerZsave_version_info)r+base_dirfilesdestr r r rcs ! zsdist.make_release_treec CsTtjj|jsdStj|jd}|j}WdQRX|djkS)NFrbz+# file GENERATED by distutils, do NOT edit )r r!isfilemanifestioopenreadlineencode)r+fp first_liner r r _manifest_is_not_generateds z sdist._manifest_is_not_generatedc Cstjd|jt|jd}x|D]}tjrwy|jd}Wn&tk rvtjd|w,YnX|j }|j ds,| rq,|j j |q,W|j dS)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. zreading manifest file '%s'rjzUTF-8z"%r not UTF-8 decodable -- skipping#N)rinforlrnrYPY3decodeUnicodeDecodeErrorr^strip startswithrrrI)r+rlliner r r read_manifests    zsdist.read_manifest)rNr)rrr)rrr)rLrMrL)r4r)r4rrN)r4rL)r4rLr)r<r=r>__doc__ user_options negative_optr`r0r2r3r( staticmethod contextlibcontextmanagerr;Z_sdist__read_template_hackr8r9Zhas_leaky_handlerDrXr[r#rcrsr|r r )r_r rs8         r)r-rZdistutils.command.sdistr&rr1r r8rmrrYZ py36compatrrlistZ_default_revctrlrr r r r s