o !Qçd=Jã@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ÚDistutilsOptionErrorcCsb ddlm}ddlm}g}| ¡D]}| d|d||df¡q| ¡||ƒ d¡dS)Nr)Ú FancyGetopt)ÚARCHIVE_FORMATSúformats=éz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrÚkeysÚappendÚsortZ print_help)rrÚformatsÚformat©rú>/opt/alt/python310/lib64/python3.10/distutils/command/sdist.pyÚ show_formatss     ÿÿrc@seZdZdZdd„Zgd¢Zgd¢ZdddefgZd d d œZ d efgZ d Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zedd„ƒZdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Z d6d7„Z!d8d9„Z"dS):Úsdistz6create a source distribution (tarball, zip file, etc.)cCó |jS©N)Úmetadata_check©ÚselfrrrÚchecking_metadata(ózsdist.checking_metadata))z template=Útz5name of manifest template file [default: MANIFEST.in])z manifest=Úmz)name of manifest file [default: MANIFEST])ú use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults])ú 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])úno-pruneNz$don't automatically exclude anything)ú manifest-onlyÚozEjust regenerate the manifest and then stop (implies --force-manifest))úforce-manifestÚfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)rNz6formats for source distribution (comma-separated list))ú 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])úmetadata-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])r$r&r(r*r,r/z help-formatsNz#list available distribution formatsr$r&)r%r'Ú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ÚgrouprrrrÚinitialize_optionses zsdist.initialize_optionscCs^|jdurd|_|jdurd|_| d¡t |j¡}|r#td|ƒ‚|jdur-d|_dSdS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r5r4Zensure_string_listrZcheck_archive_formatsrr r9)rZ bad_formatrrrÚfinalize_options|s    ÿ  ÿzsdist.finalize_optionscCs>tƒ|_| ¡D]}| |¡q| ¡|jrdS| ¡dSr)r ÚfilelistZget_sub_commandsZ run_commandÚ get_file_listr7Úmake_distribution)rZcmd_namerrrÚrunŒs   z sdist.runcCs, tdtƒ|j d¡}| ¡| ¡dS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr2)rÚPendingDeprecationWarningÚ distributionZget_command_objZensure_finalizedrB)rr2rrrÚcheck_metadata¢sÿ  zsdist.check_metadatacCs¢ tj |j¡}|s| ¡r| ¡|j ¡|j ¡dS|s(|  d|j¡|j  ¡|j r4|  ¡|r:|  ¡|jrA| ¡|j ¡|j ¡| ¡dS)Nz?manifest template '%s' does not exist (using default file list))ÚosÚpathÚisfiler4Ú_manifest_is_not_generatedÚ read_manifestr?rZremove_duplicatesrÚfindallr6Ú add_defaultsÚ read_templater&Úprune_file_listÚwrite_manifest)rZtemplate_existsrrrr@ªs*   þ    zsdist.get_file_listcCs> | ¡| ¡| ¡| ¡| ¡| ¡| ¡dSr)Ú_add_defaults_standardsÚ_add_defaults_optionalÚ_add_defaults_pythonÚ_add_defaults_data_filesÚ_add_defaults_extÚ_add_defaults_c_libsÚ_add_defaults_scriptsrrrrrLÒs  zsdist.add_defaultscCs< tj |¡s dStj |¡}tj |¡\}}|t |¡vS)NF)rFrGÚexistsÚabspathÚsplitÚlistdir)ÚfspathrXZ directoryÚfilenamerrrÚ_cs_path_existsès   zsdist._cs_path_existscCs–|j|jjg}|D]?}t|tƒr5|}d}|D]}| |¡r'd}|j |¡nq|s4| dd  |¡¡q | |¡rA|j |¡q | d|¡q dS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) ÚREADMESrDZ script_nameÚ isinstanceÚtupler]r?rrÚjoin)rZ standardsÚfnZaltsZgot_itrrrrPùs(   ýÿ€ ïzsdist._add_defaults_standardscCs4ddg}|D]}ttjjt|ƒƒ}|j |¡qdS)Nz test/test*.pyz setup.cfg)ÚfilterrFrGrHrr?Úextend)rZoptionalÚpatternÚfilesrrrrQs þzsdist._add_defaults_optionalcCs\| d¡}|j ¡r|j | ¡¡|jD]\}}}}|D] }|j tj   ||¡¡qqdS)NÚbuild_py) Úget_finalized_commandrDZhas_pure_modulesr?rdÚget_source_filesÚ data_filesrrFrGra)rrgZpkgZsrc_dirZ build_dirÚ filenamesr\rrrrRs  ÿÿzsdist._add_defaults_pythoncCs~|j ¡r;|jjD]3}t|tƒr!t|ƒ}tj |¡r |j   |¡q |\}}|D]}t|ƒ}tj |¡r9|j   |¡q'q dSdSr) rDZhas_data_filesrjr_Ústrr rFrGrHr?r)rÚitemÚdirnamerkr+rrrrS$s     €  €ýözsdist._add_defaults_data_filescCó,|j ¡r| d¡}|j | ¡¡dSdS)NÚ build_ext)rDZhas_ext_modulesrhr?rdri)rrprrrrT5ó  þzsdist._add_defaults_extcCro)NÚ build_clib)rDZhas_c_librariesrhr?rdri)rrrrrrrU:rqzsdist._add_defaults_c_libscCro)NÚ build_scripts)rDZ has_scriptsrhr?rdri)rrsrrrrV?rqzsdist._add_defaults_scriptsc Csª t d|j¡t|jddddddd}z; | ¡}|durn*z|j |¡Wn ttfyG}z|  d|j |j |f¡WYd}~nd}~wwqW|  ¡dS|  ¡w)Nzreading manifest template '%s'r3)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsZ collapse_joinTz%s, line %d: %s) r Úinfor4rÚreadliner?Zprocess_template_liner Ú ValueErrorrr\Z current_lineÚclose)rr4ÚlineÚmsgrrrrMDs. þ þ€ÿö zsdist.read_templatecCs| | d¡}|j ¡}|jjd|jd|jjd|dtjdkr$d}nd}gd¢}d|d |¡|f}|jj|d d dS) NÚbuild)ÚprefixZwin32z/|\\ú/)ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*ú|r3)Zis_regex) rhrDÚ get_fullnamer?Zexclude_patternZ build_baseÚsysÚplatformra)rrzÚbase_dirZsepsZvcs_dirsZvcs_ptrnrrrrNas   zsdist.prune_file_listcCsZ | ¡rt d|j¡dS|jjdd…}| dd¡| tj |j|fd|j¡dS)Nz5not writing to manually maintained manifest file '%s'rz*# file GENERATED by distutils, do NOT editzwriting manifest file '%s') rIr rtr5r?rfÚinsertZexecuterZ write_file)rZcontentrrrrOysÿ ÿzsdist.write_manifestcCsBtj |j¡s dSt|jƒ}z | ¡}W| ¡|dkS| ¡w)NFz+# file GENERATED by distutils, do NOT edit )rFrGrHr5Úopenrurw)rÚfpZ first_linerrrrIˆs   ÿz sdist._manifest_is_not_generatedcCsn t d|j¡t|jƒ }|D]}| ¡}| d¡s|sq|j |¡qWdƒdS1s0wYdS)Nzreading manifest file '%s'ú#)r rtr5rƒÚstripÚ startswithr?r)rr5rxrrrrJ”s û"ÿzsdist.read_manifestcCs° | |¡tj|||jdttdƒrd}d|}nd}d|}|s)t d¡nt |¡|D]}tj   |¡s?t d|¡q0tj   ||¡}|j |||dq0|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‰ÚhasattrrFr rrtrGrHraZ copy_filerDZmetadataZwrite_pkg_info)rrrfrŠryÚfileÚdestrrrÚmake_release_tree¢s"      zsdist.make_release_treecCs¼ |j ¡}tj |j|¡}| ||jj¡g}d|j vr+|j   |j   |j   d¡¡¡|j D]}|j ||||j|jd}|  |¡|jj  dd|f¡q.||_|js\tj||jddSdS)NZtar)rr;r<rÚrˆ)rDr~rFrGrar9rŽr?rfrrÚpopÚindexZ make_archiver;r<Z dist_filesr:r8rZ remove_treer‰)rrZ base_namer:ZfmtrŒrrrrAÌs"    ÿ ÿzsdist.make_distributioncCrr)r:rrrrÚget_archive_filesêr!zsdist.get_archive_files)#Ú__name__Ú __module__Ú __qualname__Ú descriptionr Z user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsr^r=r>rBrEr@rLÚ staticmethodr]rPrQrRrSrTrUrVrMrNrOrIrJrŽrAr’rrrrr$sJ'ÿÿÿ (  * r)rFrrÚwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrÚs