
      e                         d dl mZ d dlmc mZ d dlZd dlZd dlZd dl	Z	d dl
mZ ddlmZ ddlmZ eZdd	Z G d
 dej                  ZdS )    )logN)chain   )metadata   )_ORIGINAL_SUBCOMMANDS c              #      K   t          j        d          D ]&} |                                |           D ]}|V  'dS )z%Find all files under revision controlzsetuptools.file_finders)groupN)r   entry_pointsload)dirnameepitems      8lib/python3.11/site-packages/setuptools/command/sdist.pywalk_revctrlr      s_      #*CDDD  BGGIIg&& 	 	DJJJJ	     c                        e Zd ZdZg dZi Zg dZ ed eD                       Zd Z	d Z
d Zd Zeej        d	                         Z fd
Z fdZd Zd Zd Zd Z fdZd Zd Zd Zd Z xZS )sdistz=Smart sdist that finds anything supported by revision control))zformats=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])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	   z.rstz.txtz.mdc              #   @   K   | ]}d                      |          V  dS )z	README{0}N)format).0exts     r   	<genexpr>zsdist.<genexpr>4   s0      IIK&&s++IIIIIIr   c                    |                      d           |                     d          }|j        | _        | j                            t          j                            |j        d                     |                                  | 	                                D ]}|                      |           | 
                                 t          | j        dg           }| j        D ] }dd|f}||vr|                    |           !d S )Negg_infozSOURCES.txt
