a „oe­ã@s~ddlmZddlmmZddlZddlZddlZddl m Z ddl m Z ddl mZeZd d d „ZGd d „d ejƒZdS)é)ÚlogN)Úchainé)Úmetadataé)Ú_ORIGINAL_SUBCOMMANDSÚccs.tjddD]}| ¡|ƒD] }|Vqq dS)z%Find all files under revision controlzsetuptools.file_finders)ÚgroupN)rZ entry_pointsÚload)ÚdirnameZepÚitem©r ú9C:\Program Files\Certbot\pkgs\setuptools\command\sdist.pyÚ walk_revctrlsrcsÐeZdZdZgd¢ZiZgd¢Zedd„eDƒƒZdd„Z dd „Z d d „Z d d „Z e ejdd„ƒƒZ‡fdd„Z‡fdd„Zdd„Zdd„Zdd„Zdd„Z‡fdd„Zdd„Zd d!„Zd"d#„Zd$d%„Z‡ZS)&Úsdistz=Smart sdist that finds anything supported by revision control))zformats=Nz6formats for source distribution (comma-separated list))z keep-tempÚkz@keep the distribution tree around after creating archive file(s))z dist-dir=ÚdzFdirectory to put the source distribution archive(s) in [default: dist])zowner=Úuz@Owner name used when creating a tar file [default: current user])zgroup=ÚgzAGroup name used when creating a tar file [default: current group])rz.rstz.txtz.mdccs|]}d |¡VqdS)z README{0}N)Úformat)Ú.0Úextr r rÚ 3ó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_filesrr)Z run_commandÚget_finalized_commandÚfilelistÚappendÚosÚpathÚjoinrÚ check_readmeÚget_sub_commandsÚmake_distributionÚgetattrÚ distributionZ archive_files)ÚselfZei_cmdZcmd_namerÚfileÚdatar r rÚrun5s      z sdist.runcCstj |¡| ¡dS©N)ÚorigrÚinitialize_optionsÚ_default_to_gztar©r'r r rr-Hs zsdist.initialize_optionscCstjdkrdSdg|_dS)N)éérZbetarÚgztar)ÚsysÚ version_infoÚformatsr/r r rr.Ms zsdist._default_to_gztarcCs8| ¡tj |¡Wdƒn1s*0YdS)z% Workaround for #516 N)Ú_remove_os_linkr,rr$r/r r rr$Ss 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ÚNoValueasr:ÚlinkN)r%rr;Ú ExceptionÚsetattr)r:Zorig_valr r rr6Zs  ÿzsdist._remove_os_linkcstƒ ¡| ¡dSr+)ÚsuperÚ add_defaultsÚ _add_defaults_build_sub_commandsr/©Ú __class__r rr?os zsdist.add_defaultscs&tƒ ¡tj d¡r"|j d¡dS)Nzpyproject.toml)r>Ú_add_defaults_optionalrr Úisfilerrr/rAr rrCss  zsdist._add_defaults_optionalcCs8|j ¡r4| d¡}|j | ¡¡| | |¡¡dS)zgetting python filesÚbuild_pyN)r&Zhas_pure_modulesrrÚextendÚget_source_filesÚ_add_data_filesÚ_safe_data_files©r'rEr r rÚ_add_defaults_pythonxs  zsdist._add_defaults_pythoncsPˆ d¡}t| ¡ƒt}‡fdd„|Dƒ}dd„|Dƒ}ˆj t |¡¡dS)NÚbuildc3s|]}ˆ |¡VqdSr+)r©rÚcr/r rrƒrz9sdist._add_defaults_build_sub_commands..css |]}t|dƒr| ¡VqdS)rGN)ÚhasattrrGrMr r rr„r)rÚsetr#rrrFrÚ from_iterable)r'rLZ missing_cmdsZcmdsÚfilesr r/rr@s  z&sdist._add_defaults_build_sub_commandscCs|jS)að Since the ``sdist`` class is also used to compute the MANIFEST (via :obj:`setuptools.command.egg_info.manifest_maker`), there might be recursion problems when trying to obtain the list of data_files and ``include_package_data=True`` (which in turn depends on the files included in the MANIFEST). To avoid that, ``manifest_maker`` should be able to overwrite this method and avoid recursive attempts to build/analyze the MANIFEST. )Ú data_filesrJr r rrI‡s zsdist._safe_data_filescCs|j dd„|Dƒ¡dS)zA Add data files as found in build_py.data_files. css.|]&\}}}}|D]}tj ||¡VqqdSr+)rr r!)rÚ_Zsrc_dirÚ filenamesÚnamer r rr˜s þz(sdist._add_data_files..N)rrF)r'rSr r rrH”s þzsdist._add_data_filescs0ztƒ ¡Wnty*t d¡Yn0dS)Nz&data_files contains unexpected objects)r>Ú_add_defaults_data_filesÚ TypeErrorrÚwarnr/rAr rrWžs zsdist._add_defaults_data_filescCs8|jD]}tj |¡rdSq| dd |j¡¡dS)Nz,standard file not found: should have one of z, )ÚREADMESrr ÚexistsrYr!)r'Úfr r rr"¤s   ÿzsdist.check_readmecCs^tj |||¡tj |d¡}ttdƒrJtj |¡rJt |¡|  d|¡|  d¡  |¡dS)Nz setup.cfgr;r) r,rÚmake_release_treerr r!rOr[ÚunlinkZ copy_filerZsave_version_info)r'Úbase_dirrRÚdestr r rr]­s   zsdist.make_release_treecCsRtj |j¡sdSt|jdƒ}| ¡}Wdƒn1s<0Y|d ¡kS)NFÚrbz+# file GENERATED by distutils, do NOT edit )rr rDÚmanifestÚ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'razUTF-8z"%r not UTF-8 decodable -- skippingú#N) rÚinforbrcÚdecodeÚUnicodeDecodeErrorrYÚstripÚ startswithrrÚclose)r'rbÚliner r rÚ read_manifestÃs   zsdist.read_manifest)r7r8r9Ú__doc__Z user_optionsZ negative_optZREADME_EXTENSIONSÚtuplerZr*r-r.r$Ú staticmethodÚ contextlibÚcontextmanagerr6r?rCrKr@rIrHrWr"r]rgrpÚ __classcell__r r rArrs.        r)r)Z distutilsrZdistutils.command.sdistZcommandrr,rr3rtÚ itertoolsrZ _importlibrrLrÚlistZ_default_revctrlrr r r rÚs