3 ]7@s~ddlmZddljjZddlZddlZddlZddl Z ddl m Z ddl m Z ddlZeZd ddZGd d d e ejZdS) )logN)six)sdist_add_defaultsccs4x.tjdD] }x|j|D] }|VqWq WdS)z%Find all files under revision controlzsetuptools.file_findersN) pkg_resourcesiter_entry_pointsload)dirnameepitemr >/tmp/pip-build-8jg9gmni/setuptools/setuptools/command/sdist.py walk_revctrlsrcseZdZdZd0d2d3gZiZd d ddgZeddeDZddZ ddZ ddZ ddZ e ejddZddZejd4kpd5ejkod6knpd7ejkod8knZereZd$d%Zfd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZZS)9sdistz=Smart sdist that finds anything supported by revision controlformats=N6formats for source distribution (comma-separated list) keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]rz.rstz.txtz.mdccs|]}dj|VqdS)z README{0}N)format).0extr r r )szsdist.cCs|jd|jd}|j|_|jjtjj|jd|jx|j D]}|j|qFW|j t |j dg}x*|j D] }dd|f}||krv|j|qvWdS)Negg_infoz SOURCES.txt dist_filesrr) run_commandget_finalized_commandfilelistappendospathjoinr check_readmeget_sub_commandsmake_distributiongetattr distributionZ archive_files)selfZei_cmdcmd_namerfiledatar r rrun+s    z sdist.runcCstjj||jdS)N)origrinitialize_options_default_to_gztar)r*r r rr0>s zsdist.initialize_optionscCstjdkrdSdg|_dS)Nrbetargztar)r2r3rr4r)sys version_infoformats)r*r r rr1Cs zsdist._default_to_gztarc Cs$|jtjj|WdQRXdS)z% Workaround for #516 N)_remove_os_linkr/rr')r*r r rr'Is zsdist.make_distributionccs^Gddd}ttd|}yt`Wntk r6YnXz dVWd||k rXttd|XdS)zG In a context, remove and restore os.link if it exists c@s eZdZdS)z&sdist._remove_os_link..NoValueN)__name__ __module__ __qualname__r r r rNoValueWsr=linkN)r(r"r> Exceptionsetattr)r=Zorig_valr r rr9Ps  zsdist._remove_os_linkc CsLytjj|Wn6tk rFtj\}}}|jjjdj YnXdS)Ntemplate) r/r read_templater?r6exc_infotb_nexttb_framef_localsclose)r*_tbr r rZ__read_template_hackes zsdist.__read_template_hackr2rrcsb|jjr^|jd}|jj|j|jjs^x0|jD]&\}}}|jjfdd|Dq4WdS)zgetting python filesbuild_pycsg|]}tjj|qSr )r"r#r$)rfilename)src_dirr r sz.sdist._add_defaults_python..N)r)has_pure_modulesrr extendZget_source_filesZinclude_package_data data_files)r*rMrH filenamesr )rOr_add_defaults_python|s  zsdist._add_defaults_pythonc sDy tjrtj|n tjWntk r>tjdYnXdS)Nz&data_files contains unexpected objects)rPY2r_add_defaults_data_filessuper TypeErrorrwarn)r*) __class__r rrWs  zsdist._add_defaults_data_filescCs:x4|jD]}tjj|rdSqW|jddj|jdS)Nz,standard file not found: should have one of z, )READMESr"r#existsrZr$)r*fr r rr%s   zsdist.check_readmecCs^tjj|||tjj|d}ttdrJtjj|rJtj||j d||j dj |dS)Nz setup.cfgr>r) r/rmake_release_treer"r#r$hasattrr]unlink copy_filerZsave_version_info)r*base_dirfilesdestr r rr_s   zsdist.make_release_treec Cs@tjj|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}xl|D]d}tjr^y|jd}Wn$tk r\tjd|w YnX|j }|j ds | rxq |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'rfzUTF-8z"%r not UTF-8 decodable -- skipping#N)rinforhrjrPY3decodeUnicodeDecodeErrorrZstrip startswithr r!rG)r*rhliner r r read_manifests  zsdist.read_manifest)rNr@keep the distribution tree around after creating archive file(s))rrry)rrr)rJrKrJ)r2r)r2rrL)r2rJ)r2rJr)r:r;r<__doc__ user_options negative_optZREADME_EXTENSIONStupler\r.r0r1r' staticmethod contextlibcontextmanagerr9Z_sdist__read_template_hackr6r7Zhas_leaky_handlerBrUrWr%r_rorx __classcell__r r )r[rrs:      r)r) distutilsrZdistutils.command.sdistcommandrr/r"r6rirZsetuptools.externrZ py36compatrrlistZ_default_revctrlrr r r rs