
    ;e=J                         	 d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d Z G d de          ZdS )    N)glob)warn)Command)dir_util)	file_util)archive_util)TextFile)FileList)log)convert_path)DistutilsTemplateErrorDistutilsOptionErrorc                     	 ddl m}  ddlm} g }|                                D ])}|                    d|z   d ||         d         f           *|                                  | |                              d           d S )Nr   )FancyGetopt)ARCHIVE_FORMATSformats=   z.List of available source distribution formats:)distutils.fancy_getoptr   distutils.archive_utilr   keysappendsort
print_help)r   r   formatsformats       ./usr/lib/python3.11/distutils/command/sdist.pyshow_formatsr      s     322222666666G!&&(( 5 5
V+T'/24 	5 	5 	5 	5LLNNNK##8: : : : :    c                       e Zd ZdZd Zg dZg dZdddefgZdd	d
Z	defgZ
dZd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"dS )#sdistz6create a source distribution (tarball, zip file, etc.)c                     	 | j         S N)metadata_checkselfs    r   checking_metadatazsdist.checking_metadata(   s    	3 ""r   ))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)pruneNzspecifically 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.)r   Nz6formats 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])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group])r)   r+   r-   r/   r1   r4   zhelp-formatsNz#list available distribution formatsr)   r+   )r*   r,   check)READMEz
README.txtz
README.rstc                     d | _         d | _        d| _        d| _        d| _        d| _        dg| _        d| _        d | _        d | _	        d| _
        d | _        d | _        d S )N   r   gztar)templatemanifestuse_defaultsr+   manifest_onlyforce_manifestr   	keep_tempdist_dirarchive_filesr#   ownergroupr$   s    r   initialize_optionszsdist.initialize_optionse   sl      
y!



