a ˆåÏhOã@sxddlmZddlmmZddlZddlZddlZddl Z ddl m Z ddl Z e Zd dd„ZGdd „d e ejƒZdS) é)ÚlogNé)Úsdist_add_defaultsÚccs,t d¡D]}| ¡|ƒD] }|Vqq dS)z%Find all files under revision controlzsetuptools.file_findersN)Ú pkg_resourcesZiter_entry_pointsÚload)ÚdirnameZepÚitem©r ú'ózsdist.cCs–| d¡| d¡}|j|_|j tj |jd¡¡| ¡|  ¡D]}| |¡qD|  ¡t |j dgƒ}|j D] }dd|f}||vrp| |¡qpdS)NÚegg_infoz SOURCES.txtÚ dist_filesr r)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.runcCstj |¡| ¡dS©N)Úorigr Úinitialize_optionsÚ_default_to_gztar©r!r r r r'<s zsdist.initialize_optionscCstjdkrdSdg|_dS)N)éérZbetarÚgztar)ÚsysÚ version_infoÚformatsr)r r r r(As zsdist._default_to_gztarcCs8| ¡tj |¡Wdƒn1s*0YdS)z% Workaround for #516 N)Ú_remove_os_linkr&r rr)r r r rGs zsdist.make_distributionc cspGdd„dƒ}ttd|ƒ}zt`Wnty4Yn0zdVW||urlttd|ƒn||urjttd|ƒ0dS)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 ÚNoValueUsr4ÚlinkN)rrr5Ú ExceptionÚsetattr)r4Zorig_valr r r r0Ns  ÿzsdist._remove_os_linkcs&tƒ ¡tj d¡r"|j d¡dS)Nzpyproject.toml)ÚsuperÚ_add_defaults_optionalrrÚisfilerrr)©Ú __class__r r r9cs  zsdist._add_defaults_optionalcCs8|j ¡r4| d¡}|j | ¡¡| | |¡¡dS)zgetting python filesÚbuild_pyN)r Zhas_pure_modulesrrÚextendZget_source_filesÚ_add_data_filesÚ_safe_data_files©r!r=r 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_filesrAr r r r@oszsdist._safe_data_filescCs|j dd„|Dƒ¡dS)zA Add data files as found in build_py.data_files. css.|]&\}}}}|D]}tj ||¡VqqdSr%)rrr)rÚ_Zsrc_dirÚ filenamesÚnamer r r r}s þz(sdist._add_data_files..N)rr>)r!rCr r r r?ys þzsdist._add_data_filescs0ztƒ ¡Wnty*t d¡Yn0dS)Nz&data_files contains unexpected objects)r8Ú_add_defaults_data_filesÚ TypeErrorrÚwarnr)r;r r rGƒs zsdist._add_defaults_data_filescCs8|jD]}tj |¡rdSq| dd |j¡¡dS)Nz,standard file not found: should have one of z, )ÚREADMESrrÚexistsrIr)r!Úfr r r r‰s   ÿÿzsdist.check_readmecCs^tj |||¡tj |d¡}ttdƒrJtj |¡rJt |¡|  d|¡|  d¡  |¡dS)Nz setup.cfgr5r) r&r Úmake_release_treerrrÚhasattrrKÚunlinkZ copy_filerZsave_version_info)r!Úbase_dirÚfilesÚdestr r r rM“s   zsdist.make_release_treecCsTtj |j¡sdSt |jd¡}| ¡}Wdƒn1s>0Y|d ¡kS)NFÚrbz+# file GENERATED by distutils, do NOT edit )rrr:ÚmanifestÚioÚopenÚreadlineÚencode)r!ÚfpZ first_liner r r Ú_manifest_is_not_generated s&ÿz sdist._manifest_is_not_generatedc Csˆt d|j¡t|jdƒ}|D]\}z| d¡}Wn$tyTt d|¡YqYn0| ¡}| d¡s|snq|j   |¡q|  ¡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'rSzUTF-8z"%r not UTF-8 decodable -- skippingú#N) rÚinforTrVÚdecodeÚUnicodeDecodeErrorrIÚstripÚ startswithrrÚclose)r!rTÚliner r r Ú read_manifestªs   zsdist.read_manifest)r1r2r3Ú__doc__Z user_optionsZ negative_optZREADME_EXTENSIONSÚtuplerJr$r'r(rÚ staticmethodÚ contextlibÚcontextmanagerr0r9rBr@r?rGrrMrZrcÚ __classcell__r r r;r r s*        r )r)Z distutilsrZdistutils.command.sdistZcommandr r&rr-rUrgZ py36compatrrÚlistZ_default_revctrlr r r r r Ús