o
    ^+)h                     @   s   d dl mZ d dlm  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 ddlmZ eZdd
dZG dd deejZdS )    )logN)chain   )sdist_add_defaults   )metadata)_ORIGINAL_SUBCOMMANDS c                 c   s0    t jddD ]}| | D ]}|V  qqdS )z%Find all files under revision controlzsetuptools.file_finders)groupN)r   entry_pointsload)dirnameepitem r   WC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\site-packages\setuptools/command/sdist.pywalk_revctrl   s   r   c                       s   e Zd ZdZg dZi Zg dZedd eD Zdd Z	dd	 Z
d
d Zdd Zeejdd Z fddZ fddZdd Zdd Zdd Zdd Z fddZdd Zd d! Zd"d# Zd$d% Z  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                 c   s    | ]}d  |V  qdS )z	README{0}N)format).0extr   r   r   	<genexpr>-       zsdist.<genexpr>c                 C   s   |  d | d}|j| _| jtj|jd |   | 	 D ]}|  | q"| 
  t| jdg }| jD ]}dd|f}||vrH|| q8d 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distributionZarchive_files)selfZei_cmdcmd_namer   filedatar   r   r   run/   s   




z	sdist.runc                 C   s   t j|  |   d S N)origr   initialize_options_default_to_gztarr+   r   r   r   r2   B   s   zsdist.initialize_optionsc                 C   s   t jdkrd S dg| _d S )N)      r   betar   gztar)sysversion_infoformatsr4   r   r   r   r3   G   s   
zsdist._default_to_gztarc                 C   s:   |    tj|  W d   dS 1 sw   Y  dS )z%
        Workaround for #516
        N)_remove_os_linkr1   r   r(   r4   r   r   r   r(   M   s   
"zsdist.make_distributionc               
   c   sv    G dd d} t td| }zt`W n	 ty   Y nw zdV  W || ur-ttd| dS dS || ur:ttd| w w )zG
        In a context, remove and restore os.link if it exists
        c                   @   s   e Zd ZdS )z&sdist._remove_os_link.<locals>.NoValueN)__name__
__module____qualname__r   r   r   r   NoValue[   s    r@   linkN)r)   r#   rA   	Exceptionsetattr)r@   Zorig_valr   r   r   r<   T   s   zsdist._remove_os_linkc                    s   t    |   d S r0   )superadd_defaults _add_defaults_build_sub_commandsr4   	__class__r   r   rE   i   s   
zsdist.add_defaultsc                    s*   t    tjdr| jd d S d S )Nzpyproject.toml)rD   _add_defaults_optionalr#   r$   isfiler!   r"   r4   rG   r   r   rI   m   s   
zsdist._add_defaults_optionalc                 C   s<   | j  r| d}| j|  | | | dS dS )zgetting python filesbuild_pyN)r*   Zhas_pure_modulesr    r!   extendget_source_files_add_data_files_safe_data_filesr+   rK   r   r   r   _add_defaults_pythonr   s
   

zsdist._add_defaults_pythonc                    sP     d}t| t } fdd|D }dd |D } jt| d S )Nbuildc                 3   s    | ]}  |V  qd S r0   )r    r   cr4   r   r   r   }   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>c                 s   s"    | ]}t |d r| V  qdS )rM   N)hasattrrM   rS   r   r   r   r   ~   s     )r    setr'   r   r!   rL   r   from_iterable)r+   rR   Zmissing_cmdsZcmdsfilesr   r4   r   rF   y   s
   
z&sdist._add_defaults_build_sub_commandsc                 C   s   |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_filesrP   r   r   r   rO      s   zsdist._safe_data_filesc                 C   s   | j dd |D  dS )zA
        Add data files as found in build_py.data_files.
        c                 s   s0    | ]\}}}}|D ]
}t j||V  q
qd S r0   )r#   r$   r%   )r   _src_dir	filenamesnamer   r   r   r      s    
z(sdist._add_data_files.<locals>.<genexpr>N)r!   rL   )r+   rY   r   r   r   rN      s   zsdist._add_data_filesc                    s0   zt    W d S  ty   td Y d S w )Nz&data_files contains unexpected objects)rD   _add_defaults_data_files	TypeErrorr   warnr4   rG   r   r   r^      s
   zsdist._add_defaults_data_filesc                 C   s8   | j D ]}tj|r d S q| dd| j   d S )Nz,standard file not found: should have one of z, )READMESr#   r$   existsr`   r%   )r+   fr   r   r   r&      s   

zsdist.check_readmec                 C   s^   t j| || tj|d}ttdr%tj|r%t| | 	d| | 
d| d S )Nz	setup.cfgrA   r   )r1   r   make_release_treer#   r$   r%   rU   rb   unlink	copy_filer    Zsave_version_info)r+   base_dirrX   destr   r   r   rd      s   
zsdist.make_release_treec                 C   sT   t j| js	dS t| jd}| }W d    n1 sw   Y  |d kS )NFrbz+# file GENERATED by distutils, do NOT edit
)r#   r$   rJ   manifestioopenreadlineencode)r+   fp
first_liner   r   r   _manifest_is_not_generated   s   
z sdist._manifest_is_not_generatedc              	   C   s   t d| j t| jd}|D ],}z|d}W n ty(   t d|  Y qw | }|ds4|s5q| j	
| q|  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'ri   zUTF-8z"%r not UTF-8 decodable -- skipping#N)r   inforj   rl   decodeUnicodeDecodeErrorr`   strip
startswithr!   r"   close)r+   rj   liner   r   r   read_manifest   s   zsdist.read_manifest)r=   r>   r?   __doc__Zuser_optionsZnegative_optZREADME_EXTENSIONStuplera   r/   r2   r3   r(   staticmethod
contextlibcontextmanagerr<   rE   rI   rQ   rF   rO   rN   r^   r&   rd   rq   rz   __classcell__r   r   rG   r   r      s0    


r   )r	   )	distutilsr   Zdistutils.command.sdistcommandr   r1   r#   r9   rk   r~   	itertoolsr   Z
py36compatr   Z
_importlibr   rR   r   listZ_default_revctrlr   r   r   r   r   <module>   s    