r   c                     | j         d| _         | j        d| _        |                     d           t          j        | j                  }|rt          d|z            | j        	d| _        d S d S )NMANIFESTzMANIFEST.inr   zunknown archive format '%s'dist)r=   r<   ensure_string_listr   check_archive_formatsr   r   rB   )r%   
bad_formats     r   finalize_optionszsdist.finalize_options|   s    = &DM= )DM	***!7EE
 	>&/*<> > > = "DMMM ! r   c                     t                      | _        |                                 D ]}|                     |           |                                  | j        rd S |                                  d S r"   )r
   filelistget_sub_commandsrun_commandget_file_listr?   make_distribution)r%   cmd_names     r   runz	sdist.run   s     !

 --// 	' 	'HX&&&&
 	  	F 	     r   c                     	 t          dt                     | j                            d          }|                                 |                                 d S )Nzadistutils.command.sdist.check_metadata is deprecated,               use the check command insteadr7   )r   PendingDeprecationWarningdistributionget_command_objensure_finalizedrU   )r%   r7   s     r   check_metadatazsdist.check_metadata   s[     -.G	I 	I 	I!11'::   		r   c                    	 t           j                            | j                  }|s\|                                 rH|                                  | j                                         | j                                         d S |s| 	                    d| j        z             | j        
                                 | j        r|                                  |r|                                  | j        r|                                  | j                                         | j                                         |                                  d S )Nz?manifest template '%s' does not exist (using default file list))ospathisfiler<   _manifest_is_not_generatedread_manifestrO   r   remove_duplicatesr   findallr>   add_defaultsread_templater+   prune_file_listwrite_manifest)r%   template_existss     r   rR   zsdist.get_file_list   sN   	 '..77 	4#B#B#D#D 	   M   M++---F 	'II 4& ' ' ' 	 	  	!   : 	#  """'')))r   c                     	 |                                   |                                  |                                  |                                  |                                  |                                  |                                  d S r"   )_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scriptsr$   s    r   rd   zsdist.add_defaults   s    	 	$$&&&##%%%!!###%%'''   !!###""$$$$$r   c                     	 t           j                            |           sdS t           j                            |           }t           j                            |          \  }}|t          j        |          v S )NF)r]   r^   existsabspathsplitlistdir)fspathrs   	directoryfilenames       r   _cs_path_existszsdist._cs_path_exists   sd    	 w~~f%% 	5'//&)) gmmG44	82:i0000r   c                    | j         | j        j        g}|D ]}t          |t                    rj|}d}|D ]5}|                     |          rd}| j                            |            n6|s+|                     dd	                    |          z              |                     |          r| j                            |           |                     d|z             d S )NFTz,standard file not found: should have one of z, zstandard file '%s' not found)
READMESrX   script_name
isinstancetuplery   rO   r   r   join)r%   	standardsfnaltsgot_its        r   rj   zsdist._add_defaults_standards   s   \4#4#@A	 	C 	CB"e$$ C  B++B// !%,,R000
  /IIL"iioo. / / / ''++ CM((,,,,II<rABBBB#	C 	Cr   c                     ddg}|D ]H}t          t          j        j        t	          |                    }| j                            |           Id S )Nztest/test*.pyz	setup.cfg)filterr]   r^   r_   r   rO   extend)r%   optionalpatternfiless       r   rk   zsdist._add_defaults_optional  sW    #[1 	( 	(G27>4==99EM  ''''	( 	(r   c                 R   |                      d          }| j                                        r,| j                            |                                           |j        D ]D\  }}}}|D ]:}| j                            t          j	        
                    ||                     ;Ed S )Nbuild_py)get_finalized_commandrX   has_pure_modulesrO   r   get_source_files
data_filesr   r]   r^   r   )r%   r   pkgsrc_dir	build_dir	filenamesrx   s          r   rl   zsdist._add_defaults_python  s     --j99 --// 	>M  !:!:!<!<=== 3;2E 	F 	F.C)Y% F F$$RW\\'8%D%DEEEEF	F 	Fr   c                    | j                                         r| j         j        D ]}t          |t                    rIt          |          }t          j                            |          r| j	        
                    |           `|\  }}|D ]J}t          |          }t          j                            |          r| j	        
                    |           Kd S d S r"   )rX   has_data_filesr   r}   strr   r]   r^   r_   rO   r   )r%   itemdirnamer   r0   s        r   rm   zsdist._add_defaults_data_files$  s    ++-- 	4)4 4 4dC(( 4'--Dw~~d++ 3,,T222 *.&GY& 4 4(OO7>>!,, 4 M003334	4 	44 4r   c                     | j                                         rC|                     d          }| j                            |                                           d S d S )N	build_ext)rX   has_ext_modulesr   rO   r   r   )r%   r   s     r   rn   zsdist._add_defaults_ext5  s^    ,,.. 	?22;??IM  !;!;!=!=>>>>>	? 	?r   c                     | j                                         rC|                     d          }| j                            |                                           d S d S )N
build_clib)rX   has_c_librariesr   rO   r   r   )r%   r   s     r   ro   zsdist._add_defaults_c_libs:  sa    ,,.. 	@33LAAJM  !<!<!>!>?????	@ 	@r   c                     | j                                         rC|                     d          }| j                            |                                           d S d S )Nbuild_scripts)rX   has_scriptsr   rO   r   r   )r%   r   s     r   rp   zsdist._add_defaults_scripts?  sa    ((** 	C 66GGMM  !?!?!A!ABBBBB	C 	Cr   c           	         	 t          j        d| j                   t          | j        dddddd          }	 	 |                                }|n`	 | j                            |           nC# t          t          f$ r/}| 	                    d|j
        |j        |fz             Y d }~nd }~ww xY ww	 |                                 d S # |                                 w xY w)Nzreading manifest template '%s'r:   )strip_commentsskip_blanks
join_lines	lstrip_ws	rstrip_wscollapse_joinTz%s, line %d: %s)r   infor<   r	   readlinerO   process_template_liner   
ValueErrorr   rx   current_lineclose)r%   r<   linemsgs       r   re   zsdist.read_templateD  s-   	
 	14=AAADM!'(A*+- - -	9((**<9M77==== /
; 9 9 9II/83D3;3H3638 8 9 9 9 9 9 9 9 999  NNHNNs5   C A, +C ,B,=%B'"C 'B,,C Cc                    	 |                      d          }| j                                        }| j                            d |j                   | j                            d |           t          j        dk    rd}nd}g d}d|dd	                    |          d|d
}| j                            |d           d S )Nbuild)prefixwin32z/|\\/)RCSCVSz\.svnz\.hgz\.gitz\.bzr_darcsz(^|z)(|z).*r:   )is_regex)	r   rX   get_fullnamerO   exclude_pattern
build_basesysplatformr   )r%   r   base_dirsepsvcs_dirsvcs_ptrns         r   rf   zsdist.prune_file_lista  s    	 **733$1133%%d53C%DDD%%d8%<<<<7""DDD  *.$$0B0B0B0BDDDI%%h%;;;;;r   c                     	 |                                  rt          j        d| j        z             d S | j        j        d d          }|                    dd           |                     t          j	        | j        |fd| j        z             d S )Nz5not writing to manually maintained manifest file '%s'r   z*# file GENERATED by distutils, do NOT editzwriting manifest file '%s')
r`   r   r   r=   rO   r   insertexecuter   
write_file)r%   contents     r   rg   zsdist.write_manifesty  s    	 **,, 	H *,0M: ; ; ;F-%aaa(qFGGGY)DM7+C1DMA	C 	C 	C 	C 	Cr   c                    t           j                            | j                  sdS t	          | j                  }	 |                                }|                                 n# |                                 w xY w|dk    S )NFz+# file GENERATED by distutils, do NOT edit
)r]   r^   r_   r=   openr   r   )r%   fp
first_lines      r   r`   z sdist._manifest_is_not_generated  sm    w~~dm,, 	5$-  	JHHJJJJBHHJJJJKKKs   A% %A;c                 .   	 t          j        d| j                   t          | j                  5 }|D ]H}|                                }|                    d          s|s.| j                            |           I	 d d d            d S # 1 swxY w Y   d S )Nzreading manifest file '%s'#)r   r   r=   r   strip
startswithrO   r   )r%   r=   r   s      r   ra   zsdist.read_manifest  s    	 	-t}===$-   	+H  + +zz||??3'' t $$T****+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AB

BBc                 *   	 |                      |           t          j        ||| j                   t	          t
          d          rd}d|z  }nd }d|z  }|st          j        d           nt          j        |           |D ]o}t
          j	        
                    |          st          j        d|           7t
          j	                            ||          }|                     |||           p| j        j                            |           d S )	Ndry_runlinkhardzmaking hard links in %s...zcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r   )mkpathr   create_treer   hasattrr]   r   r   r   r^   r_   r   	copy_filerX   metadatawrite_pkg_info)r%   r   r   r   r   filedests          r   make_release_treezsdist.make_release_tree  s   	 	HXudlCCCC 2v 	6D.9CCD*X5C 	H@AAAAHSMMM 	6 	6D7>>$'' 6>EEEEw||Hd33tT5555"11(;;;;;r   c                    	 | j                                         }t          j                            | j        |          }|                     || j        j                   g }d| j	        v rJ| j	        
                    | j	                            | j	                            d                               | j	        D ]]}|                     |||| j        | j                  }|
                    |           | j         j        
                    dd|f           ^|| _        | j        st'          j        || j                   d S d S )Ntar)r   rD   rE   r     r   )rX   r   r]   r^   r   rB   r   rO   r   r   r   popindexmake_archiverD   rE   
dist_filesrC   rA   r   remove_treer   )r%   r   	base_namerC   fmtr   s         r   rS   zsdist.make_distribution  sJ   	 $1133GLL99	x)<===DL  L 0 01C1CE1J1J K KLLL< 	E 	EC$$Yh+/:TZ % I ID  &&&(//"d0CDDDD*~ 	A 4<@@@@@@	A 	Ar   c                     	 | j         S r"   )rC   r$   s    r   get_archive_fileszsdist.get_archive_files  s    	 !!r   )#__name__
__module____qualname__descriptionr&   user_optionsboolean_optionsr   help_optionsnegative_optsub_commandsr{   rF   rM   rU   r[   rR   rd   staticmethodry   rj   rk   rl   rm   rn   ro   rp   re   rf   rg   r`   ra   r   rS   r    r   r   r    r    $   s       JK# # #%
 %
 %
LN6 6 6O
 
	.	>
L
 $2 '* *L /01L4G  .# # # ! ! !,  & & &P% % %, 1 1 \1 C C C*( ( (F F F 4 4 4"? ? ?
@ @ @
C C C
  :< < <0C C C
L 
L 
L+ + +(< (< (<TA A A<" " " " "r   r    )r]   r   r   warningsr   distutils.corer   	distutilsr   r   r   distutils.text_filer	   distutils.filelistr
   r   distutils.utilr   distutils.errorsr   r   r   r    r   r   r   <module>r      s8  L 
			 



             " " " " " "             " " " " " " ( ( ( ( ( ( ' ' ' ' ' '       ' ' ' ' ' ' I I I I I I I I: : :J" J" J" J" J"G J" J" J" J" J"r   