B Ìtè#Ñ<9ã@s´ddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddl m Z dd l mZdd lmZdd lmZdd lmZmZd d„ZGdd„deƒZdS)éN)Úglob)Úwarn)ÚCommand)Údir_util)Ú file_util)Ú archive_util)ÚTextFile)ÚFileList)Úlog)Ú convert_path)ÚDistutilsTemplateErrorÚDistutilsOptionErrorcCsdddlm}ddlm}g}x,| ¡D] }| d|d||df¡q&W| ¡||ƒ d¡dS)Nr)Ú FancyGetopt)ÚARCHIVE_FORMATSzformats=éz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrÚkeysÚappendÚsortÚ print_help)rrÚformatsÚformat©rú:/opt/alt/python37/lib/python3.7/distutils/command/sdist.pyÚ show_formatss   rc@s"eZdZdZdd„Zdddddd d d d d ddddgZddddddgZdddefgZdddœZ defgZ dZ dd„Z d d!„Z d"d#„Zd$d%„Zd&d'„Zd(d)„Zed*d+„ƒZd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Zd@dA„ZdBdC„ZdDdE„Z dFdG„Z!dHdI„Z"dS)JÚsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)N)Úmetadata_check)ÚselfrrrÚchecking_metadata(szsdist.checking_metadata)z template=Útz5name of manifest template file [default: MANIFEST.in])z manifest=Úmz)name of manifest file [default: MANIFEST])z use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults])z no-defaultsNz"don't include the default file set)ÚpruneNz‰specifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])zno-pruneNz$don't automatically exclude anything)z manifest-onlyÚozEjust regenerate the manifest and then stop (implies --force-manifest))zforce-manifestÚfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)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])zmetadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])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]z use-defaultsr z manifest-onlyzforce-manifestz keep-tempzmetadata-checkz help-formatsNz#list available distribution formats)z no-defaultszno-pruneÚcheck)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NérZgztar) ÚtemplateÚmanifestÚ use_defaultsr Ú manifest_onlyZforce_manifestrÚ keep_tempÚdist_dirÚ archive_filesrÚownerÚgroup)rrrrÚinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_| d¡t |j¡}|rFtd|ƒ‚|jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r*r)Zensure_string_listrZcheck_archive_formatsrr r.)rZ bad_formatrrrÚfinalize_options|s      zsdist.finalize_optionscCsBtƒ|_x| ¡D]}| |¡qW| ¡|jr6dS| ¡dS)N)r ÚfilelistZget_sub_commandsZ run_commandÚ get_file_listr,Úmake_distribution)rZcmd_namerrrÚrunŒsz sdist.runcCs*tdtƒ|j d¡}| ¡| ¡dS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr')rÚPendingDeprecationWarningÚ distributionZget_command_objZensure_finalizedr7)rr'rrrÚcheck_metadata¢s  zsdist.check_metadatacCs tj |j¡}|s:| ¡r:| ¡|j ¡|j ¡dS|sN|  d|j¡|j  ¡|j rf|  ¡|rr|  ¡|jr€| ¡|j ¡|j ¡| ¡dS)Nz?manifest template '%s' does not exist (using default file list))ÚosÚpathÚisfiler)Ú_manifest_is_not_generatedÚ read_manifestr4rZremove_duplicatesrÚfindallr+Ú add_defaultsÚ read_templater Úprune_file_listÚwrite_manifest)rZtemplate_existsrrrr5ªs&       zsdist.get_file_listcCs<| ¡| ¡| ¡| ¡| ¡| ¡| ¡dS)N)Ú_add_defaults_standardsÚ_add_defaults_optionalÚ_add_defaults_pythonÚ_add_defaults_data_filesÚ_add_defaults_extÚ_add_defaults_c_libsÚ_add_defaults_scripts)rrrrrAÒszsdist.add_defaultscCs:tj |¡sdStj |¡}tj |¡\}}|t |¡kS)NF)r;r<ÚexistsÚabspathÚsplitÚlistdir)ÚfspathrMZ directoryÚfilenamerrrÚ_cs_path_existsès  zsdist._cs_path_existscCsœ|j|jjg}xˆ|D]€}t|tƒrn|}d}x(|D] }| |¡r0d}|j |¡Pq0W|s”| dd  |¡¡q| |¡r†|j |¡q| d|¡qWdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) ÚREADMESr9Z script_nameÚ isinstanceÚtuplerRr4rrÚjoin)rZ standardsÚfnZaltsZgot_itrrrrEùs       zsdist._add_defaults_standardscCs8ddg}x*|D]"}ttjjt|ƒƒ}|j |¡qWdS)Nz test/test*.pyz setup.cfg)Úfilterr;r<r=rr4Úextend)rZoptionalÚpatternÚfilesrrrrFs zsdist._add_defaults_optionalcCsd| d¡}|j ¡r$|j | ¡¡x:|jD]0\}}}}x"|D]}|j tj   ||¡¡q>Wq,WdS)NÚbuild_py) Úget_finalized_commandr9Zhas_pure_modulesr4rYÚget_source_filesÚ data_filesrr;r<rV)rr\ZpkgZsrc_dirZ build_dirÚ filenamesrQrrrrGs    zsdist._add_defaults_pythoncCs‚|j ¡r~xr|jjD]f}t|tƒrDt|ƒ}tj |¡rz|j   |¡q|\}}x,|D]$}t|ƒ}tj |¡rR|j   |¡qRWqWdS)N) r9Zhas_data_filesr_rTÚstrr r;r<r=r4r)rÚitemÚdirnamer`r"rrrrH$s     zsdist._add_defaults_data_filescCs(|j ¡r$| d¡}|j | ¡¡dS)NÚ build_ext)r9Zhas_ext_modulesr]r4rYr^)rrdrrrrI5s  zsdist._add_defaults_extcCs(|j ¡r$| d¡}|j | ¡¡dS)NÚ build_clib)r9Zhas_c_librariesr]r4rYr^)rrerrrrJ:s  zsdist._add_defaults_c_libscCs(|j ¡r$| d¡}|j | ¡¡dS)NÚ build_scripts)r9Z has_scriptsr]r4rYr^)rrfrrrrK?s  zsdist._add_defaults_scriptsc Cs¢t d|j¡t|jddddddd}zlxf| ¡}|dkrr rgr*r4r[ÚinsertZexecuterZ write_file)rZcontentrrrrDys  zsdist.write_manifestcCs<tj |j¡sdSt|jƒ}z | ¡}Wd| ¡X|dkS)NFz+# file GENERATED by distutils, do NOT edit )r;r<r=r*Úopenrhrj)rÚfpZ first_linerrrr>ˆs   z sdist._manifest_is_not_generatedcCsVt d|j¡t|jƒ}x0|D](}| ¡}| d¡s|s:q|j |¡qW| ¡dS)Nzreading manifest file '%s'ú#) r rgr*rxÚstripÚ startswithr4rrj)rr*rkrrrr?”s  zsdist.read_manifestcCs²| |¡tj|||jdttdƒr4d}d|}n d}d|}|sPt d¡n t |¡xD|D]<}tj   |¡s~t d|¡q`tj   ||¡}|j |||dq`W|j j |¡dS) N)Údry_runÚlinkZhardzmaking hard links in %s...zcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r~)ZmkpathrZ create_treer}Úhasattrr;r rrgr<r=rVZ copy_filer9ZmetadataZwrite_pkg_info)rrur[r~rlÚfileÚdestrrrÚmake_release_tree£s       zsdist.make_release_treecCsº|j ¡}tj |j|¡}| ||jj¡g}d|j krT|j   |j   |j   d¡¡¡xD|j D]:}|j ||||j|jd}|  |¡|jj  dd|f¡q\W||_|js¶tj||jddS)NZtar)rur0r1rÚ)r})r9rrr;r<rVr.r‚r4r[rrÚpopÚindexZ make_archiver0r1Z dist_filesr/r-rZ remove_treer})rruZ base_namer/Zfmtr€rrrr6Ís     zsdist.make_distributioncCs|jS)N)r/)rrrrÚget_archive_filesëszsdist.get_archive_files)#Ú__name__Ú __module__Ú __qualname__Ú descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrSr2r3r7r:r5rAÚ staticmethodrRrErFrGrHrIrJrKrBrCrDr>r?r‚r6r†rrrrr$s^  (  *r)r;rsrÚwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrÚs