N3{Y @sddlZddlZddlZddlmZddlZddlmZddlm Z ddl m Z ddl m Z dZd d d ZGd ddeZd ddZedejdeje jgZGdddeZdS)N)glob)sdist) convert_path)log) svn_utilsREADME README.rst README.txtccs@x9tjdD](}x|j|D] }|Vq)WqWdS)z%Find all files under revision controlzsetuptools.file_findersN) pkg_resourcesiter_entry_pointsload)dirnameepitemr3/tmp/pip-r2rszybt-build/setuptools/command/sdist.py walk_revctrlsrc@s:eZdZdddZddZdddZdS) re_finderNcCs%||_||_t||_dS)N)patternpostprocrpath)selfrrrrrr__init__s  zre_finder.__init__c cst|d}z|j}Wd|jXxU|jj|D]A}|jd}|jrp|j|}ntj||Vq@WdS)NrU) openreadcloserfinditergrouprrjoinpath)rrfilenamefdatamatchrrrr_finders  zre_finder._finderr ccstj||j}tjj|rxh|j||D]Q}tjj|rZ|Vq:tjj|r:x||D] }|VqyWq:q:WndS)N)rr!rosisfiler&isdir)rrrrrrr__call__+szre_finder.__call__)__name__ __module__ __qualname__rr&r*rrrrrs  rccs1x*tD]"}x||D] }|VqWqWdS)zPrimary svn_cvs entry pointN)finders)rfinderrrrr_default_revctrl7s r0z CVS/Entriesz ^\w?/([^/]+)/c@seZdZdZd ddddfd!gZiZd d ZddZej d"kpd#ej koud$knpd%ej kod&knZ e reZ nddZ ddZ ddZddZddZdS)'rz=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]cCs|jd|jd}|j|_|jjtjj|jd|jx!|j D]}|j|qaWddl }d|j j kr|j n|jt|jdg}x<|jD]1}dd|f}||kr|j|qqWdS)Negg_infoz SOURCES.txtrcheck dist_filesrr ) run_commandget_finalized_commandfilelistappendr'rjoinr7 check_readmeget_sub_commandsdistutils.commandcommand__all__Zcheck_metadataZmake_distributiongetattr distributionZ archive_files)rZei_cmdcmd_name distutilsr9filer$rrrrunUs   "     z sdist.runc CsDytj|Wn,tjdjjjdjYnXdS)Ntemplate)_sdist read_templatesysexc_infotb_nexttb_framef_localsr)rrrrZ__read_template_hackns !zsdist.__read_template_hackrJrrcs`t|jjg}x|D]}t|tr|}d}x:|D]2}tjj|rAd}|jj |PqAqAW|s|j ddj |qqtjj|r|jj |q|j d|qWddg}xH|D]@}t t tjjt|}|r|jj|qqW|jjr|jd}|jj|j|jjsxC|jD]5\} } } |jjfd d | DqxWqn|jjr|jd } |jj| jn|jjr%|jd } |jj| jn|jjr\|jd } |jj| jndS)Nrrz,standard file not found: should have one of z, zstandard file '%s' not foundz test/test*.pyz setup.cfgbuild_pycs%g|]}tjj|qSr)r'rr>).0r")src_dirrr s z&sdist.add_defaults.. build_ext build_clib build_scripts)READMESrE script_name isinstancetupler'rexistsr<r=warnr>listfilterr(rextendhas_pure_modulesr;Zget_source_filesZinclude_package_data data_fileshas_ext_moduleshas_c_libraries has_scripts)rZ standardsfnZaltsZgot_itoptionalrfilesrV_ filenamesrZr[r\r)rXr add_defaultssL     ! zsdist.add_defaultscCsEx>tD]}tjj|rdSqW|jddjtdS)Nz,standard file not found: should have one of z, )r]r'rrarbr>)rr#rrrr?s  zsdist.check_readmecCstj|||tjj|d}ttdritjj|ritj||jd|n|j dj |dS)Nz setup.cfglinkr7) rLmake_release_treer'rr>hasattrraunlink copy_filer;Zsave_version_info)rbase_dirrmdestrrrrrs ! zsdist.make_release_treec CsYtjj|jsdSt|jd}z|j}Wd|jX|djkS)NFrbUz+# file GENERATED by distutils, do NOT edit )r'rr(manifestrreadlinerencode)rfp first_linerrr_manifest_is_not_generateds z sdist._manifest_is_not_generatedc Cstjd|jt|jd}x|D]}tjdkry|jd}Wqtk r|tjd|w,YqXn|j }|j ds,| rq,n|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'rxrTzUTF-8z"%r not UTF-8 decodable -- skipping#N)rT)rinforyrrN version_infodecodeUnicodeDecodeErrorrbstrip startswithr<r=r)rrylinerrr read_manifests    zsdist.read_manifest)r1Nr2)r4r5r6)rJrSrJ)rTr)rTrrU)rTrJ)rTrJr)r+r,r-__doc__ user_options negative_optrIZ_sdist__read_template_hackrNrZhas_leaky_handlerMrpr?rrr~rrrrrrEs*      5 r)rrr )r'rerNrr Zdistutils.command.sdistrrLdistutils.utilrrGr setuptoolsrr]robjectrr0compileMZ svn_finderr.rrrrs