U +aO@sxddlmZddlmmZddlZddlZddlZddl Z ddl m Z ddl Z e Zd ddZGdd d e ejZdS) )logN)sdist_add_defaultsccs,tdD]}||D] }|Vqq dS)z%Find all files under revision controlzsetuptools.file_findersN) pkg_resourcesiter_entry_pointsload)dirnameepitemr @/tmp/pip-install-1bd_1mtk/setuptools/setuptools/command/sdist.py walk_revctrlsrcseZdZdZdddgZiZddddgZed d eDZd d Z d dZ ddZ ddZ e ejddZfddZddZddZddZfddZdd Zd!d"Zd#d$Zd%d&ZZS)'sdistz=Smart sdist that finds anything supported by revision control)zformats=Nz6formats for source distribution (comma-separated list))z keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist]rz.rstz.txtz.mdccs|]}d|VqdS)z README{0}N)format).0extr r r 'szsdist.cCs|d|d}|j|_|jtj|jd|| D]}||qD| t |j dg}|j D] }dd|f}||krp||qpdS)Negg_infoz SOURCES.txt dist_filesrr) run_commandget_finalized_commandfilelistappendospathjoinr check_readmeget_sub_commandsmake_distributiongetattr distributionZ archive_files)selfZei_cmdcmd_namerfiledatar r r run)s      z sdist.runcCstj||dSN)origrinitialize_options_default_to_gztarr$r r r r+<s zsdist.initialize_optionscCstjdkrdSdg|_dS)N)rbetargztar)sys version_infoformatsr-r r r r,As zsdist._default_to_gztarc Cs$|tj|W5QRXdS)z% Workaround for #516 N)_remove_os_linkr*rr!r-r r r r!Gs zsdist.make_distributionc cs^Gddd}ttd|}zt`Wntk r6YnXz dVW5||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 NoValueUsr9linkN)r"rr: Exceptionsetattr)r9Zorig_valr r r r5Ns  zsdist._remove_os_linkcs&ttjdr"|jddS)Nzpyproject.toml)super_add_defaults_optionalrrisfilerrr- __class__r r r>cs  zsdist._add_defaults_optionalcCs8|jr4|d}|j||||dS)zgetting python filesbuild_pyN)r#has_pure_modulesrrextendZget_source_files_add_data_files_safe_data_filesr$rBr r r _add_defaults_pythonhs  zsdist._add_defaults_pythoncCs|jjr dS|jS)z Extracting data_files from build_py is known to cause infinite recursion errors when `include_package_data` is enabled, so suppress it in that case. r )r#Zinclude_package_data data_filesrGr r r rFoszsdist._safe_data_filescCs|jdd|DdS)zA Add data files as found in build_py.data_files. css.|]&\}}}}|D]}tj||VqqdSr))rrr)r_src_dir filenamesnamer r r r}s z(sdist._add_data_files..N)rrD)r$rIr r r rEys zsdist._add_data_filescs2ztWntk r,tdYnXdS)Nz&data_files contains unexpected objects)r=_add_defaults_data_files TypeErrorrwarnr-r@r r rNszsdist._add_defaults_data_filescCs8|jD]}tj|rdSq|dd|jdS)Nz,standard file not found: should have one of z, )READMESrrexistsrPr)r$fr r r rs   zsdist.check_readmecCs^tj|||tj|d}ttdrJtj|rJt|| d|| d |dS)Nz setup.cfgr:r) r*rmake_release_treerrrhasattrrRunlink copy_filerZsave_version_info)r$base_dirfilesdestr r r rTs   zsdist.make_release_treec Cs@tj|jsdSt|jd}|}W5QRX|dkS)NFrbz+# file GENERATED by distutils, do NOT edit )rrr?manifestioopenreadlineencode)r$fp first_liner r r _manifest_is_not_generatedsz sdist._manifest_is_not_generatedc Cstd|jt|jd}|D]^}z|d}Wn&tk rVtd|YqYnX|}|ds|spq|j |q| 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'r[zUTF-8z"%r not UTF-8 decodable -- skipping#N) rinfor\r^decodeUnicodeDecodeErrorrPstrip startswithrrclose)r$r\liner r r read_manifests  zsdist.read_manifest)r6r7r8__doc__ user_options negative_optZREADME_EXTENSIONStuplerQr(r+r,r! staticmethod contextlibcontextmanagerr5r>rHrFrErNrrTrcrl __classcell__r r r@r rs0         r)r) distutilsrZdistutils.command.sdistcommandrr*rr2r]rrZ py36compatrrlistZ_default_revctrlrr r r r s