3 Ävh7ã@s~ddlmZddljjZddlZddlZddlZddl Z ddl m Z ddl m Z ddlZeZd dd„ZGd d „d e ejƒZdS) é)ÚlogN)Úsixé)Úsdist_add_defaultsÚccs4x.tjdƒD] }x|jƒ|ƒD] }|VqWq WdS)z%Find all files under revision controlzsetuptools.file_findersN)Ú pkg_resourcesZiter_entry_pointsÚload)ÚdirnameZepÚitem©r ú/usr/lib/python3.6/sdist.pyÚ walk_revctrlsr csôeZdZdZd0d2d3gZiZd d ddgZedd„eDƒƒZdd„Z dd„Z dd„Z dd„Z e ejdd„ƒƒZdd„Zejd4kp®d5ejko�d6knp®d7ejkoªd8knZer¸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]rz.rstz.txtz.mdccs|]}dj|ƒVqdS)z README{0}N)Úformat)Ú.0Zextr r r ú )szsdist.cCsž|jdƒ|jdƒ}|j|_|jjtjj|jdƒƒ|jƒx|j ƒD]}|j|ƒqFW|j ƒt |j dgƒ}x*|j D] }dd|f}||krv|j|ƒqvWdS)NÚegg_infoz SOURCES.txtÚ dist_filesrr)Z run_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.runcCstjj|ƒ|jƒdS)N)ÚorigrÚinitialize_optionsÚ_default_to_gztar)r%r r r r*>s zsdist.initialize_optionscCstjdkrdSdg|_dS)NéérÚbetarZgztar)r,r-rr.r)ÚsysÚ version_infoZformats)r%r r r r+Cs zsdist._default_to_gztarc Cs$|jƒ�tjj|ƒWdQRXdS)z% Workaround for #516 N)Ú_remove_os_linkr)rr")r%r r r r"Is zsdist.make_distributionccs^Gdd„dƒ}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 r ÚNoValueWsr5ÚlinkN)r#rr6Ú ExceptionÚsetattr)r5Zorig_valr r r r1Ps  zsdist._remove_os_linkc CsLytjj|ƒWn6tk rFtjƒ\}}}|jjjdj ƒ‚YnXdS)NÚtemplate) r)rÚ read_templater7r/Úexc_infoÚtb_nextÚtb_frameÚf_localsÚclose)r%Ú_Útbr r r Z__read_template_hackes zsdist.__read_template_hackéér,rrécsb|jjƒr^|jdƒ}|jj|jƒƒ|jjs^x0|jD]&\}‰}}|jj‡fdd„|Dƒƒq4WdS)zgetting python filesÚbuild_pycsg|]}tjjˆ|ƒ‘qSr )rrr )rÚfilename)Úsrc_dirr r ú ‡sz.sdist._add_defaults_python..N)r$Zhas_pure_modulesrrÚextendZget_source_filesZinclude_package_dataZ data_files)r%rEr@Ú filenamesr )rGr Ú_add_defaults_python|s  zsdist._add_defaults_pythonc sDy tjrtj|ƒn tƒjƒWntk r>tjdƒYnXdS)Nz&data_files contains unexpected objects)rZPY2rÚ_add_defaults_data_filesÚsuperÚ TypeErrorrÚwarn)r%)Ú __class__r r rLŠs  zsdist._add_defaults_data_filescCs:x4|jD]}tjj|ƒrdSqW|jddj|jƒƒdS)Nz,standard file not found: should have one of z, )ÚREADMESrrÚexistsrOr )r%Úfr r r r!“s   zsdist.check_readmecCs^tjj|||ƒtjj|dƒ}ttdƒrJtjj|ƒrJtj|ƒ|j d|ƒ|j dƒj |ƒdS)Nz setup.cfgr6r) r)rÚmake_release_treerrr ÚhasattrrRÚunlinkZ copy_filerZsave_version_info)r%Zbase_dirÚfilesÚdestr r r rT�s   zsdist.make_release_treec Cs@tjj|jƒsdStj|jdƒ�}|jƒ}WdQRX|djƒkS)NFÚrbz+# file GENERATED by distutils, do NOT edit )rrÚisfileÚmanifestÚioÚopenÚreadlineÚencode)r%ÚfpZ first_liner r r Ú_manifest_is_not_generatedªs z sdist._manifest_is_not_generatedc Cs”tjd|jƒt|jdƒ}xl|D]d}tjr^y|jdƒ}Wn$tk r\tjd|ƒw YnX|j ƒ}|j dƒs | rxq |j j |ƒ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'rYzUTF-8z"%r not UTF-8 decodable -- skippingú#N)rÚinfor[r]rZPY3ÚdecodeÚUnicodeDecodeErrorrOÚstripÚ startswithrrr?)r%r[Úliner r r Ú read_manifest´s  zsdist.read_manifest)rNrú@keep the distribution tree around after creating archive file(s))rrrj)rrr)rBrCrB)r,r)r,rrD)r,rB)r,rBr)r2r3r4Ú__doc__Z user_optionsZ negative_optZREADME_EXTENSIONSÚtuplerQr(r*r+r"Ú staticmethodÚ contextlibÚcontextmanagerr1Z_sdist__read_template_hackr/r0Zhas_leaky_handler:rKrLr!rTrariÚ __classcell__r r )rPr rs:      r)r)Z distutilsrZdistutils.command.sdistZcommandrr)rr/r\rnZsetuptools.externrZ py36compatrrÚlistZ_default_revctrlr r r r r Ús