dist_filesr   r	   )run_commandget_finalized_commandfilelistappendospathjoinr    check_readmeget_sub_commandsmake_distributiongetattrdistributionarchive_files)selfei_cmdcmd_namer!   filedatas         r   runz	sdist.run6   s   $$$++J77RW\\&/=IIJJJ --// 	' 	'HX&&&&   T.bAA
& 	( 	(DR&D:%%!!$'''	( 	(r   c                 l    t           j                            |            |                                  d S N)origr   initialize_options_default_to_gztarr/   s    r   r8   zsdist.initialize_optionsI   s0    
%%d+++     r   c                 :    t           j        dk    rd S dg| _        d S )N)      r   betar   gztar)sysversion_infoformatsr:   s    r   r9   zsdist._default_to_gztarN   s#    333Fyr   c                     |                                  5  t          j                            |            ddd           dS # 1 swxY w Y   dS )z%
        Workaround for #516
        N)_remove_os_linkr7   r   r+   r:   s    r   r+   zsdist.make_distributionT   s     !!## 	/ 	/J((...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s    AA	Ac               #     K    G d d          } t          t          d|           }	 t          `n# t          $ r Y nw xY w	 dV  || urt	          t          d|           dS dS # || urt	          t          d|           w w xY w)zG
        In a context, remove and restore os.link if it exists
        c                       e Zd ZdS )&sdist._remove_os_link.<locals>.NoValueN)__name__
__module____qualname__ r   r   NoValuerG   b   s        Dr   rL   linkN)r,   r&   rM   	Exceptionsetattr)rL   orig_vals     r   rD   zsdist._remove_os_link[   s      	 	 	 	 	 	 	 	 2vw//	 	 	 	D		.EEEw&&FH----- '&xw&&FH---- 's   / 
<< A" "A?c                 p    t                                                       |                                  d S r6   )superadd_defaults _add_defaults_build_sub_commandsr/   	__class__s    r   rS   zsdist.add_defaultsp   s1    --/////r   c                     t                                                       t          j                            d          r| j                            d           d S d S )Nzpyproject.toml)rR   _add_defaults_optionalr&   r'   isfiler$   r%   rU   s    r   rX   zsdist._add_defaults_optionalt   sW    &&(((7>>*++ 	3M  !122222	3 	3r   c                    | j                                         rk|                     d          }| j                            |                                           |                     |                     |                     dS dS )zgetting python filesbuild_pyN)r-   has_pure_modulesr#   r$   extendget_source_files_add_data_files_safe_data_filesr/   r[   s     r   _add_defaults_pythonzsdist._add_defaults_pythony   s    --// 	B11*==HM  !:!:!<!<===  !6!6x!@!@AAAAA	B 	Br   c                                           d          }t          |                                          t          z
  } fd|D             }d |D             } j                            t          j        |                     d S )Nbuildc              3   B   K   | ]}                     |          V  d S r6   )r#   )r   cr/   s     r   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s1      DD!**1--DDDDDDr   c              3   ^   K   | ](}t          |d           |                                V  )dS )r^   N)hasattrr^   )r   rf   s     r   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s>      VV!wqBT7U7UV##%%VVVVVVr   )r#   setr*   r   r$   r]   r   from_iterable)r/   rd   missing_cmdscmdsfiless   `    r   rT   z&sdist._add_defaults_build_sub_commands   s    **73351133447LLDDDD|DDDVVtVVVU07788888r   c                     |j         S )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_filesra   s     r   r`   zsdist._safe_data_files   s     ""r   c                 N    | j                             d |D                        dS )zA
        Add data files as found in build_py.data_files.
        c              3   j   K   | ].\  }}}}|D ]$}t           j                            ||          V  %/d S r6   )r&   r'   r(   )r   _src_dir	filenamesnames        r   r   z(sdist._add_data_files.<locals>.<genexpr>   se       
 
(7Ay!
 
  GLL$''
 
 
 
 
 
 
r   N)r$   r]   )r/   ro   s     r   r_   zsdist._add_data_files   sD     	 
 
,6
 
 
 	
 	
 	
 	
 	
r   c                     	 t                                                       d S # t          $ r t          j        d           Y d S w xY w)Nz&data_files contains unexpected objects)rR   _add_defaults_data_files	TypeErrorr   warnrU   s    r   rw   zsdist._add_defaults_data_files   sY    	?GG,,..... 	? 	? 	?H=>>>>>>	?s    % AAc                     | j         D ]$}t          j                            |          r d S %|                     dd                    | j                   z              d S )Nz,standard file not found: should have one of z, )READMESr&   r'   existsry   r(   )r/   fs     r   r)   zsdist.check_readme   sm     	 	Aw~~a    II>4<AXAXX    r   c                    t           j                            | ||           t          j                            |d          }t          t          d          rIt          j                            |          r*t          j        |           | 	                    d|           | 
                    d                              |           d S )Nz	setup.cfgrM   r    )r7   r   make_release_treer&   r'   r(   rh   r|   unlink	copy_filer#   save_version_info)r/   base_dirrm   dests       r   r   zsdist.make_release_tree   s    
$$T8U;;; w||Hk222v 	.27>>$#7#7 	. IdOOONN;---"":..@@FFFFFr   c                 
   t           j                            | j                  sdS t	          j        | j        d          5 }|                                }d d d            n# 1 swxY w Y   |d                                k    S )NFrbz+# file GENERATED by distutils, do NOT edit
)r&   r'   rY   manifestioopenreadlineencode)r/   fp
first_lines      r   _manifest_is_not_generatedz sdist._manifest_is_not_generated   s    w~~dm,, 	5WT]D)) 	'RJ	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'KRRTTTTs   A""A&)A&c                    t          j        d| j                   t          | j        d          }|D ]}	 |                    d          }n'# t
          $ r t          j        d|z             Y <w xY w|                                }|                    d          s|sl| j	        
                    |           |                                 dS )zRead 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.
        zreading manifest file '%s'r   zUTF-8z"%r not UTF-8 decodable -- skipping#N)r   infor   r   decodeUnicodeDecodeErrorry   strip
startswithr$   r%   close)r/   r   lines      r   read_manifestzsdist.read_manifest   s    
 	-t}===t,, 	' 	'D{{7++%   =DEEE ::<<Ds## 4 M  &&&&s   A!A/.A/)rH   rI   rJ   __doc__user_optionsnegative_optREADME_EXTENSIONStupler{   r4   r8   r9   r+   staticmethod
contextlibcontextmanagerrD   rS   rX   rb   rT   r`   r_   rw   r)   r   r   r   __classcell__)rV   s   @r   r   r      s       GG  L0 L333eII7HIIIIIG( ( (&! ! !
! ! !/ / / . .  \.&0 0 0 0 03 3 3 3 3
B B B9 9 9# # #
 
 
? ? ? ? ?  G G GU U U      r   r   )r	   )	distutilsr   distutils.command.sdistcommandr   r7   r&   r@   r   r   	itertoolsr   
_importlibr   rd   r   list_default_revctrlr   rK   r   r   <module>r      s          & & & & & & & & & 				 



 				           ! ! ! ! ! ! ( ( ( ( ( (    A A A A ADJ A A A A Ar   