
    
_d                         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y)    )logN)chain   )metadata   )_ORIGINAL_SUBCOMMANDSc              #      K   t        j                  d      D ]!  } |j                         |       D ]  }|  # yw)z%Find all files under revision controlzsetuptools.file_finders)groupN)r   entry_pointsload)dirnameepitems      :/usr/lib/python3/dist-packages/setuptools/command/sdist.pywalk_revctrlr      sB     ##*CD BGGIg& 	DJ	s   <>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]) z.rstz.txtz.mdc              #   >   K   | ]  }d j                  |        yw)z	README{0}N)format).0exts     r   	<genexpr>zsdist.<genexpr>4   s     IK&&s+Is   c                    | j                  d       | j                  d      }|j                  | _        | j                  j                  t        j
                  j                  |j                  d             | j                          | j                         D ]  }| j                  |        | j                          t        | j                  dg       }| j                  D ]  }dd|f}||vs|j                  |        y )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RWW\\&//=IJ --/ 	'HX&	' 	 T..bA
&& 	(DR&D:%!!$'	(    c                 b    t         j                  j                  |        | j                          y N)origr   initialize_options_default_to_gztarr.   s    r   r8   zsdist.initialize_optionsI   s     

%%d+ r4   c                 <    t         j                  dk\  ry dg| _        y )N)      r   betar   gztar)sysversion_infoformatsr:   s    r   r9   zsdist._default_to_gztarN   s    33yr4   c                     | j                         5  t        j                  j                  |        ddd       y# 1 sw Y   yxY w)z%
        Workaround for #516
        N)_remove_os_linkr7   r   r*   r:   s    r   r*   zsdist.make_distributionT   s7     !!# 	/JJ((.	/ 	/ 	/s	    :Ac               #      K    G d d      } t        t        d|       }	 t        `	 d || urt	        t        d|       yy# t        $ r Y 'w xY w# || urt	        t        d|       w w xY ww)zG
        In a context, remove and restore os.link if it exists
        c                       e Zd Zy)&sdist._remove_os_link.<locals>.NoValueN)__name__
__module____qualname__ r4   r   NoValuerG   b   s    r4   rL   linkN)r+   r%   rM   	Exceptionsetattr)rL   orig_vals     r   rD   zsdist._remove_os_link[   sz     	 	 2vw/		.w&FH- '  		
 w&FH- 's8   A+A A A+	A
A+AA+A((A+c                 B    t         |           | j                          y r6   )superadd_defaults _add_defaults_build_sub_commandsr.   	__class__s    r   rS   zsdist.add_defaultsp   s    --/r4   c                     t         |           t        j                  j	                  d      r| j
                  j                  d       y y )Nzpyproject.toml)rR   _add_defaults_optionalr%   r&   isfiler#   r$   rU   s    r   rX   zsdist._add_defaults_optionalt   s7    &(77>>*+MM  !12 ,r4   c                     | j                   j                         r[| j                  d      }| j                  j	                  |j                                | j                  | j                  |             yy)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]    --/11*=HMM  !:!:!<=  !6!6x!@A 0r4   c                       j                  d      }t        |j                               t        z
  } fd|D        }d |D        } j                  j                  t        j                  |             y )Nbuildc              3   @   K   | ]  }j                  |        y wr6   )r"   )r   cr.   s     r   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s     D!**1-Ds   c              3   V   K   | ]!  }t        |d       s|j                          # yw)r^   N)hasattrr^   )r   rf   s     r   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>   s#     V!wqBT7U##%Vs   )))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511347LLD|DVtVU0078r4   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     """r4   c                 H    | j                   j                  d |D               y)zA
        Add data files as found in build_py.data_files.
        c              3   t   K   | ]0  \  }}}}|D ]$  }t         j                  j                  ||       & 2 y wr6   )r%   r&   r'   )r   _src_dir	filenamesnames        r   r   z(sdist._add_data_files.<locals>.<genexpr>   sD      
(7Ay!
  GGLL$'
'
s   68N)r#   r]   )r.   ro   s     r   r_   zsdist._add_data_files   s#     	 
,6
 	
r4   c                 l    	 t         |           y # t        $ r t        j                  d       Y y 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   s/    	?G,. 	?HH=>	?s    33c                     | j                   D ]#  }t        j                  j                  |      s# y  | j	                  ddj                  | j                         z          y )Nz,standard file not found: should have one of z, )READMESr%   r&   existsry   r'   )r.   fs     r   r(   zsdist.check_readme   sK     	Aww~~a 	 II>4<<AXXr4   c                 r   t         j                  j                  | ||       t        j                  j                  |d      }t        t        d      rFt        j                  j                  |      r't        j                  |       | j                  d|       | j                  d      j                  |       y )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; ww||Hk22v277>>$#7 IIdONN;-"":.@@Fr4   c                    t         j                  j                  | j                        syt	        j
                  | j                  d      5 }|j                         }d d d        dj                         k7  S # 1 sw Y   xY w)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   sb    ww~~dmm,WWT]]D) 	'RJ	'KRRTTT	' 	's   A77B c                    t        j                  d| j                         t        | j                  d      }|D ]S  }	 |j	                  d      }|j                         }|j                  d      s|s9| j                  j                  |       U |j                          y# t
        $ r t        j                  d|z         Y w xY w)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s#4MM  &	' 	 & =DEs   B  !CC)rH   rI   rJ   __doc__user_optionsnegative_optREADME_EXTENSIONStupler{   r3   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L0 L3I7HIIG(&!
!/ .  .&03
B9#
?GUr4   r   )r   )	distutilsr   distutils.command.sdistcommandr   r7   r%   r@   r   r   	itertoolsr   
_importlibr   rd   r   list_default_revctrlr   rK   r4   r   <module>r      s@     & & 	 
 	   ! ( ADJJ Ar4   