3 M(Y@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 F/private/tmp/pip-build-nl73fm5q/setuptools/setuptools/command/sdist.py walk_revctrlsrcseZdZdZd0ddddfd1gZiZd d ddgZeddeDZddZ ddZ ddZ ddZ e ejddZddZejd2kpd3ejkod4knpd5ejkod6knZereZd$d%Zfd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZZS)7sdistz=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]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|qFWddl }d|j j krt|j |jt|jdg}x*|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 rrun+s      z sdist.runcCstjj||jdS)N)origrinitialize_options_default_to_gztar)r-r r rr4Es zsdist.initialize_optionscCstjdkrdSdg|_dS)Nrbetargztar)r6r7rr8r)sys version_infoformats)r-r r rr5Js zsdist._default_to_gztarc Cs$|jtjj|WdQRXdS)z% Workaround for #516 N)_remove_os_linkr3rr*)r-r r rr*Ps 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 rNoValue^srAlinkN)r+r"rB Exceptionsetattr)rAZorig_valr r rr=Ws  zsdist._remove_os_linkc CsLytjj|Wn6tk rFtj\}}}|jjjdj YnXdS)Ntemplate) r3r read_templaterCr:exc_infotb_nexttb_framef_localsclose)r-_tbr r rZ__read_template_hackls zsdist.__read_template_hackr6rrcsb|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-rQrL filenamesr )rSr_add_defaults_pythons  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 rr[s  zsdist._add_defaults_data_filescCs:x4|jD]}tjj|rdSqW|jddj|jdS)Nz,standard file not found: should have one of z, )READMESr"r#existsr^r$)r-fr r rr%s   zsdist.check_readmecCs^tjj|||tjj|d}ttdrJtjj|rJtj||j d||j dj |dS)Nz setup.cfgrBr) r3rmake_release_treer"r#r$hasattrraunlink copy_filerZsave_version_info)r-base_dirfilesdestr r rrcs   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'rjzUTF-8z"%r not UTF-8 decodable -- skipping#N)rinforlrnrPY3decodeUnicodeDecodeErrorr^strip startswithr r!rK)r-rlliner r r read_manifests  zsdist.read_manifest)rNr)rrr)rNrOrN)r6r)r6rrP)r6rN)r6rNr)r>r?r@__doc__ user_options negative_optZREADME_EXTENSIONStupler`r2r4r5r* staticmethod contextlibcontextmanagerr=Z_sdist__read_template_hackr:r;Zhas_leaky_handlerFrYr[r%rcrsr| __classcell__r r )r_rrs:      r)r)r/rZdistutils.command.sdistr(rr3r"r:rmrZsetuptools.externrZ py36compatrrlistZ_default_revctrlrr r r rs