a [ÎdgŠã@sddlmZddlmmZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZddlZeZd dd „ZGd d „d eejƒZdS) é)ÚlogN)Úiglob)Ú ordered_seté)Ú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 úB/usr/local/lib/python3.9/site-packages/setuptools/command/sdist.pyÚ walk_revctrlsrcsÄeZdZdZgd¢ZiZgd¢Zedd„eDƒƒZdd„Z dd „Z d d „Z d d „Z e ejdd„ƒƒZ‡fdd„Zdd„Zdd„Zdd„Z‡fdd„Zdd„Zdd„Zdd„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])rz.rstz.txtz.mdccs|]}d |¡VqdS)z README{0}N)Úformat)Ú.0Úextr r 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_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.runcCstj |¡| ¡dS©N)ÚorigrÚinitialize_optionsÚ_default_to_gztar©r#r r r r)?s zsdist.initialize_optionscCstjdkrdSdg|_dS)N)éérÚbetarÚgztar)ÚsysÚ version_infoÚformatsr+r r r r*Ds zsdist._default_to_gztarcCs8| ¡tj |¡Wdƒn1s*0YdS)z% Workaround for #516 N)Ú_remove_os_linkr(rr r+r r r r Js 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 ÚNoValueXsr7ÚlinkN)r!rr8Ú ExceptionÚsetattr)r7Zorig_valr r r r3Qs  ÿzsdist._remove_os_linkcs&tƒ ¡tj d¡r"|j d¡dS)Nzpyproject.toml)ÚsuperÚ_add_defaults_optionalrrÚisfilerrr+©Ú __class__r r r<fs  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_pythonks  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_filesrDr r r rCrszsdist._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)rrA)r#rFr r r rB|s þzsdist._add_data_filescs0ztƒ ¡Wnty*t d¡Yn0dS)Nz&data_files contains unexpected objects)r;Ú_add_defaults_data_filesÚ TypeErrorrÚwarnr+r>r r rJ†s zsdist._add_defaults_data_filescCs8|jD]}tj |¡rdSq| dd |j¡¡dS)Nz,standard file not found: should have one of z, )ÚREADMESrrÚexistsrLr)r#Úfr r r rŒs   ÿÿzsdist.check_readmecCs^tj |||¡tj |d¡}ttdƒrJtj |¡rJt |¡|  d|¡|  d¡  |¡dS)Nz setup.cfgr8r) r(rÚmake_release_treerrrÚhasattrrNÚunlinkZ copy_filerZsave_version_info)r#Úbase_dirÚfilesÚdestr r r rP–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'rVzUTF-8z"%r not UTF-8 decodable -- skippingú#N) rÚinforWrYÚdecodeÚUnicodeDecodeErrorrLÚstripÚ startswithrrÚclose)r#rWÚliner r r Ú read_manifest­s   zsdist.read_manifestcCs |j d¡}t ¡}z|jjj}Wn$tyFt d¡t ¡}Yn0t |tjƒrX|nt |¡}d|vr†t d¡|  |dd¡d|vršd|vršd}|D]V}t |ƒD]H}|  d¡rÆt  d |¡qª||vrªtj |¡rªt d ||¡| |¡qªqž|j t|ƒ¡d S) zvChecks if license_file' or 'license_files' is configured and adds any valid paths to 'self.filelist'. Úmetadataz,warning: 'license_files' option is malformedZ license_filezMwarning: the 'license_file' option is deprecated, use 'license_files' insteadrÚ license_files)z LICEN[CS]E*zCOPYING*zNOTICE*zAUTHORS*ú~z4ignoring license file '%s' as it looks like a backupz/adding license file '%s' (matched pattern '%s')N)r"Zget_option_dictrZ OrderedSetrgrhrKrrLÚ isinstancerrÚendswithÚdebugrrr=r_ÚaddrrAÚsorted)r#ZoptsrTrhÚpatternsÚpatternrr r r Ú check_licenseÂs@   ÿÿ  þþzsdist.check_license)r4r5r6Ú__doc__Z user_optionsZ negative_optZREADME_EXTENSIONSÚtuplerMr&r)r*r Ú staticmethodÚ contextlibÚcontextmanagerr3r<rErCrBrJrrPr]rfrqÚ __classcell__r r r>r rs,        r)r)Z distutilsrZdistutils.command.sdistZcommandrr(rr0rXruÚglobrZsetuptools.externrZ py36compatrrÚlistZ_default_revctrlrr r r r Ús